From 959c51eb50925ad152bbbe98b56de59bdf72886b Mon Sep 17 00:00:00 2001 From: Michael Hobbs Date: Sat, 7 Feb 2015 10:57:30 -0800 Subject: [PATCH] refactor function defs to be posix-like. remove usage of force positional argument in tests. support --force like arguments in client" --- contrib/dokku_client.sh | 29 ++++++++++++++++++++++------- dokku | 2 +- plugins/checks/check-deploy | 2 +- plugins/common/functions | 20 ++++++++++---------- tests/unit/apps.bats | 2 +- tests/unit/client.bats | 4 ++-- 6 files changed, 37 insertions(+), 22 deletions(-) diff --git a/contrib/dokku_client.sh b/contrib/dokku_client.sh index b899a9af1..cf5e40c18 100755 --- a/contrib/dokku_client.sh +++ b/contrib/dokku_client.sh @@ -4,7 +4,7 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x MOVES=(ABLE ABNORMA AGAIN AIREXPL ANG ANGER ASAIL ATTACK AURORA AWL BAN BAND BARE BEAT BEATED BELLY BIND BITE BLOC BLOOD BODY BOOK BREATH BUMP CAST CHAM CLAMP CLAP CLAW CLEAR CLI CLIP CLOUD CONTRO CONVY COOLHIT CRASH CRY CUT DESCRI D-FIGHT DIG DITCH DIV DOZ DRE DUL DU-PIN DYE EARTH EDU EG-BOMB EGG ELEGY ELE-HIT EMBODY EMPLI ENGL ERUPT EVENS EXPLOR EYES FALL FAST F-CAR F-DANCE FEARS F-FIGHT FIGHT FIR FIRE FIREHIT FLAME FLAP FLASH FLEW FORCE FRA FREEZE FROG G-BIRD GENKISS GIFT G-KISS G-MOUSE GRADE GROW HAMMER HARD HAT HATE H-BOMB HELL-R HEMP HINT HIT HU HUNT HYPNOSI INHA IRO IRONBAR IR-WING J-GUN KEE KICK KNIF KNIFE KNOCK LEVEL LIGH LIGHHIT LIGHT LIVE L-WALL MAD MAJUS MEL MELO MESS MILK MIMI MISS MIXING MOVE MUD NI-BED NOISY NOONLI NULL N-WAVE PAT PEACE PIN PLAN PLANE POIS POL POWDE POWE POWER PRIZE PROTECT PROUD RAGE RECOR REFLAC REFREC REGR RELIV RENEW R-FIGHT RING RKICK ROCK ROUND RUS RUSH SAND SAW SCISSOR SCRA SCRIPT SEEN SERVER SHADOW SHELL SHINE SHO SIGHT SIN SMALL SMELT SMOK SNAKE SNO SNOW SOU SO-WAVE SPAR SPEC SPID S-PIN SPRA STAM STARE STEA STONE STORM STRU STRUG STUDEN SUBS SUCID SUN-LIG SUNRIS SUPLY S-WAVE TAILS TANGL TASTE TELLI THANK TONKICK TOOTH TORL TRAIN TRIKICK TUNGE VOLT WA-GUN WATCH WAVE W-BOMB WFALL WFING WHIP WHIRL WIND WOLF WOOD WOR YUJA) NAMES=(SEED GRASS FLOWE SHAD CABR SNAKE GOLD COW GUIKI PEDAL DELAN B-FLY BIDE KEYU FORK LAP PIGE PIJIA CAML LAT BIRD BABOO VIV ABOKE PIKAQ RYE SAN BREAD LIDEL LIDE PIP PIKEX ROK JUGEN PUD BUDE ZHIB GELU GRAS FLOW LAFUL ATH BALA CORN MOLUF DESP DAKED MIMI BOLUX KODA GELUD MONK SUMOY GEDI WENDI NILEM NILE NILEC KEZI YONGL HUDE WANLI GELI GUAIL MADAQ WUCI WUCI MUJEF JELLY SICIB GELU NELUO BOLI JIALE YED YEDE CLO SCARE AOCO DEDE DEDEI BAWU JIUG BADEB BADEB HOLE BALUX GES FANT QUAR YIHE SWAB SLIPP CLU DEPOS BILIY YUANO SOME NO YELA EMPT ZECUN XIAHE BOLEL DEJI MACID XIHON XITO LUCK MENJI GELU DECI XIDE DASAJ DONGN RICUL MINXI BALIY ZENDA LUZEL HELE5 0FENB KAIL JIAND CARP JINDE LAPU MUDE YIFU LINLI SANDI HUSI JINC OUMU OUMUX CAP KUIZA PUD TIAO FRMAN CLAU SPARK DRAGO BOLIU GUAIL MIYOU MIY QIAOK BEIL MUKEI RIDED MADAM BAGEP CROC ALIGE OUDAL OUD DADA HEHE YEDEA NUXI NUXIN ROUY ALIAD STICK QIANG LAAND PIQI PI PUPI DEKE DEKEJ NADI NADIO MALI PEA ELECT FLOWE MAL MALI HUSHU NILEE YUZI POPOZ DUZI HEBA XIAN SHAN YEYEA WUY LUO KEFE HULA CROW YADEH MOW ANNAN SUONI KYLI HULU HUDEL YEHE GULAE YEHE BLU GELAN BOAT NIP POIT HELAK XINL BEAR LINB MAGEH MAGEJ WULI YIDE RIVE FISH AOGU DELIE MANTE KONMU DELU HELU HUAN HUMA DONGF JINCA HEDE DEFU LIBY JIAPA MEJI HELE BUHU MILK HABI THUN GARD DON YANGQ SANAQ BANQ LUJ PHIX SIEI EGG) -function random_number() { +random_number() { [[ -n "$1" ]] && RANGE="$1" if [[ -n "$RANGE" ]];then number=$RANDOM @@ -15,7 +15,7 @@ function random_number() { echo $number } -function random_name() { +random_name() { NUM1=$(random_number ${#MOVES[@]}) NUM2=$(random_number ${#MOVES[@]}) NUM3=$(random_number ${#NAMES[@]}) @@ -27,7 +27,7 @@ function random_name() { echo "$lower_appname" } -function client_help_msg() { +client_help_msg() { echo "==> Configure the DOKKU_HOST environment variable or run $0 from a repository with a git remote named dokku" echo "--> i.e. git remote add dokku dokku@:" exit 20 # exit with specific status. only used in units tests for now @@ -42,7 +42,7 @@ if [[ -z $DOKKU_HOST ]]; then fi if [[ ! -z $DOKKU_HOST ]]; then - function _dokku { + _dokku() { appname="" if [[ -d .git ]] || git rev-parse --git-dir > /dev/null 2>&1; then set +e @@ -98,9 +98,24 @@ if [[ ! -z $DOKKU_HOST ]]; then exit $? fi - [[ -z "$verb" ]] && verb=$1 - shift - ssh "dokku@$DOKKU_HOST" "$verb" "$appname" "$@" + if [[ -z "$verb" ]]; then + if [[ ! "$1" =~ --* ]]; then + verb=$1 + shift + args="$@" + else + long_args="--" + for arg in "$@";do + if [[ "$arg" =~ --* ]];then + long_args+=" $arg" + args=(${args[@]/$arg}) + else + verb="$arg" + fi + done + fi + fi + ssh "dokku@$DOKKU_HOST" $long_args "$verb" "$appname" "$args" } if [[ "$0" == "dokku" ]] || [[ "$0" == *dokku_client.sh ]]; then diff --git a/dokku b/dokku index a2a6a59f5..4589c3c0c 100755 --- a/dokku +++ b/dokku @@ -116,7 +116,7 @@ case "$1" in echo $ipaddr > "$DOKKU_ROOT/$APP/IP" # if we can't post-deploy successfully, kill new container - function kill_new { + kill_new() { docker inspect $id &> /dev/null && docker kill $id > /dev/null trap - INT TERM EXIT kill -9 $$ diff --git a/plugins/checks/check-deploy b/plugins/checks/check-deploy index ff82af9c5..5e0105f3a 100755 --- a/plugins/checks/check-deploy +++ b/plugins/checks/check-deploy @@ -40,7 +40,7 @@ if [[ ! -f "$FILENAME" ]] ; then echo " CHECKS file found in container" FILENAME=${TMPDIR}/CHECKS - function cleanup() { + cleanup() { echo " removing CHECKS file copied from container" rm -rf $TMPDIR } diff --git a/plugins/common/functions b/plugins/common/functions index ec398033a..121eeddaa 100644 --- a/plugins/common/functions +++ b/plugins/common/functions @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x -function has_tty() { +has_tty() { if [[ "$(/usr/bin/tty || true)" == "not a tty" ]]; then return 1 else @@ -9,15 +9,15 @@ function has_tty() { fi } -function dokku_log_info1() { +dokku_log_info1() { echo "-----> $@" } -function dokku_log_info2() { +dokku_log_info2() { echo "=====> $@" } -function dokku_log_info1_quiet() { +dokku_log_info1_quiet() { if [[ -z "$DOKKU_QUIET_OUTPUT" ]];then echo "-----> $@" else @@ -25,7 +25,7 @@ function dokku_log_info1_quiet() { fi } -function dokku_log_info2_quiet() { +dokku_log_info2_quiet() { if [[ -z "$DOKKU_QUIET_OUTPUT" ]];then echo "=====> $@" else @@ -33,26 +33,26 @@ function dokku_log_info2_quiet() { fi } -function dokku_log_verbose() { +dokku_log_verbose() { echo " $@" } -function dokku_log_warn() { +dokku_log_warn() { echo " ! $@" } -function dokku_log_fail() { +dokku_log_fail() { echo "$@" 1>&2 exit 1 } -function verify_app_name() { +verify_app_name() { local APP="$1" [[ ! -d "$DOKKU_ROOT/$APP" ]] && dokku_log_fail "App $APP does not exist" return 0 } -function parse_args() { +parse_args() { for arg in "$@"; do case "$arg" in --quiet|-q) diff --git a/tests/unit/apps.bats b/tests/unit/apps.bats index a33953a84..361ad9fba 100755 --- a/tests/unit/apps.bats +++ b/tests/unit/apps.bats @@ -19,7 +19,7 @@ APP=lifecycle-app } @test "apps:destroy" { - run bash -c "echo $APP | dokku apps:destroy $APP" + run bash -c "dokku --force apps:destroy $APP" echo "output: "$output echo "status: "$status assert_success diff --git a/tests/unit/client.bats b/tests/unit/client.bats index 6335b9aa3..fb12fe349 100644 --- a/tests/unit/client.bats +++ b/tests/unit/client.bats @@ -36,7 +36,7 @@ teardown() { } @test "dokku client (apps:destroy)" { - run ./contrib/dokku_client.sh apps:destroy $TEST_APP force + run ./contrib/dokku_client.sh -- --force apps:destroy $TEST_APP echo "output: "$output echo "status: "$status assert_success @@ -171,7 +171,7 @@ teardown() { echo "output: "$output echo "status: "$status assert_success - run bash -c "${BATS_TEST_DIRNAME}/../../contrib/dokku_client.sh apps:destroy force" + run bash -c "echo ${BATS_TEST_DIRNAME}/../../contrib/dokku_client.sh --force apps:destroy" echo "output: "$output echo "status: "$status assert_success