Add --no-tty option to app run

This commit is contained in:
3wc 2020-12-26 17:22:56 +02:00
parent 40ca8dfe93
commit d90c6ef361

114
abra
View File

@ -22,7 +22,7 @@ Usage:
abra [options] app <domain> cp <src> <dst> abra [options] app <domain> cp <src> <dst>
abra [options] app <domain> check abra [options] app <domain> check
abra [options] app <domain> ps abra [options] app <domain> ps
abra [options] app <domain> run [--user=<user>] <service> <args>... abra [options] app <domain> run [--no-tty] [--user=<user>] <service> <args>...
abra [options] app <domain> run <service> <args>... abra [options] app <domain> run <service> <args>...
abra [options] app <domain> secret auto [--pass] abra [options] app <domain> secret auto [--pass]
abra [options] app <domain> secret generate <secret> <version> [<cmd>] [--pass] abra [options] app <domain> secret generate <secret> <version> [<cmd>] [--pass]
@ -145,19 +145,20 @@ eval "var_$1+=($value)"; else eval "var_$1=$value"; fi; return 0; fi; done
return 1; }; stdout() { printf -- "cat <<'EOM'\n%s\nEOM\n" "$1"; }; stderr() { return 1; }; stdout() { printf -- "cat <<'EOM'\n%s\nEOM\n" "$1"; }; stderr() {
printf -- "cat <<'EOM' >&2\n%s\nEOM\n" "$1"; }; error() { printf -- "cat <<'EOM' >&2\n%s\nEOM\n" "$1"; }; error() {
[[ -n $1 ]] && stderr "$1"; stderr "$usage"; _return 1; }; _return() { [[ -n $1 ]] && stderr "$1"; stderr "$usage"; _return 1; }; _return() {
printf -- "exit %d\n" "$1"; exit "$1"; }; set -e; trimmed_doc=${DOC:1:1564} printf -- "exit %d\n" "$1"; exit "$1"; }; set -e; trimmed_doc=${DOC:1:1579}
usage=${DOC:40:1256}; digest=48295; shorts=(-h -e -v -s '' '' '' '' '' '' '' '') usage=${DOC:40:1271}; digest=974cf
longs=(--help --env --version --stack --server --domain --pass --auto --status --force --user --all) shorts=(-h -e -s -v '' '' '' '' '' '' '' '' '')
argcounts=(0 1 0 1 1 1 0 0 0 0 1 0); node_0(){ switch __help 0; }; node_1(){ longs=(--help --env --stack --version --server --domain --pass --auto --status --force --no-tty --user --all)
value __env 1; }; node_2(){ switch __version 2; }; node_3(){ value __stack 3; } argcounts=(0 1 1 0 1 1 0 0 0 0 0 1 0); node_0(){ switch __help 0; }; node_1(){
value __env 1; }; node_2(){ value __stack 2; }; node_3(){ switch __version 3; }
node_4(){ value __server 4; }; node_5(){ value __domain 5; }; node_6(){ node_4(){ value __server 4; }; node_5(){ value __domain 5; }; node_6(){
switch __pass 6; }; node_7(){ switch __auto 7; }; node_8(){ switch __status 8; } switch __pass 6; }; node_7(){ switch __auto 7; }; node_8(){ switch __status 8; }
node_9(){ switch __force 9; }; node_10(){ value __user 10; }; node_11(){ node_9(){ switch __force 9; }; node_10(){ switch __no_tty 10; }; node_11(){
switch __all 11; }; node_12(){ value _app_ a; }; node_13(){ value _domain_ a; } value __user 11; }; node_12(){ switch __all 12; }; node_13(){ value _app_ a; }
node_14(){ value _service_ a; }; node_15(){ value _src_ a; }; node_16(){ node_14(){ value _domain_ a; }; node_15(){ value _service_ a; }; node_16(){
value _dst_ a; }; node_17(){ value _args_ a true; }; node_18(){ value _secret_ a value _src_ a; }; node_17(){ value _dst_ a; }; node_18(){ value _args_ a true; }
}; node_19(){ value _version_ a; }; node_20(){ value _cmd_ a; }; node_21(){ node_19(){ value _secret_ a; }; node_20(){ value _version_ a; }; node_21(){
value _data_ a; }; node_22(){ value _command_ a; }; node_23(){ value _arg_ a; } value _cmd_ a; }; node_22(){ value _data_ a; }; node_23(){ value _command_ a; }
node_24(){ value _host_ a; }; node_25(){ value _user_ a; }; node_26(){ node_24(){ value _host_ a; }; node_25(){ value _user_ a; }; node_26(){
value _port_ a; }; node_27(){ _command app; }; node_28(){ _command new; } value _port_ a; }; node_27(){ _command app; }; node_28(){ _command new; }
node_29(){ _command list; }; node_30(){ _command ls; }; node_31(){ node_29(){ _command list; }; node_30(){ _command ls; }; node_31(){
@ -171,43 +172,43 @@ _command generate; }; node_45(){ _command insert; }; node_46(){ _command server
_command init; }; node_50(){ _command apps; }; node_51(){ _command upgrade; } _command init; }; node_50(){ _command apps; }; node_51(){ _command upgrade; }
node_52(){ optional 0 1 2 3; }; node_53(){ optional 52; }; node_54(){ optional 4 node_52(){ optional 0 1 2 3; }; node_53(){ optional 52; }; node_54(){ optional 4
}; node_55(){ optional 5; }; node_56(){ optional 6; }; node_57(){ optional 7; } }; node_55(){ optional 5; }; node_56(){ optional 6; }; node_57(){ optional 7; }
node_58(){ required 53 27 28 54 55 56 57 12; }; node_59(){ either 29 30; } node_58(){ required 53 27 28 54 55 56 57 13; }; node_59(){ either 29 30; }
node_60(){ required 59; }; node_61(){ optional 8; }; node_62(){ node_60(){ required 59; }; node_61(){ optional 8; }; node_62(){
required 53 27 60 61 54; }; node_63(){ required 53 27 13 31; }; node_64(){ required 53 27 60 61 54; }; node_63(){ required 53 27 14 31; }; node_64(){
required 53 27 13 32; }; node_65(){ required 53 27 13 33; }; node_66(){ required 53 27 14 32; }; node_65(){ required 53 27 14 33; }; node_66(){
either 34 35; }; node_67(){ required 66; }; node_68(){ optional 9; }; node_69(){ either 34 35; }; node_67(){ required 66; }; node_68(){ optional 9; }; node_69(){
required 53 27 13 67 68; }; node_70(){ optional 14; }; node_71(){ required 53 27 14 67 68; }; node_70(){ optional 15; }; node_71(){
required 53 27 13 36 70; }; node_72(){ required 53 27 13 37; }; node_73(){ required 53 27 14 36 70; }; node_72(){ required 53 27 14 37; }; node_73(){
required 53 27 13 38 15 16; }; node_74(){ required 53 27 13 39; }; node_75(){ required 53 27 14 38 16 17; }; node_74(){ required 53 27 14 39; }; node_75(){
required 53 27 13 40; }; node_76(){ optional 10; }; node_77(){ oneormore 17; } required 53 27 14 40; }; node_76(){ optional 10; }; node_77(){ optional 11; }
node_78(){ required 53 27 13 41 76 14 77; }; node_79(){ node_78(){ oneormore 18; }; node_79(){ required 53 27 14 41 76 77 15 78; }
required 53 27 13 41 14 77; }; node_80(){ required 53 27 13 42 43 56; } node_80(){ required 53 27 14 41 15 78; }; node_81(){ required 53 27 14 42 43 56
node_81(){ optional 20; }; node_82(){ required 53 27 13 42 44 18 19 81 56; } }; node_82(){ optional 21; }; node_83(){ required 53 27 14 42 44 19 20 82 56; }
node_83(){ required 53 27 13 42 45 18 19 21 56; }; node_84(){ either 18 11; } node_84(){ required 53 27 14 42 45 19 20 22 56; }; node_85(){ either 19 12; }
node_85(){ required 84; }; node_86(){ required 53 27 13 42 67 85 56 68; } node_86(){ required 85; }; node_87(){ required 53 27 14 42 67 86 56 68; }
node_87(){ optional 23; }; node_88(){ required 53 27 13 22 87; }; node_89(){ node_88(){ optional 78; }; node_89(){ required 53 27 14 23 88; }; node_90(){
optional 25; }; node_90(){ optional 26; }; node_91(){ required 53 46 47 24 89 90 optional 25; }; node_91(){ optional 26; }; node_92(){ required 53 46 47 24 90 91
}; node_92(){ required 53 46 60; }; node_93(){ required 53 46 24 35; } }; node_93(){ required 53 46 60; }; node_94(){ required 53 46 24 35; }
node_94(){ required 53 46 24 48; }; node_95(){ required 53 46 24 49; } node_95(){ required 53 46 24 48; }; node_96(){ required 53 46 24 49; }
node_96(){ required 53 46 24 50 61; }; node_97(){ required 53 51; }; node_98(){ node_97(){ required 53 46 24 50 61; }; node_98(){ required 53 51; }; node_99(){
either 58 62 63 64 65 69 71 72 73 74 75 78 79 80 82 83 86 88 91 92 93 94 95 96 97 either 58 62 63 64 65 69 71 72 73 74 75 79 80 81 83 84 87 89 92 93 94 95 96 97 98
}; node_99(){ required 98; }; cat <<<' docopt_exit() { }; node_100(){ required 99; }; cat <<<' docopt_exit() {
[[ -n $1 ]] && printf "%s\n" "$1" >&2; printf "%s\n" "${DOC:40:1256}" >&2 [[ -n $1 ]] && printf "%s\n" "$1" >&2; printf "%s\n" "${DOC:40:1271}" >&2
exit 1; }'; unset var___help var___env var___version var___stack var___server \ exit 1; }'; unset var___help var___env var___stack var___version var___server \
var___domain var___pass var___auto var___status var___force var___user \ var___domain var___pass var___auto var___status var___force var___no_tty \
var___all var__app_ var__domain_ var__service_ var__src_ var__dst_ var__args_ \ var___user var___all var__app_ var__domain_ var__service_ var__src_ var__dst_ \
var__secret_ var__version_ var__cmd_ var__data_ var__command_ var__arg_ \ var__args_ var__secret_ var__version_ var__cmd_ var__data_ var__command_ \
var__host_ var__user_ var__port_ var_app var_new var_list var_ls var_deploy \ var__host_ var__user_ var__port_ var_app var_new var_list var_ls var_deploy \
var_undeploy var_config var_delete var_rm var_logs var_multilogs var_cp \ var_undeploy var_config var_delete var_rm var_logs var_multilogs var_cp \
var_check var_ps var_run var_secret var_auto var_generate var_insert \ var_check var_ps var_run var_secret var_auto var_generate var_insert \
var_server var_add var_use var_init var_apps var_upgrade; parse 99 "$@" var_server var_add var_use var_init var_apps var_upgrade; parse 100 "$@"
local prefix=${DOCOPT_PREFIX:-''}; unset "${prefix}__help" "${prefix}__env" \ local prefix=${DOCOPT_PREFIX:-''}; unset "${prefix}__help" "${prefix}__env" \
"${prefix}__version" "${prefix}__stack" "${prefix}__server" \ "${prefix}__stack" "${prefix}__version" "${prefix}__server" \
"${prefix}__domain" "${prefix}__pass" "${prefix}__auto" "${prefix}__status" \ "${prefix}__domain" "${prefix}__pass" "${prefix}__auto" "${prefix}__status" \
"${prefix}__force" "${prefix}__user" "${prefix}__all" "${prefix}_app_" \ "${prefix}__force" "${prefix}__no_tty" "${prefix}__user" "${prefix}__all" \
"${prefix}_domain_" "${prefix}_service_" "${prefix}_src_" "${prefix}_dst_" \ "${prefix}_app_" "${prefix}_domain_" "${prefix}_service_" "${prefix}_src_" \
"${prefix}_args_" "${prefix}_secret_" "${prefix}_version_" "${prefix}_cmd_" \ "${prefix}_dst_" "${prefix}_args_" "${prefix}_secret_" "${prefix}_version_" \
"${prefix}_data_" "${prefix}_command_" "${prefix}_arg_" "${prefix}_host_" \ "${prefix}_cmd_" "${prefix}_data_" "${prefix}_command_" "${prefix}_host_" \
"${prefix}_user_" "${prefix}_port_" "${prefix}app" "${prefix}new" \ "${prefix}_user_" "${prefix}_port_" "${prefix}app" "${prefix}new" \
"${prefix}list" "${prefix}ls" "${prefix}deploy" "${prefix}undeploy" \ "${prefix}list" "${prefix}ls" "${prefix}deploy" "${prefix}undeploy" \
"${prefix}config" "${prefix}delete" "${prefix}rm" "${prefix}logs" \ "${prefix}config" "${prefix}delete" "${prefix}rm" "${prefix}logs" \
@ -217,14 +218,15 @@ local prefix=${DOCOPT_PREFIX:-''}; unset "${prefix}__help" "${prefix}__env" \
"${prefix}init" "${prefix}apps" "${prefix}upgrade" "${prefix}init" "${prefix}apps" "${prefix}upgrade"
eval "${prefix}"'__help=${var___help:-false}' eval "${prefix}"'__help=${var___help:-false}'
eval "${prefix}"'__env=${var___env:-}' eval "${prefix}"'__env=${var___env:-}'
eval "${prefix}"'__version=${var___version:-false}'
eval "${prefix}"'__stack=${var___stack:-}' eval "${prefix}"'__stack=${var___stack:-}'
eval "${prefix}"'__version=${var___version:-false}'
eval "${prefix}"'__server=${var___server:-}' eval "${prefix}"'__server=${var___server:-}'
eval "${prefix}"'__domain=${var___domain:-}' eval "${prefix}"'__domain=${var___domain:-}'
eval "${prefix}"'__pass=${var___pass:-false}' eval "${prefix}"'__pass=${var___pass:-false}'
eval "${prefix}"'__auto=${var___auto:-false}' eval "${prefix}"'__auto=${var___auto:-false}'
eval "${prefix}"'__status=${var___status:-false}' eval "${prefix}"'__status=${var___status:-false}'
eval "${prefix}"'__force=${var___force:-false}' eval "${prefix}"'__force=${var___force:-false}'
eval "${prefix}"'__no_tty=${var___no_tty:-false}'
eval "${prefix}"'__user=${var___user:-}' eval "${prefix}"'__user=${var___user:-}'
eval "${prefix}"'__all=${var___all:-false}' eval "${prefix}"'__all=${var___all:-false}'
eval "${prefix}"'_app_=${var__app_:-}' eval "${prefix}"'_app_=${var__app_:-}'
@ -237,7 +239,7 @@ fi; eval "${prefix}"'_secret_=${var__secret_:-}'
eval "${prefix}"'_version_=${var__version_:-}' eval "${prefix}"'_version_=${var__version_:-}'
eval "${prefix}"'_cmd_=${var__cmd_:-}'; eval "${prefix}"'_data_=${var__data_:-}' eval "${prefix}"'_cmd_=${var__cmd_:-}'; eval "${prefix}"'_data_=${var__data_:-}'
eval "${prefix}"'_command_=${var__command_:-}' eval "${prefix}"'_command_=${var__command_:-}'
eval "${prefix}"'_arg_=${var__arg_:-}'; eval "${prefix}"'_host_=${var__host_:-}' eval "${prefix}"'_host_=${var__host_:-}'
eval "${prefix}"'_user_=${var__user_:-}' eval "${prefix}"'_user_=${var__user_:-}'
eval "${prefix}"'_port_=${var__port_:-}' eval "${prefix}"'_port_=${var__port_:-}'
eval "${prefix}"'app=${var_app:-false}'; eval "${prefix}"'new=${var_new:-false}' eval "${prefix}"'app=${var_app:-false}'; eval "${prefix}"'new=${var_new:-false}'
@ -261,13 +263,13 @@ eval "${prefix}"'init=${var_init:-false}'
eval "${prefix}"'apps=${var_apps:-false}' eval "${prefix}"'apps=${var_apps:-false}'
eval "${prefix}"'upgrade=${var_upgrade:-false}'; local docopt_i=1 eval "${prefix}"'upgrade=${var_upgrade:-false}'; local docopt_i=1
[[ $BASH_VERSION =~ ^4.3 ]] && docopt_i=2; for ((;docopt_i>0;docopt_i--)); do [[ $BASH_VERSION =~ ^4.3 ]] && docopt_i=2; for ((;docopt_i>0;docopt_i--)); do
declare -p "${prefix}__help" "${prefix}__env" "${prefix}__version" \ declare -p "${prefix}__help" "${prefix}__env" "${prefix}__stack" \
"${prefix}__stack" "${prefix}__server" "${prefix}__domain" "${prefix}__pass" \ "${prefix}__version" "${prefix}__server" "${prefix}__domain" "${prefix}__pass" \
"${prefix}__auto" "${prefix}__status" "${prefix}__force" "${prefix}__user" \ "${prefix}__auto" "${prefix}__status" "${prefix}__force" "${prefix}__no_tty" \
"${prefix}__all" "${prefix}_app_" "${prefix}_domain_" "${prefix}_service_" \ "${prefix}__user" "${prefix}__all" "${prefix}_app_" "${prefix}_domain_" \
"${prefix}_src_" "${prefix}_dst_" "${prefix}_args_" "${prefix}_secret_" \ "${prefix}_service_" "${prefix}_src_" "${prefix}_dst_" "${prefix}_args_" \
"${prefix}_version_" "${prefix}_cmd_" "${prefix}_data_" "${prefix}_command_" \ "${prefix}_secret_" "${prefix}_version_" "${prefix}_cmd_" "${prefix}_data_" \
"${prefix}_arg_" "${prefix}_host_" "${prefix}_user_" "${prefix}_port_" \ "${prefix}_command_" "${prefix}_host_" "${prefix}_user_" "${prefix}_port_" \
"${prefix}app" "${prefix}new" "${prefix}list" "${prefix}ls" "${prefix}deploy" \ "${prefix}app" "${prefix}new" "${prefix}list" "${prefix}ls" "${prefix}deploy" \
"${prefix}undeploy" "${prefix}config" "${prefix}delete" "${prefix}rm" \ "${prefix}undeploy" "${prefix}config" "${prefix}delete" "${prefix}rm" \
"${prefix}logs" "${prefix}multilogs" "${prefix}cp" "${prefix}check" \ "${prefix}logs" "${prefix}multilogs" "${prefix}cp" "${prefix}check" \
@ -800,6 +802,12 @@ sub_app_run(){
RUN_USER="-u $abra___user" RUN_USER="-u $abra___user"
fi fi
if [ "$abra___no_tty" = "true" ]; then
ARGS="-i"
else
ARGS="-it"
fi
CONTAINER=$(docker container ls --format "table {{.ID}},{{.Names}}" \ CONTAINER=$(docker container ls --format "table {{.ID}},{{.Names}}" \
| grep "${STACK_NAME}_${abra__service_}" | head -n1 | cut -d',' -f1) | grep "${STACK_NAME}_${abra__service_}" | head -n1 | cut -d',' -f1)
@ -811,7 +819,7 @@ sub_app_run(){
# 3wc: we want the "splitting" that shellcheck warns us about, so that -u and # 3wc: we want the "splitting" that shellcheck warns us about, so that -u and
# $RUN_USER aren't treated as a single argument: # $RUN_USER aren't treated as a single argument:
# shellcheck disable=SC2086 # shellcheck disable=SC2086
docker exec $RUN_USER -it "$CONTAINER" "$@" docker exec $RUN_USER $ARGS "$CONTAINER" "$@"
return return
} }
@ -1003,7 +1011,7 @@ abra() {
abra__secret_ abra__version_ abra__data_ abra___user abra__host_ \ abra__secret_ abra__version_ abra__data_ abra___user abra__host_ \
abra__app_ abra__port_ abra__user_ abra__service_ abra__src_ abra__dst_ \ abra__app_ abra__port_ abra__user_ abra__service_ abra__src_ abra__dst_ \
abra__domain_ abra___server abra___domain abra___force abra___pass \ abra__domain_ abra___server abra___domain abra___force abra___pass \
abra___auto abra___status abra___auto abra___status abra___no_tty
if ! type tput > /dev/null 2>&1; then if ! type tput > /dev/null 2>&1; then
tput() { tput() {