#!/usr/bin/env miaou-bash # CONSTANTS # FUNCTIONS function hosted_upgrade { cat >&2 <&2 echo "ERROR: development mode owned by: $MIAOU_BASH_MODE_OWNER" && builtin exit 11 cd "$MIAOU_BASH_DIR"/ || return 12 # should not happen [[ -n "$(git status --porcelain)" ]] && >&2 echo 'ERROR: repository has uncommited changes!' && builtin exit 12 local git_output git_output=$(git pull 2>&1) if echo "$git_output" | grep -q 'up to date'; then echo already up-to-date else sudo_root sudo miaou lib/initiate.bash fi } function system_upgrade { local current latest current=$("$MIAOU_BASH_DIR"/bin/miaou-bash --version) latest=$("$MIAOU_BASH_DIR"/tools/wget_semver artcode miaou/miaou-bash) if [[ "$current" == "$latest" ]]; then echo "up-to-date version: $current" else echo "new version available: $latest" perform_upgrade fi } function perform_upgrade { sudo_root local backup="$MIAOU_BASH_DIR".before_upgrade sudo mv "$MIAOU_BASH_DIR" "$backup" if "$backup"/install.sh upgraded; then sudo rm -rf "$backup" echo -n "version: " miaou-bash --version else echo "ERROR: trouble during self-upgrade: revert back" sudo rm -rf "$MIAOU_BASH_DIR" sudo mv "$backup" "$MIAOU_BASH_DIR" fi } # MAIN source "$MIAOU_BASH_DIR"/lib/functions.bash fetch_mode case "$MIAOU_BASH_MODE" in hosted) hosted_upgrade ;; development) development_upgrade ;; system) system_upgrade ;; esac