diff --git a/lib/devmode.bash b/lib/devmode.bash new file mode 100755 index 0000000..891c5a7 --- /dev/null +++ b/lib/devmode.bash @@ -0,0 +1,48 @@ +#!/usr/bin/env miaou-bash + +# Constants +GIT_URL=https://git.artcode.re/miaou/miaou-bash + +# Functions + +function assert_normal_user { + [[ "$UID" -eq 0 ]] && echo 'normal user expected' && return 1 + true +} + +function assert_credentials { + local base_url + base_url=$(echo "$GIT_URL" | cut -d/ -f3) + if ! ssh -T "git@${base_url}"; then + echo "credentials missing: $base_url" + return 2 + fi +} + +function assert_system_mode { + [[ -L "$MIAOU_BASH_DIR" ]] && echo "already in develoment mode: $(realpath $MIAOU_BASH_DIR)" && return 3 + true +} + +function dev_mode { + git clone "$GIT_URL" + sudo rm "$MIAOU_BASH_DIR" -rf + sudo ln -s "$target" "$MIAOU_BASH_DIR" + sudo "$MIAOU_BASH_DIR"/lib/init.sh +} + +function assert_reachable_target { + sudo -u nobody test -x "$target" +} + +# Main + +assert_normal_user +assert_system_mode +assert_credentials +target="$PWD"/ +target+=$(echo "$GIT_URL" | cut -d/ -f5) +source "$MIAOU_BASH_DIR"/lib/functions.bash +_confirm_destructive "target directory will be: ${target}" +assert_reachable_target +dev_mode