# CONSTANTS INSTALL_URL='https://git.artcode.re/miaou/miaou-bash/raw/branch/main/install.sh' # FUNCTIONS function container_upgrade { local container_version host_version host_version=$(<"$MIAOU_BASH_DIR"/.semver_git_tag) if [[ -f /var/lib/miaou-bash/semver_current ]]; then container_version=$(&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 (Ctrl-c to bypass reinitialization)' else echo 'git pull applied (Ctrl-c to bypass reinitialization)' fi if sudo_root; then sudo miaou-bash "$MIAOU_BASH_DIR"/lib/initiate.bash else builtin exit 1 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 (Ctrl-c to bypass reinitialization)" if sudo_root; then sudo miaou-bash "$MIAOU_BASH_DIR"/lib/initiate.bash else builtin exit 1 fi else echo "new version available: $latest" #TODO: should download file self-upgrade.bash itself before calling it against perform_upgrade fi } function perform_upgrade { if sudo_root; then : else builtin exit 1 fi local backup="$MIAOU_BASH_DIR".before_upgrade sudo mv "$MIAOU_BASH_DIR" "$backup" curl -s --output /tmp/miaou-bash-install.sh "$INSTALL_URL" # shellcheck disable=SC1091 if source /tmp/miaou-bash-install.sh upgrade; then if [[ $(find "$backup"/hooks.d -maxdepth 1 -type f -not -name '.*' | wc -l) -gt 0 ]]; then sudo mv "$backup"/hooks.d/* "$MIAOU_BASH_DIR"/hooks.d/ fi sudo -E "$MIAOU_BASH_DIR"/bin/miaou-bash "$MIAOU_BASH_DIR"/lib/initiate.bash sudo rm -rf "$backup" else echo "ERROR: trouble during self-upgrade: revert back" sudo rm -rf "$MIAOU_BASH_DIR" sudo mv "$backup" "$MIAOU_BASH_DIR" builtin exit 99 fi } # MAIN source "$MIAOU_BASH_DIR"/lib/functions.bash fetch_mode echo "upgrading mode: $MIAOU_BASH_MODE" case "$MIAOU_BASH_MODE" in hosted) container_upgrade ;; development) development_upgrade ;; system) system_upgrade ;; esac