Context set-up, Subsubcommands, COMPOSE->{_FILE}
This commit is contained in:
		
							
								
								
									
										106
									
								
								abra
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								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 <subcommand> [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 <subcommand> [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 "" $@ | ||||
|  | ||||
		Reference in New Issue
	
	Block a user