72 lines
2.5 KiB
Bash
Executable file
72 lines
2.5 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
log="echo -e"
|
|
|
|
CURRENT_BRANCH=$(git --git-dir=/home/pi/PlanktoScope/.git rev-parse --abbrev-ref HEAD)
|
|
REMOTE_BRANCHES=$(git --git-dir=/home/pi/PlanktoScope/.git branch --remotes --list | awk '/HEAD/{next;} split($1, a, "/") {print a[2]}')
|
|
if [[ $# == 1 ]]; then
|
|
if [[ $REMOTE_BRANCHES =~ (^|[[:space:]])$1($|[[:space:]]) ]]; then
|
|
BRANCH="$1"
|
|
else
|
|
BRANCH="$CURRENT_BRANCH"
|
|
fi
|
|
else
|
|
BRANCH="$CURRENT_BRANCH"
|
|
fi
|
|
|
|
${log} "Updating the main repository to branch $BRANCH"
|
|
|
|
function restart(){
|
|
sudo nginx -t && sudo systemctl reload nginx
|
|
sudo systemctl restart nodered.service
|
|
}
|
|
|
|
function update(){
|
|
cd /home/pi/PlanktoScope || { echo "/home/pi/PlanktoScope does not exist"; exit 1; }
|
|
sudo killall -15 raspimjpeg
|
|
sudo killall -15 python3
|
|
git stash
|
|
# TODO detect branch change and use git pull on same branch and checkout on diff branch
|
|
if [[ "$CURRENT_BRANCH" == "$BRANCH" ]]; then
|
|
git pull
|
|
else
|
|
git checkout --force "$BRANCH"
|
|
fi
|
|
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
|
|
}
|
|
|
|
function special_before(){
|
|
cd /home/pi/.node-red || { echo "/home/pi/.node-red does not exist"; exit 1; }
|
|
sudo rpi-eeprom-update -a
|
|
${log} "Nothing else special to do before updating!"
|
|
}
|
|
|
|
function special_after(){
|
|
cd /home/pi/.node-red || { echo "/home/pi/.node-red does not exist"; exit 1; }
|
|
#node_modules/copy-dependencies/index.js projects/PlanktoScope ./
|
|
# updating and installing now whatever module has been added to package.json
|
|
#npm update
|
|
#pip3 install -U -r /home/pi/PlanktoScope/requirements.txt
|
|
${log} "Nothing else special to do after updating!"
|
|
}
|
|
|
|
echo -e "\n\n\nUpdate on $(date)\n\n" >> /home/pi/update.log
|
|
cd /home/pi/PlanktoScope || { echo "/home/pi/PlanktoScope does not exist"; exit 1; }
|
|
remote=$(git ls-remote -h origin "$BRANCH" | awk '{print $1}')
|
|
local=$(git rev-parse HEAD)
|
|
if [[ "$local" == "$remote" ]]; then
|
|
${log} "Nothing to do!"
|
|
else
|
|
${log} "Local and Remote are different, we have to update, starting now... Please Wait."
|
|
special_before &>> /home/pi/update.log
|
|
${log} "Everything is ready, doing the actual update now!"
|
|
update &>> /home/pi/update.log
|
|
#special_after &>> /home/pi/update.log
|
|
${log} "Update is complete, let's restart now."
|
|
restart &>> /home/pi/update.log
|
|
fi
|
|
${log} "Update done!" |