diff --git a/bin/bfaupdate.sh b/bin/bfaupdate.sh index bbc8ec83125f2972078088e8dfcb024199a60fcb..41376233e833a9f6aad067ba37be8abcd8ddaa76 100755 --- a/bin/bfaupdate.sh +++ b/bin/bfaupdate.sh @@ -1,11 +1,45 @@ #!/bin/bash # Robert Martin-Legene <robert@nic.ar> +# 2019 +# You can start this as root or not - as long as $BFAHOME is set, it +# should work. + +trap "exit 1" ERR if [ -z "${BFAHOME}" ]; then echo "\$BFAHOME not set. Did you source bfa/bin/env ?" >&2; exit 1; fi source ${BFAHOME}/bin/libbfa.sh || exit 1 + +function runasownerof +{ + path=$1 + precmd= + shift 1 + if [ $( stat --format=%u $path ) -ne $UID ] + then + precmd="sudo -u $( stat --format=%U $path )" + fi + unset path + ${precmd} "$@" + unset precmd +} + set -x -cd ${BFAHOME} -sudo apt -y install libclass-accessor-perl -git pull -npm rebuild +if [ "$1" = "" ] +then + cd `dirname $0` + # Pulling may update this script itself. + # We pull an updated repository, including an updated version of + # ourself, and then we execute the updates "us" + # This first part of the if is static. Changes (updates to this + # script) goes after the 'else' + # + # To keep things neat, make sure we pull as the user owning the + # directory. + runasownerof . git pull + exec ./`basename $0` wealreadypulled +else + cd ${BFAHOME} + runasownerof / apt -y install libclass-accessor-perl + runasownerof . npm rebuild +fi