From f4798bf3bd2cec1017e931d2a727388320406a0b Mon Sep 17 00:00:00 2001 From: 3wc <3wc.git@doesthisthing.work> Date: Tue, 22 Sep 2020 00:08:13 +0200 Subject: [PATCH] Context set-up, Subsubcommands, COMPOSE->{_FILE} --- abra | 106 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 86 insertions(+), 20 deletions(-) diff --git a/abra b/abra index f4108d1..ea1567e 100755 --- a/abra +++ b/abra @@ -3,8 +3,8 @@ PROGRAM_NAME=$(basename "$0") ABRA_CONFIG=abra.yml -if [ -z "$COMPOSE" ]; then - COMPOSE="compose.yml" +if [ -z "$COMPOSE_FILE" ]; then + COMPOSE_FILE="compose.yml" fi yml_pattern_exists() { @@ -66,7 +66,14 @@ sub_help() { echo "" echo "Make sure \$STACK_NAME is set using direnv or -a" echo "" - echo "Runs compose.yml by default, set e.g. COMPOSE=\"compose.yml compose2.yml\" to override" + echo "Runs compose.yml by default, set e.g. COMPOSE_FILE=\"compose.yml:compose2.yml\" to override" +} + +sub_secret_help() { + echo "Usage: $PROGRAM_NAME [-a STACK_NAME] secret [options]" + echo "" + echo "Subcommands:" + echo " generate [PW] generate & store secret" } sub_secret_generate(){ @@ -84,6 +91,13 @@ sub_secret_generate(){ >(pass insert "hosts/autonomic-swarm/${STACK_NAME}/${SECRET}" -m) } +sub_secret() { + SUBCOMMAND=$1 + shift + # shellcheck disable=SC2068 + parse_subcommand "$SUBCOMMAND" "secret" $@ +} + sub_run_args(){ SERVICE=$1 DOCKER_ARGS=$2 @@ -119,7 +133,7 @@ sub_run(){ sub_deploy (){ echo "About to deploy:" - echo " Compose: $(tput setaf 3)${PWD}/${COMPOSE}$(tput sgr0)" + echo " Compose: $(tput setaf 3)${PWD}/${COMPOSE_FILE}$(tput sgr0)" if [ -n "$DOMAIN" ]; then echo " Domain: $(tput setaf 2)${DOMAIN}$(tput sgr0)" fi @@ -134,7 +148,7 @@ sub_deploy (){ esac # shellcheck disable=SC2086 - if docker stack deploy -c ${COMPOSE/ / -c } "$STACK_NAME"; then + if docker stack deploy -c ${COMPOSE_FILE/:/ -c } "$STACK_NAME"; then if [ -n "$DOMAIN" ]; then echo "$(tput setaf 2)Yay! App should be available at https://${DOMAIN}$(tput sgr0)" else @@ -194,18 +208,70 @@ sub_cp() { docker cp $CP_ARGS } -subcommand=$1 -case $subcommand in - "" | "-h" | "--help") - sub_help - ;; - *) - shift - "sub_${subcommand}" "$@" - if [ $? = 127 ]; then - echo "Error: '$subcommand' is not a known subcommand." >&2 - echo " Run '$PROGRAM_NAME --help' for a list of known subcommands." >&2 - exit 1 - fi - ;; -esac +sub_context_help() { + echo "Usage: $PROGRAM_NAME [-a STACK_NAME] context [options]" + echo "" + echo "Subcommands:" + echo " init HOST [USER] [PORT] set up remote Docker context" + echo " use activate remote Docker context" +} + +sub_context_init() { + HOST="$1" + USERNAME="$2" + PORT="$3" + + if [ -n "$PORT" ]; then + PORT=":$PORT" + fi + + if [ -n "$USERNAME" ]; then + USERNAME="$USERNAME@" + fi + + docker context create "$HOST" \ + --docker "host=ssh://$USERNAME$HOST$PORT" +} + +sub_context_use() { + docker context use "$1" +} + +sub_context() { + SUBCOMMAND2=$1 + shift + # shellcheck disable=SC2068 + parse_subcommand "$SUBCOMMAND2" "context" $@ +} + +parse_subcommand() { + SUBCOMMAND="$1" + PREFIX=$2 + + if [ -n "$PREFIX" ]; then + PPREFIX="_$2" + SPREFIX="$2 " + SSPREFIX=" $2" + fi + + case $SUBCOMMAND in + "" | "-h" | "--help") + "sub${PPREFIX}_help" + ;; + *) + shift 2 + "sub${PPREFIX}_${SUBCOMMAND}" "$@" + if [ $? = 127 ]; then + echo "Error: '$SPREFIX$SUBCOMMAND' is not a known subcommand." >&2 + echo " Run '$PROGRAM_NAME$SSPREFIX --help' for a list of known subcommands." >&2 + exit 1 + fi + ;; + esac +} + +SUBCOMMAND=$1 +shift + +# shellcheck disable=SC2086,SC2068 +parse_subcommand $SUBCOMMAND "" $@