diff --git a/scripts/upgrade-server.sh b/scripts/upgrade-server.sh index e02945d..c8e004a 100755 --- a/scripts/upgrade-server.sh +++ b/scripts/upgrade-server.sh @@ -1,95 +1,96 @@ #! /bin/bash ############################################################################### -## writefreely update script ## -## ## -## WARNING: running this script will overwrite any modifed assets or ## -## template files. If you have any custom changes to these files you ## -## should back them up FIRST. ## -## ## -## This must be run from the web application root directory ## -## i.e. /var/www/writefreely, and operates under the assumption that you ## -## have not installed the binary `writefreely` in another location. ## +## writefreely update script ## +## ## +## WARNING: running this script will overwrite any modifed assets or ## +## template files. If you have any custom changes to these files you ## +## should back them up FIRST. ## +## ## +## This must be run from the web application root directory ## +## i.e. /var/www/writefreely, and operates under the assumption that you## +## have not installed the binary `writefreely` in another location. ## ############################################################################### # -# Copyright © 2019 A Bunch Tell LLC. +# Copyright © 2019 A Bunch Tell LLC. # -# This file is part of WriteFreely. +# This file is part of WriteFreely. # -# WriteFreely is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License, included -# in the LICENSE file in this source code package. +# WriteFreely is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License, included +# in the LICENSE file in this source code package. # # only execute as root, or use sudo if [[ `id -u` -ne 0 ]]; then echo "You must login as root, or execute this script with sudo" exit 10 fi # go ahead and check for the latest release on linux echo "Checking for updates..." url=`curl -s https://api.github.com/repos/writeas/writefreely/releases/latest | grep 'browser_' | grep linux | cut -d\" -f4` # check current version -current=`./writefreely -v` -if [ -z "$current" ]; then +bin_output=`./writefreely -v` +if [ -z "$bin_output" ]; then exit 1 fi -echo "Current version is v${current:(-5):5}" +current=${bin_output:12:5} +echo "Current version is v$current" # grab latest version number IFS='/' read -ra parts <<< "$url" latest=${parts[-2]} echo "Latest release is $latest" IFS='.' -read -ra cv <<< "${current:(-5):5}" +read -ra cv <<< "$current" read -ra lv <<< "${latest#v}" IFS=' ' tempdir=$(mktemp -d) if [[ ${lv[0]} -gt ${cv[0]} ]]; then echo "New major version available." echo "Downloading..." `wget -P $tempdir -q --show-progress $url` elif [[ ${lv[0]} -eq ${cv[0]} ]] && [[ ${lv[1]} -gt ${cv[1]} ]]; then echo "New minor version available." echo "Downloading..." `wget -P $tempdir -q --show-progress $url` elif [[ ${lv[2]} -gt ${cv[2]} ]]; then echo "New patch version available." echo "Downloading..." `wget -P $tempdir -q --show-progress $url` else echo "Up to date." exit 0 fi filename=${parts[-1]} # extract echo "Extracting files..." tar -zxf $tempdir/$filename -C $tempdir # copy files echo "Copying files..." cp -r $tempdir/{pages,static,templates,writefreely} . # restart service echo "Restarting writefreely systemd service..." if `systemctl restart writefreely`; then echo "Success, version has been upgraded to $latest." else echo "Upgrade complete, but failed to restart service." exit 1 fi