From 6ca2a983ff805a153904c7c3d23a1041277a92dc Mon Sep 17 00:00:00 2001 From: faulty Date: Wed, 7 Dec 2022 09:07:43 +0100 Subject: [PATCH] feat: save functionality --- man | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 74 insertions(+), 9 deletions(-) diff --git a/man b/man index 1104e2f..45a906d 100755 --- a/man +++ b/man @@ -2,15 +2,12 @@ PROJECT_NAME=${PROJECT_NAME:-neo} LIST=docker-compose.*.yml +SAVEFILE=$HOME/.local/faulty/$PROJECT_NAME.save alias dc="docker-compose -p $PROJECT_NAME" # alias dc="echo docker-compose -p $PROJECT_NAME" -fatal() { - echo "FATAL: $@" - exit 1 -} - +alias _p="printf \"%s\"" default() { fopts="" for f in $LIST; do @@ -19,6 +16,37 @@ default() { dc $fopts $* } +safe_env_load() { + # $1 = file + # $2 = var + # get env var from regex instead of inclusion + [ ! -f $1 ] && fatal "file doesn't exist" + [ ! -r $1 ] && fatal "file not readable" + res=$(grep -E "^$2=" $1 | sed -E "s/^$2=\"(.*)\"/\1/") + [ -z "$res" ] && fatal "var not found" + _p $res +} + +write_savefile() { + [ -d $(dirname $1) ] || mkdir -p $(dirname $1}) + echo -n "LIST=\"" > $1 + for li in $LIST; do + echo -n " $li" >> $1 + done + echo "\"" >> $1 +} + +load_savefile() { + [ "$1" == "/dev/null" ] && return + [ ! -f $1 ] && return + LIST=$(safe_env_load $1 LIST) +} + +fatal() { + echo "FATAL: $@" + exit 1 +} + includechain=0 handleFallthrough() { cmd=${1:-}; shift @@ -27,9 +55,9 @@ handleFallthrough() { [ -n "$1" ] || fatal "no directory specified" [ -d /srv/$1 ] || fatal "directory doesn't exist" ls /srv/$1 - printf "Are you sure? (yes/no) [no]: " + printf "Are you sure? (y/n) [n]: " read answer - [ "$answer" = "yes" ] && sudo rm -rf /srv/$1 || fatal "cancelled" + [ "$answer" = "y" ] && sudo rm -rf /srv/$1 || fatal "cancelled" ;; -i) #include @@ -44,7 +72,7 @@ handleFallthrough() { ;; -x) #exclude - LIST=$(echo $LIST | sed "s/docker-compose.$1.yml//") + LIST=$(echo $LIST | sed "s/docker-compose.$1.yml/ /") shift handleFallthrough $@ ;; @@ -82,6 +110,11 @@ handleFallthrough() { esac ;; + --save) # save behaviour + handleFallthrough $@ + write_savefile $SAVEFILE + ;; + # preference logs) default logs --tail=20 -f $@ ;; up) default up -d $@ ;; @@ -131,9 +164,41 @@ handleFallthrough() { _hr ;; + debug) + load_savefile $SAVEFILE + _() { + eval "echo -n \"$1=\"; echo \$$1" + } + _ SAVEFILE + _ LIST + for i in $LIST; do + echo $i + done + return + ;; default) default $@ ;; *|'') default $cmd $@ ;; esac } -handleFallthrough $@ \ No newline at end of file +main() { + case $1 in + --ignore-save) + SAVEFILE=/dev/null + shift 1 + ;; + --set-save) + SAVEFILE=$2 + shift 2 + main $@; exit 0 + ;; + --del-save) + rm $SAVEFILE + shift + ;; + esac + load_savefile $SAVEFILE + handleFallthrough $@ +} + +main $@ \ No newline at end of file