From 0ff0eb45211e8a8d6988046dcd827b9c0b74d8ef Mon Sep 17 00:00:00 2001 From: pvincent Date: Fri, 21 Aug 2026 09:28:27 +0400 Subject: [PATCH] devmode --- lib/devmode.bash | 25 ++++++++++++++++++++++--- lib/functions.bash | 15 +++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/lib/devmode.bash b/lib/devmode.bash index cf614ec..b0431f8 100644 --- a/lib/devmode.bash +++ b/lib/devmode.bash @@ -12,11 +12,12 @@ function assert_normal_user { } function assert_credentials { + echo "check for credentials" local base_url base_url=$(echo "$GIT_URL" | cut -d: -f1) if ! ssh -T "${base_url}"; then - echo "credentials missing: $base_url" - return 2 + >&2 echo "MIAOU ERROR: development mode unavailable because your credentials are missing: $base_url" + builtin exit 2 fi } @@ -31,11 +32,29 @@ function assert_reachable_target { sudo -u nobody -g sudo test -x "$(dirname "$target")" } +function assert_devmode_available { + fetch_mode + if [[ "$MIAOU_BASH_MODE" == development ]]; then + local realpath + realpath=$(realpath "$MIAOU_BASH_DIR"/) # / is required to get real target + if [[ "$MIAOU_BASH_MODE_OWNER" == "$USER" ]]; then + echo "you are already in development mode, check for: $realpath" + return 10 + else + >&2 echo "MIAOU ERROR: already in develoment mode, but owned by: $MIAOU_BASH_MODE_OWNER" + return 11 + fi + elif [[ "$MIAOU_BASH_MODE" = hosted ]]; then + >&2 echo "MIAOU ERROR: hosted mode detected" + return 12 + fi +} + # Main source "$MIAOU_BASH_DIR"/lib/functions.bash assert_normal_user -assert_system_mode +assert_devmode_available assert_credentials name=$(echo "$GIT_URL" | cut -d/ -f2) name="${name%.git}" diff --git a/lib/functions.bash b/lib/functions.bash index d50f950..5486f56 100644 --- a/lib/functions.bash +++ b/lib/functions.bash @@ -16,6 +16,21 @@ function assert_container { [[ $(systemd-detect-virt -c) == lxc ]] } +function fetch_mode { + [[ -v MIAOU_BASH_MODE ]] && return + MIAOU_BASH_MODE_OWNER=$(stat -c '%U' "$MIAOU_BASH_DIR"/) + if [[ -L "$MIAOU_BASH_DIR" ]]; then + MIAOU_BASH_MODE='development' + elif [[ "$MIAOU_BASH_MODE_OWNER" == root ]]; then + MIAOU_BASH_MODE='system' + elif [[ "$MIAOU_BASH_MODE_OWNER" == nobody ]]; then + MIAOU_BASH_MODE='hosted' + else + >&2 echo "MIAOU ERROR: unknown mode: $(realpath "$MIAOU_BASH_DIR") owned by: $MIAOU_BASH_MODE_OWNER" && + return 3 + fi +} + function assert_system_mode { [[ -L "$MIAOU_BASH_DIR" ]] && >&2 echo "ERROR: development mode: $(realpath "$MIAOU_BASH_DIR")" &&