#!/bin/sh set -eu -o pipefail prog=$(basename "$(readlink -f "$0")") usage="${prog} [-q] INVIDIOUS_USER INVIDIOUS_SRCDIR" die() { printf '%s: %s\n' "$prog" "$*" 1>&2 exit 1 } usage(){ printf 'usage: %s\n' "$usage" 1>&2 exit 2 } as_invidious(){ su -m "$invidious_user" -c "HOME=$(dirname "$invidious_dir") ${@}" } while getopts hq opt; do case $opt in h) usage ;; q) exec 1>/dev/null ;; esac done shift $((OPTIND - 1)) [ $# -eq 2 ] || usage invidious_user=$1 invidious_dir=$2 cd "$invidious_dir" as_invidious 'git fetch' local_rev=$(as_invidious 'git rev-parse HEAD') upstream_rev=$(as_invidious 'git rev-parse "@{u}"') if [ "$local_rev" != "$upstream_rev" ]; then echo "updating invidious to rev ${upstream_rev}" as_invidious 'git pull --ff-only && shards install --production && crystal build src/invidious.cr --release' service invidious status 2>/dev/null && service invidious restart else echo "invidious already up to date at rev ${local_rev}" fi