|
- #! /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. ##
- ###############################################################################
- #
- # Copyright © 2019-2020 A Bunch Tell LLC.
- #
- # 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.
- #
-
-
- # 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' | grep 'amd64' | cut -d\" -f4`
-
- # check current version
-
- bin_output=`./writefreely -v`
- if [ -z "$bin_output" ]; then
- exit 1
- fi
-
- 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"
- 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
-
- # stop service
- echo "Stopping writefreely systemd service..."
- if `systemctl start writefreely`; then
- echo "Success, service stopped."
- else
- echo "Upgrade failed to stop the systemd service, exiting early."
- exit 1
- fi
-
- # copy files
- echo "Copying files..."
- cp -r $tempdir/writefreely/{pages,static,templates,writefreely} .
-
- # migrate db
- ./writefreely -migrate
-
- # restart service
- echo "Starting writefreely systemd service..."
- if `systemctl start writefreely`; then
- echo "Success, version has been upgraded to $latest."
- else
- echo "Upgrade complete, but failed to restart service."
- exit 1
- fi
|