#!/usr/bin/env bash
set -e
# set -x # Uncomment to Debug

cd $(dirname $0)
# verify packages installed
ERROR=0
if ! command -v dpkg -l i2c-tools &> /dev/null ; then
    echo "i2c-tools could not be found"
    echo "Run 'sudo apt install i2c-tools' to fix."
    ERROR=1
fi
if ! command -v python3 &> /dev/null ; then
    echo "python3 could not be found"
    echo "Run 'sudo apt install python3' to fix."
    ERROR=1
fi
# Dep to build Pillow
if ! dpkg -l python3-dev &> /dev/null; then
    echo "python3-dev could not be found"
    echo "Run 'sudo apt install python3-dev' to fix."
    ERROR=1
fi
if ! dpkg -l libjpeg-dev &> /dev/null; then
    echo "libjpeg-dev could not be found"
    echo "Run 'sudo apt install libjpeg-dev' to fix."
    ERROR=1
fi
if ! dpkg -l libpng-dev &> /dev/null; then
    echo "libpng-dev could not be found"
    echo "Run 'sudo apt install libpng-dev' to fix."
    ERROR=1
fi
# Dep to build Pollow
if ! python3 -m venv --help &> /dev/null ; then
    echo "venv could not be found"
    echo "Run 'sudo apt install python3-venv' to fix."
    ERROR=1
fi
if [ $ERROR = 1 ] ; then
  echo
  echo "Fix errors and re-run ./start.sh"
  exit 1
fi

if ! i2cdetect -y 1 &> /dev/null ; then
    echo "i2cdetect -y 1 did not find a screen."
    exit 2
fi
if ! test -e venv; then
  echo "Creating python venv for OLED Screen"
  python3 -m venv venv
  echo "Activating venv"
  source venv/bin/activate
  echo "Installing requirements.txt"
  pip install -r requirements.txt
  git rev-parse HEAD > current
fi

source venv/bin/activate

# Detect if someone updates - we need to re-run pip install.
if ! test -e current; then
  git rev-parse > current
else
  if [ "$(cat current)" != "$(git rev-parse HEAD)" ]; then
      echo "New version detected, updating requirements.txt"
      echo " This may take some time..."
      pip install wheel
      pip install -r requirements.txt
      git rev-parse HEAD > current
  fi
fi

echo "Starting OLED Screen..."
python3 rascsi_oled_monitor.py
