72 lines
2.8 KiB
Bash
Executable file
72 lines
2.8 KiB
Bash
Executable file
#!/bin/bash
|
|
log="logger -t update.sh -s "
|
|
|
|
function update(){
|
|
sudo killall -15 raspimjpeg
|
|
sudo killall -15 python3
|
|
git stash
|
|
git merge
|
|
git checkout stash@'{0}' -- config.json hardware.json
|
|
# TODO we need to change this to drop stash@{1} if changes made to the flow are to be restored by the user
|
|
git stash drop
|
|
sudo systemctl restart nodered.service
|
|
}
|
|
|
|
function special(){
|
|
if [[ -f "/etc/systemd/system/usb-mount@.service" ]]; then
|
|
sudo rm /etc/systemd/system/usb-mount@.service
|
|
fi
|
|
if [[ -f "/etc/udev/rules.d/99-local.rules" ]]; then
|
|
sudo rm /etc/udev/rules.d/99-local.rules
|
|
fi
|
|
if ! [ -x "$(hash thumbsup &> /dev/null)" ] ; then
|
|
${log} "thumbsup is not installed, installing now"
|
|
sudo chown -R pi:pi /usr/lib/node_modules/
|
|
sudo chown -R pi:pi /usr/bin/
|
|
if npm install -g thumbsup; then
|
|
${log} "Error when installing thumbsup"
|
|
else
|
|
${log} "Thumbsup installed, installing dependencies now"
|
|
sudo apt install -y libimage-exiftool-perl graphicsmagick
|
|
sudo apt autoremove -y
|
|
${log} "Install complete, running thumbsup for the first time now"
|
|
thumbsup --config /home/pi/PlanktonScope/scripts/thumbsup/config.json
|
|
fi
|
|
sudo chown -R root:root /usr/lib/node_modules/
|
|
sudo chown -R root:root /usr/bin
|
|
fi
|
|
if ! [[ -f "/etc/nginx/sites-available/gallery.conf" ]]; then
|
|
${log} "Nginx config is not installed, doing that now"
|
|
sudo cp /home/pi/PlanktonScope/scripts/thumbsup/gallery.conf /etc/nginx/sites-available/gallery.conf
|
|
sudo ln -s /etc/nginx/sites-available/gallery.conf /etc/nginx/sites-enabled/gallery.conf
|
|
sudo nginx -t && sudo systemctl reload nginx
|
|
fi
|
|
if [[ -f "/etc/nginx/sites-available/img.conf" ]]; then
|
|
${log} "Getting rid of the old nginx config"
|
|
sudo rm /etc/nginx/sites-available/img.conf
|
|
sudo rm /etc/nginx/sites-enabled/img.conf
|
|
sudo nginx -t && sudo systemctl reload nginx
|
|
fi
|
|
}
|
|
|
|
${log} "Updating the main repository"
|
|
cd /home/pi/PlanktonScope || { echo "/home/pi/PlanktonScope does not exist"; exit 1; }
|
|
|
|
# TODO We need to add here a way to load the latest version of this script and execute it again
|
|
remote=$(git ls-remote -h origin master | awk '{print $1}')
|
|
local=$(git rev-parse HEAD)
|
|
${log} "Local : $local - Remote: $remote"
|
|
if [[ "$local" == "$remote" ]]; then
|
|
${log} "nothing to do!"
|
|
else
|
|
git fetch
|
|
UPDATE=$(git diff --numstat origin/master scripts/bash/update.sh | awk '/update.sh/ {print $NF}')
|
|
if [[ -n "${UPDATE}" ]]; then
|
|
# Update the file and restart the script
|
|
git checkout origin/master scripts/bash/update.sh
|
|
exec scripts/bash/update.sh
|
|
fi
|
|
special
|
|
update
|
|
${log} "Done!"
|
|
fi |