pythonify man script
This commit is contained in:
parent
ddb7a69f7e
commit
56d1705abd
4 changed files with 129 additions and 219 deletions
219
man
219
man
|
@ -1,220 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
PROJECT_NAME=${PROJECT_NAME:-neo}
|
||||
LIST=docker-compose.*.yml
|
||||
SAVEFILE=$HOME/.local/faulty/$PROJECT_NAME.save
|
||||
PROFILES=""
|
||||
|
||||
alias dc="docker-compose -p $PROJECT_NAME"
|
||||
# alias dc="echo docker-compose -p $PROJECT_NAME"
|
||||
|
||||
alias _p="printf \"%s\""
|
||||
default() {
|
||||
fopts=""
|
||||
for f in $LIST; do
|
||||
fopts="$fopts -f $f"
|
||||
done
|
||||
profopts=""
|
||||
for p in $PROFILES; do
|
||||
profopts="$profopts --profile $p"
|
||||
done
|
||||
dc $fopts $profopts $*
|
||||
}
|
||||
|
||||
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
|
||||
echo -n "PROFILES=\"" >> $1
|
||||
for p in $PROFILES; do
|
||||
echo -n " $p" >> $1
|
||||
done
|
||||
echo "\"" >> $1
|
||||
}
|
||||
|
||||
load_savefile() {
|
||||
[ "$1" == "/dev/null" ] && return
|
||||
[ ! -f $1 ] && return
|
||||
LIST=$(safe_env_load $1 LIST)
|
||||
PROFILES=$(save_env_load $1 PROFILES)
|
||||
}
|
||||
|
||||
fatal() {
|
||||
echo "FATAL: $@"
|
||||
exit 1
|
||||
}
|
||||
|
||||
includechain=0
|
||||
handleFallthrough() {
|
||||
cmd=${1:-}; shift
|
||||
case $cmd in
|
||||
delete-project-files|dpf)
|
||||
[ -n "$1" ] || fatal "no directory specified"
|
||||
[ -d /srv/$1 ] || fatal "directory doesn't exist"
|
||||
ls /srv/$1
|
||||
printf "Are you sure? (y/n) [n]: "
|
||||
read answer
|
||||
[ "$answer" = "y" ] && sudo rm -rf /srv/$1 || fatal "cancelled"
|
||||
;;
|
||||
|
||||
-p) # add profile
|
||||
PROFILES="$PROFILES $1"; shift
|
||||
handleFallthrough $@
|
||||
;;
|
||||
|
||||
-i) #include
|
||||
if [ $includechain -eq 0 ]; then
|
||||
LIST="docker-compose.$1.yml"
|
||||
includechain=1
|
||||
else
|
||||
LIST="$LIST docker-compose.$1.yml"
|
||||
fi
|
||||
shift
|
||||
handleFallthrough $@
|
||||
;;
|
||||
|
||||
-x) #exclude
|
||||
LIST=$(echo $LIST | sed "s/docker-compose.$1.yml/ /")
|
||||
shift
|
||||
handleFallthrough $@
|
||||
;;
|
||||
|
||||
make:*)
|
||||
WHAT=`echo $cmd | cut -c6-`
|
||||
case $WHAT in
|
||||
dc|docker-compose)
|
||||
[ -n "$1" ] || fatal "no name specified"
|
||||
FILE="docker-compose.$1.yml"
|
||||
[ -f $FILE ] && fatal "file exists"
|
||||
echo -e "version: '2.2'\n" > $FILE
|
||||
echo -e "services: \n" >> $FILE
|
||||
;;
|
||||
backup)
|
||||
[ -n "$1" ] || fatal "no name specified"
|
||||
FILE="$1.tar.gz"
|
||||
[ -f $FILE ] && fatal "file exists"
|
||||
tar cvf $FILE /srv .
|
||||
;;
|
||||
*) fatal "not supported" ;;
|
||||
esac
|
||||
;;
|
||||
|
||||
setup:*|s:*)
|
||||
WHAT=`echo $cmd | cut -c8-`
|
||||
case $WHAT in
|
||||
ports) sudo ./utils/setup-ports.sh up ./utils/rulelist.rules ;;
|
||||
def) sudo ./utils/setup.sh ;;
|
||||
all|a)
|
||||
sudo ./utils/setup.sh
|
||||
sudo ./utils/setup-ports.sh up ./utils/rulelist.rules
|
||||
;;
|
||||
*) fatal "not supported" ;;
|
||||
esac
|
||||
;;
|
||||
|
||||
--save) # save behaviour
|
||||
handleFallthrough $@
|
||||
write_savefile $SAVEFILE
|
||||
;;
|
||||
|
||||
# preference
|
||||
logs) default logs --tail=20 -f $@ ;;
|
||||
up) default up -d $@ ;;
|
||||
upr) default up -d --remove-orphans $@ ;;
|
||||
|
||||
--help|-h)
|
||||
__() {
|
||||
colsep="$1"
|
||||
cmd="$2"
|
||||
desc="$3"
|
||||
aliases="$4"
|
||||
printf "%s %-20s %s %-64s %s %-40s %s \n" "$colsep" "$cmd" "$colsep" "$desc" "$colsep" "$aliases" "$colsep"
|
||||
}
|
||||
_hr() {
|
||||
repchar() {
|
||||
printf "%$1s" | tr " " "$2"
|
||||
}
|
||||
__ "*" ${1:-$(repchar 20 -)} ${2:-$(repchar 64 -)} ${3:-$(repchar 40 -)}
|
||||
}
|
||||
_r() {
|
||||
__ "|" "$1" "$2" "$3"
|
||||
}
|
||||
_hr
|
||||
_r $0 Description Aliases
|
||||
_hr
|
||||
_hr "Flags" " " " "
|
||||
_hr
|
||||
_r "-x" "Excludes a docker-compose file from the list." " "
|
||||
_r "-i" "Includes a docker-compose file from the list." " "
|
||||
_hr
|
||||
_hr "Commands" " " " "
|
||||
_hr
|
||||
_r "dpf" "Delete project files." "delete-project-files <name>"
|
||||
_r "setup:ports" "Setup ports." "setup:ports"
|
||||
_r "setup:def" "Setup default." "setup:def"
|
||||
_r "setup:all" "Setup all." "setup:all"
|
||||
_r "make:dc <name>" "Make docker-compose file." "make:docker-compose <name>"
|
||||
_r "make:backup <name>" "Make backup file." "tar cvf <name>.tar.gz /srv"
|
||||
_hr
|
||||
_hr "Commands/aliases" "(shortcuts)" " "
|
||||
_hr
|
||||
_r "up" "Bring up services. (-d)" "$0 default up -d"
|
||||
_r "upr" "Bring up services and remove orphans." "$0 default up -d --remove-orphans"
|
||||
_r "logs" "View logs and follow with a tail of 20." "$0 default logs --tail=20 -f"
|
||||
_hr
|
||||
_r "default" "fallback to the main docker-compose command with fileopts." "docker-compose"
|
||||
_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
|
||||
}
|
||||
|
||||
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 $@
|
||||
python utils/manager/main.py $@
|
Reference in a new issue