(List (Com {[LIT_CHARS set]} {[LIT_CHARS -eo]} {[LIT_CHARS pipefail]} ) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_n {[VarSub DOKKU_TRACE]}}) (Com {[LIT_CHARS set]} {[LIT_CHARS -x]} ) ) (= scope= flags=0 words=[] bindings=[('MOVES', {[Array {[LIT_CHARS ABLE]} {[LIT_CHARS ABNORMA]} {[LIT_CHARS AGAIN]} {[LIT_CHARS AIREXPL]} {[LIT_CHARS ANG]} {[LIT_CHARS ANGER]} {[LIT_CHARS ASAIL]} {[LIT_CHARS ATTACK]} {[LIT_CHARS AURORA]} {[LIT_CHARS AWL]} {[LIT_CHARS BAN]} {[LIT_CHARS BAND]} {[LIT_CHARS BARE]} {[LIT_CHARS BEAT]} {[LIT_CHARS BEATED]} {[LIT_CHARS BELLY]} {[LIT_CHARS BIND]} {[LIT_CHARS BITE]} {[LIT_CHARS BLOC]} {[LIT_CHARS BLOOD]} {[LIT_CHARS BODY]} {[LIT_CHARS BOOK]} {[LIT_CHARS BREATH]} {[LIT_CHARS BUMP]} {[LIT_CHARS CAST]} {[LIT_CHARS CHAM]} {[LIT_CHARS CLAMP]} {[LIT_CHARS CLAP]} {[LIT_CHARS CLAW]} {[LIT_CHARS CLEAR]} {[LIT_CHARS CLI]} {[LIT_CHARS CLIP]} {[LIT_CHARS CLOUD]} {[LIT_CHARS CONTRO]} {[LIT_CHARS CONVY]} {[LIT_CHARS COOLHIT]} {[LIT_CHARS CRASH]} {[LIT_CHARS CRY]} {[LIT_CHARS CUT]} {[LIT_CHARS DESCRI]} {[LIT_CHARS D-FIGHT]} {[LIT_CHARS DIG]} {[LIT_CHARS DITCH]} {[LIT_CHARS DIV]} {[LIT_CHARS DOZ]} {[LIT_CHARS DRE]} {[LIT_CHARS DUL]} {[LIT_CHARS DU-PIN]} {[LIT_CHARS DYE]} {[LIT_CHARS EARTH]} {[LIT_CHARS EDU]} {[LIT_CHARS EG-BOMB]} {[LIT_CHARS EGG]} {[LIT_CHARS ELEGY]} {[LIT_CHARS ELE-HIT]} {[LIT_CHARS EMBODY]} {[LIT_CHARS EMPLI]} {[LIT_CHARS ENGL]} {[LIT_CHARS ERUPT]} {[LIT_CHARS EVENS]} {[LIT_CHARS EXPLOR]} {[LIT_CHARS EYES]} {[LIT_CHARS FALL]} {[LIT_CHARS FAST]} {[LIT_CHARS F-CAR]} {[LIT_CHARS F-DANCE]} {[LIT_CHARS FEARS]} {[LIT_CHARS F-FIGHT]} {[LIT_CHARS FIGHT]} {[LIT_CHARS FIR]} {[LIT_CHARS FIRE]} {[LIT_CHARS FIREHIT]} {[LIT_CHARS FLAME]} {[LIT_CHARS FLAP]} {[LIT_CHARS FLASH]} {[LIT_CHARS FLEW]} {[LIT_CHARS FORCE]} {[LIT_CHARS FRA]} {[LIT_CHARS FREEZE]} {[LIT_CHARS FROG]} {[LIT_CHARS G-BIRD]} {[LIT_CHARS GENKISS]} {[LIT_CHARS GIFT]} {[LIT_CHARS G-KISS]} {[LIT_CHARS G-MOUSE]} {[LIT_CHARS GRADE]} {[LIT_CHARS GROW]} {[LIT_CHARS HAMMER]} {[LIT_CHARS HARD]} {[LIT_CHARS HAT]} {[LIT_CHARS HATE]} {[LIT_CHARS H-BOMB]} {[LIT_CHARS HELL-R]} {[LIT_CHARS HEMP]} {[LIT_CHARS HINT]} {[LIT_CHARS HIT]} {[LIT_CHARS HU]} {[LIT_CHARS HUNT]} {[LIT_CHARS HYPNOSI]} {[LIT_CHARS INHA]} {[LIT_CHARS IRO]} {[LIT_CHARS IRONBAR]} {[LIT_CHARS IR-WING]} {[LIT_CHARS J-GUN]} {[LIT_CHARS KEE]} {[LIT_CHARS KICK]} {[LIT_CHARS KNIF]} {[LIT_CHARS KNIFE]} {[LIT_CHARS KNOCK]} {[LIT_CHARS LEVEL]} {[LIT_CHARS LIGH]} {[LIT_CHARS LIGHHIT]} {[LIT_CHARS LIGHT]} {[LIT_CHARS LIVE]} {[LIT_CHARS L-WALL]} {[LIT_CHARS MAD]} {[LIT_CHARS MAJUS]} {[LIT_CHARS MEL]} {[LIT_CHARS MELO]} {[LIT_CHARS MESS]} {[LIT_CHARS MILK]} {[LIT_CHARS MIMI]} {[LIT_CHARS MISS]} {[LIT_CHARS MIXING]} {[LIT_CHARS MOVE]} {[LIT_CHARS MUD]} {[LIT_CHARS NI-BED]} {[LIT_CHARS NOISY]} {[LIT_CHARS NOONLI]} {[LIT_CHARS NULL]} {[LIT_CHARS N-WAVE]} {[LIT_CHARS PAT]} {[LIT_CHARS PEACE]} {[LIT_CHARS PIN]} {[LIT_CHARS PLAN]} {[LIT_CHARS PLANE]} {[LIT_CHARS POIS]} {[LIT_CHARS POL]} {[LIT_CHARS POWDE]} {[LIT_CHARS POWE]} {[LIT_CHARS POWER]} {[LIT_CHARS PRIZE]} {[LIT_CHARS PROTECT]} {[LIT_CHARS PROUD]} {[LIT_CHARS RAGE]} {[LIT_CHARS RECOR]} {[LIT_CHARS REFLAC]} {[LIT_CHARS REFREC]} {[LIT_CHARS REGR]} {[LIT_CHARS RELIV]} {[LIT_CHARS RENEW]} {[LIT_CHARS R-FIGHT]} {[LIT_CHARS RING]} {[LIT_CHARS RKICK]} {[LIT_CHARS ROCK]} {[LIT_CHARS ROUND]} {[LIT_CHARS RUS]} {[LIT_CHARS RUSH]} {[LIT_CHARS SAND]} {[LIT_CHARS SAW]} {[LIT_CHARS SCISSOR]} {[LIT_CHARS SCRA]} {[LIT_CHARS SCRIPT]} {[LIT_CHARS SEEN]} {[LIT_CHARS SERVER]} {[LIT_CHARS SHADOW]} {[LIT_CHARS SHELL]} {[LIT_CHARS SHINE]} {[LIT_CHARS SHO]} {[LIT_CHARS SIGHT]} {[LIT_CHARS SIN]} {[LIT_CHARS SMALL]} {[LIT_CHARS SMELT]} {[LIT_CHARS SMOK]} {[LIT_CHARS SNAKE]} {[LIT_CHARS SNO]} {[LIT_CHARS SNOW]} {[LIT_CHARS SOU]} {[LIT_CHARS SO-WAVE]} {[LIT_CHARS SPAR]} {[LIT_CHARS SPEC]} {[LIT_CHARS SPID]} {[LIT_CHARS S-PIN]} {[LIT_CHARS SPRA]} {[LIT_CHARS STAM]} {[LIT_CHARS STARE]} {[LIT_CHARS STEA]} {[LIT_CHARS STONE]} {[LIT_CHARS STORM]} {[LIT_CHARS STRU]} {[LIT_CHARS STRUG]} {[LIT_CHARS STUDEN]} {[LIT_CHARS SUBS]} {[LIT_CHARS SUCID]} {[LIT_CHARS SUN-LIG]} {[LIT_CHARS SUNRIS]} {[LIT_CHARS SUPLY]} {[LIT_CHARS S-WAVE]} {[LIT_CHARS TAILS]} {[LIT_CHARS TANGL]} {[LIT_CHARS TASTE]} {[LIT_CHARS TELLI]} {[LIT_CHARS THANK]} {[LIT_CHARS TONKICK]} {[LIT_CHARS TOOTH]} {[LIT_CHARS TORL]} {[LIT_CHARS TRAIN]} {[LIT_CHARS TRIKICK]} {[LIT_CHARS TUNGE]} {[LIT_CHARS VOLT]} {[LIT_CHARS WA-GUN]} {[LIT_CHARS WATCH]} {[LIT_CHARS WAVE]} {[LIT_CHARS W-BOMB]} {[LIT_CHARS WFALL]} {[LIT_CHARS WFING]} {[LIT_CHARS WHIP]} {[LIT_CHARS WHIRL]} {[LIT_CHARS WIND]} {[LIT_CHARS WOLF]} {[LIT_CHARS WOOD]} {[LIT_CHARS WOR]} {[LIT_CHARS YUJA]}]})]) (= scope= flags=0 words=[] bindings=[('NAMES', {[Array {[LIT_CHARS SEED]} {[LIT_CHARS GRASS]} {[LIT_CHARS FLOWE]} {[LIT_CHARS SHAD]} {[LIT_CHARS CABR]} {[LIT_CHARS SNAKE]} {[LIT_CHARS GOLD]} {[LIT_CHARS COW]} {[LIT_CHARS GUIKI]} {[LIT_CHARS PEDAL]} {[LIT_CHARS DELAN]} {[LIT_CHARS B-FLY]} {[LIT_CHARS BIDE]} {[LIT_CHARS KEYU]} {[LIT_CHARS FORK]} {[LIT_CHARS LAP]} {[LIT_CHARS PIGE]} {[LIT_CHARS PIJIA]} {[LIT_CHARS CAML]} {[LIT_CHARS LAT]} {[LIT_CHARS BIRD]} {[LIT_CHARS BABOO]} {[LIT_CHARS VIV]} {[LIT_CHARS ABOKE]} {[LIT_CHARS PIKAQ]} {[LIT_CHARS RYE]} {[LIT_CHARS SAN]} {[LIT_CHARS BREAD]} {[LIT_CHARS LIDEL]} {[LIT_CHARS LIDE]} {[LIT_CHARS PIP]} {[LIT_CHARS PIKEX]} {[LIT_CHARS ROK]} {[LIT_CHARS JUGEN]} {[LIT_CHARS PUD]} {[LIT_CHARS BUDE]} {[LIT_CHARS ZHIB]} {[LIT_CHARS GELU]} {[LIT_CHARS GRAS]} {[LIT_CHARS FLOW]} {[LIT_CHARS LAFUL]} {[LIT_CHARS ATH]} {[LIT_CHARS BALA]} {[LIT_CHARS CORN]} {[LIT_CHARS MOLUF]} {[LIT_CHARS DESP]} {[LIT_CHARS DAKED]} {[LIT_CHARS MIMI]} {[LIT_CHARS BOLUX]} {[LIT_CHARS KODA]} {[LIT_CHARS GELUD]} {[LIT_CHARS MONK]} {[LIT_CHARS SUMOY]} {[LIT_CHARS GEDI]} {[LIT_CHARS WENDI]} {[LIT_CHARS NILEM]} {[LIT_CHARS NILE]} {[LIT_CHARS NILEC]} {[LIT_CHARS KEZI]} {[LIT_CHARS YONGL]} {[LIT_CHARS HUDE]} {[LIT_CHARS WANLI]} {[LIT_CHARS GELI]} {[LIT_CHARS GUAIL]} {[LIT_CHARS MADAQ]} {[LIT_CHARS WUCI]} {[LIT_CHARS WUCI]} {[LIT_CHARS MUJEF]} {[LIT_CHARS JELLY]} {[LIT_CHARS SICIB]} {[LIT_CHARS GELU]} {[LIT_CHARS NELUO]} {[LIT_CHARS BOLI]} {[LIT_CHARS JIALE]} {[LIT_CHARS YED]} {[LIT_CHARS YEDE]} {[LIT_CHARS CLO]} {[LIT_CHARS SCARE]} {[LIT_CHARS AOCO]} {[LIT_CHARS DEDE]} {[LIT_CHARS DEDEI]} {[LIT_CHARS BAWU]} {[LIT_CHARS JIUG]} {[LIT_CHARS BADEB]} {[LIT_CHARS BADEB]} {[LIT_CHARS HOLE]} {[LIT_CHARS BALUX]} {[LIT_CHARS GES]} {[LIT_CHARS FANT]} {[LIT_CHARS QUAR]} {[LIT_CHARS YIHE]} {[LIT_CHARS SWAB]} {[LIT_CHARS SLIPP]} {[LIT_CHARS CLU]} {[LIT_CHARS DEPOS]} {[LIT_CHARS BILIY]} {[LIT_CHARS YUANO]} {[LIT_CHARS SOME]} {[LIT_CHARS NO]} {[LIT_CHARS YELA]} {[LIT_CHARS EMPT]} {[LIT_CHARS ZECUN]} {[LIT_CHARS XIAHE]} {[LIT_CHARS BOLEL]} {[LIT_CHARS DEJI]} {[LIT_CHARS MACID]} {[LIT_CHARS XIHON]} {[LIT_CHARS XITO]} {[LIT_CHARS LUCK]} {[LIT_CHARS MENJI]} {[LIT_CHARS GELU]} {[LIT_CHARS DECI]} {[LIT_CHARS XIDE]} {[LIT_CHARS DASAJ]} {[LIT_CHARS DONGN]} {[LIT_CHARS RICUL]} {[LIT_CHARS MINXI]} {[LIT_CHARS BALIY]} {[LIT_CHARS ZENDA]} {[LIT_CHARS LUZEL]} {[LIT_CHARS HELE5]} {[LIT_CHARS 0FENB]} {[LIT_CHARS KAIL]} {[LIT_CHARS JIAND]} {[LIT_CHARS CARP]} {[LIT_CHARS JINDE]} {[LIT_CHARS LAPU]} {[LIT_CHARS MUDE]} {[LIT_CHARS YIFU]} {[LIT_CHARS LINLI]} {[LIT_CHARS SANDI]} {[LIT_CHARS HUSI]} {[LIT_CHARS JINC]} {[LIT_CHARS OUMU]} {[LIT_CHARS OUMUX]} {[LIT_CHARS CAP]} {[LIT_CHARS KUIZA]} {[LIT_CHARS PUD]} {[LIT_CHARS TIAO]} {[LIT_CHARS FRMAN]} {[LIT_CHARS CLAU]} {[LIT_CHARS SPARK]} {[LIT_CHARS DRAGO]} {[LIT_CHARS BOLIU]} {[LIT_CHARS GUAIL]} {[LIT_CHARS MIYOU]} {[LIT_CHARS MIY]} {[LIT_CHARS QIAOK]} {[LIT_CHARS BEIL]} {[LIT_CHARS MUKEI]} {[LIT_CHARS RIDED]} {[LIT_CHARS MADAM]} {[LIT_CHARS BAGEP]} {[LIT_CHARS CROC]} {[LIT_CHARS ALIGE]} {[LIT_CHARS OUDAL]} {[LIT_CHARS OUD]} {[LIT_CHARS DADA]} {[LIT_CHARS HEHE]} {[LIT_CHARS YEDEA]} {[LIT_CHARS NUXI]} {[LIT_CHARS NUXIN]} {[LIT_CHARS ROUY]} {[LIT_CHARS ALIAD]} {[LIT_CHARS STICK]} {[LIT_CHARS QIANG]} {[LIT_CHARS LAAND]} {[LIT_CHARS PIQI]} {[LIT_CHARS PI]} {[LIT_CHARS PUPI]} {[LIT_CHARS DEKE]} {[LIT_CHARS DEKEJ]} {[LIT_CHARS NADI]} {[LIT_CHARS NADIO]} {[LIT_CHARS MALI]} {[LIT_CHARS PEA]} {[LIT_CHARS ELECT]} {[LIT_CHARS FLOWE]} {[LIT_CHARS MAL]} {[LIT_CHARS MALI]} {[LIT_CHARS HUSHU]} {[LIT_CHARS NILEE]} {[LIT_CHARS YUZI]} {[LIT_CHARS POPOZ]} {[LIT_CHARS DUZI]} {[LIT_CHARS HEBA]} {[LIT_CHARS XIAN]} {[LIT_CHARS SHAN]} {[LIT_CHARS YEYEA]} {[LIT_CHARS WUY]} {[LIT_CHARS LUO]} {[LIT_CHARS KEFE]} {[LIT_CHARS HULA]} {[LIT_CHARS CROW]} {[LIT_CHARS YADEH]} {[LIT_CHARS MOW]} {[LIT_CHARS ANNAN]} {[LIT_CHARS SUONI]} {[LIT_CHARS KYLI]} {[LIT_CHARS HULU]} {[LIT_CHARS HUDEL]} {[LIT_CHARS YEHE]} {[LIT_CHARS GULAE]} {[LIT_CHARS YEHE]} {[LIT_CHARS BLU]} {[LIT_CHARS GELAN]} {[LIT_CHARS BOAT]} {[LIT_CHARS NIP]} {[LIT_CHARS POIT]} {[LIT_CHARS HELAK]} {[LIT_CHARS XINL]} {[LIT_CHARS BEAR]} {[LIT_CHARS LINB]} {[LIT_CHARS MAGEH]} {[LIT_CHARS MAGEJ]} {[LIT_CHARS WULI]} {[LIT_CHARS YIDE]} {[LIT_CHARS RIVE]} {[LIT_CHARS FISH]} {[LIT_CHARS AOGU]} {[LIT_CHARS DELIE]} {[LIT_CHARS MANTE]} {[LIT_CHARS KONMU]} {[LIT_CHARS DELU]} {[LIT_CHARS HELU]} {[LIT_CHARS HUAN]} {[LIT_CHARS HUMA]} {[LIT_CHARS DONGF]} {[LIT_CHARS JINCA]} {[LIT_CHARS HEDE]} {[LIT_CHARS DEFU]} {[LIT_CHARS LIBY]} {[LIT_CHARS JIAPA]} {[LIT_CHARS MEJI]} {[LIT_CHARS HELE]} {[LIT_CHARS BUHU]} {[LIT_CHARS MILK]} {[LIT_CHARS HABI]} {[LIT_CHARS THUN]} {[LIT_CHARS GARD]} {[LIT_CHARS DON]} {[LIT_CHARS YANGQ]} {[LIT_CHARS SANAQ]} {[LIT_CHARS BANQ]} {[LIT_CHARS LUJ]} {[LIT_CHARS PHIX]} {[LIT_CHARS SIEI]} {[LIT_CHARS EGG]}]})]) (FunctionDef random_number [] (List (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_n {[DQ [VarSub 1]]}}) (= scope= flags=0 words=[] bindings=[('RANGE', {[DQ [VarSub 1]]})]) ) (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub RANGE]]}}) (List (= scope= flags=0 words=[] bindings=[('number', {[VarSub RANDOM]})]) (Com {[LIT_CHARS let]} {[DQ [LIT_CHARS "number %= "][VarSub RANGE]]} ) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('number', {[VarSub RANDOM]})]) ) (Com {[LIT_CHARS echo]} {[VarSub number]} ) ) ) (FunctionDef random_name [] (List (= scope= flags=0 words=[] bindings=[('NUM1', {[ComSub (Com {[LIT_CHARS random_number]} {[VarSub MOVES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]})]})]) (= scope= flags=0 words=[] bindings=[('NUM2', {[ComSub (Com {[LIT_CHARS random_number]} {[VarSub MOVES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]})]})]) (= scope= flags=0 words=[] bindings=[('NUM3', {[ComSub (Com {[LIT_CHARS random_number]} {[VarSub NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]})]})]) (= scope= flags=0 words=[] bindings=[('UPPER_APPNAME', {[DQ [VarSub MOVES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub NUM1]}})][LIT_CHARS -][VarSub MOVES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub NUM2]}})][LIT_CHARS -][VarSub NAMES bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub NUM3]}})]]})]) (AndOr OP_AND_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub BASH_VERSION]]} {[LIT_CHARS 4.] [LIT_OTHER "*"]}}) (= scope= flags=0 words=[] bindings=[('lower_appname', {[VarSub UPPER_APPNAME transform_ops=[VS_UNARY_DCOMMA {}]]})]) ) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_z {[DQ [VarSub lower_appname]]}}) (= scope= flags=0 words=[] bindings=[('lower_appname', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub UPPER_APPNAME]]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) )]})]) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub lower_appname]]} ) ) ) (FunctionDef client_help_msg [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "==> Configure the DOKKU_HOST environment variable or run "][VarSub 0][LIT_CHARS " from a repository with a git remote named dokku"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "--> i.e. git remote add dokku dokku@:"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 20]} ) ) ) (FunctionDef is_git_repo [] (List (Fork (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} ) ) (Com < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) ) (FunctionDef has_dokku_remote [] (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS remote]} {[LIT_CHARS show]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS dokku]} ) ) ) (If (DBracket {B1 UNARY_STRING_z {[VarSub DOKKU_HOST]}}) (If (AndOr OP_OR_IF (DBracket {B1 UNARY_FILE_d {[LIT_CHARS .git]}}) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --git-dir]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) (= scope= flags=0 words=[] bindings=[('DOKKU_HOST', {[ComSub (AndOr OP_OR_IF (Pipeline (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS remote]} {[LIT_CHARS -v]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -Ei]} {[DQ [LIT_CHARS "^dokku"]]}) (Com {[LIT_CHARS head]} {[LIT_CHARS -n]} {[LIT_CHARS 1]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f1]} {[LIT_CHARS -d] [SQ ]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f2]} {[LIT_CHARS -d]} {[SQ ]}) (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS cut]} {[LIT_CHARS -f1]} {[LIT_CHARS -d] [SQ ]}) ) (Com {[LIT_CHARS true]}) )]})]) (ElseTrue) (Com {[LIT_CHARS client_help_msg]} ) ) ) (= scope= flags=1 words=[] bindings=[('DOKKU_PORT', {[VarSub DOKKU_PORT test_op=VS_TEST_COLON_EQUALS {[LIT_CHARS 22]}]})]) (If (DBracket {B! {B1 UNARY_STRING_z {[VarSub DOKKU_HOST]}}}) (List (FunctionDef _dokku [] (List (= scope= flags=0 words=[] bindings=[('appname', {[DQ ]})]) (If (AndOr OP_OR_IF (DBracket {B1 UNARY_FILE_d {[LIT_CHARS .git]}}) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --git-dir]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) (List (Com {[LIT_CHARS set]} {[LIT_OTHER "+"] [LIT_CHARS e]} ) (= scope= flags=0 words=[] bindings=[('appname', {[ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS remote]} {[LIT_CHARS -v]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -Ei]} {[DQ [LIT_CHARS "dokku@"][VarSub DOKKU_HOST]]}) (Com {[LIT_CHARS head]} {[LIT_CHARS -n]} {[LIT_CHARS 1]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f2]} {[LIT_CHARS -d] [SQ ]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f1]} {[LIT_CHARS -d] [SQ ]}) (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS cut]} {[LIT_CHARS -f2]} {[LIT_CHARS -d] [SQ ]}) )]})]) (Com {[LIT_CHARS set]} {[LIT_CHARS -e]} ) ) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "This is not a git repository"]]} ) ) (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS apps] [LIT_OTHER ":"] [LIT_CHARS create]}], [{[LIT_CHARS apps] [LIT_OTHER ":"] [LIT_CHARS destroy]}]] (List (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub 2]]}}) (List (= scope= flags=0 words=[] bindings=[('appname', {[ComSub (Com {[LIT_CHARS random_name]})]})]) (= scope= flags=0 words=[] bindings=[('counter', {[LIT_CHARS 0]})]) (While (Pipeline (Com {[LIT_CHARS ssh]} {[LIT_CHARS -p]} {[DQ [VarSub DOKKU_PORT]]} {[DQ [LIT_CHARS "dokku@"][VarSub DOKKU_HOST]]} {[LIT_CHARS apps]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[DQ [VarSub appname]]} ) ) (If (DBracket {B2 BINARY_INT_GE {[VarSub counter]} {[LIT_CHARS 100]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Error: could not reasonably generate a new app name. try cleaning up some apps..."]]} ) (Com {[LIT_CHARS ssh]} {[LIT_CHARS -p]} {[DQ [VarSub DOKKU_PORT]]} {[DQ [LIT_CHARS "dokku@"][VarSub DOKKU_HOST]]} {[LIT_CHARS apps]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('appname', {[ComSub (Com {[LIT_CHARS random_name]})]})]) (= scope= flags=0 words=[] bindings=[('counter', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub counter]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) ) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('appname', {[DQ [VarSub 2]]})]) ) (If (Com {[LIT_CHARS git]} {[LIT_CHARS remote]} {[LIT_CHARS add]} {[LIT_CHARS dokku]} {[DQ [LIT_CHARS "dokku@"][VarSub DOKKU_HOST][LIT_CHARS ":"][VarSub appname]]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "-----> Dokku remote added at "][VarSub DOKKU_HOST]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "-----> Application name is "][VarSub appname]]} ) ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "! Dokku remote not added! Do you already have a dokku remote?"]]} ) (Com {[LIT_CHARS return]} ) ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS is_git_repo]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS has_dokku_remote]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS remote]} {[LIT_CHARS remove]} {[LIT_CHARS dokku]} ) ) ) ) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_n {[DQ [VarSub @]]}}) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_n {[DQ [VarSub appname]]}}) (= scope= flags=0 words=[] bindings=[('app_arg', {[DQ [LIT_CHARS "--app "][VarSub appname]]})]) ) ) (Com {[LIT_CHARS ssh]} {[LIT_CHARS -o]} {[LIT_VAR_LIKE "LogLevel="] [LIT_CHARS QUIET] =} {[LIT_CHARS -p]} {[VarSub DOKKU_PORT]} {[LIT_CHARS -t]} {[LIT_CHARS dokku] [LIT_OTHER "@"] [VarSub DOKKU_HOST]} {[LIT_CHARS --]} {[VarSub app_arg]} {[VarSub @]} ) ) ) (If (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub 0]]} {[DQ [LIT_CHARS dokku]]}}) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub 0]]} {[LIT_OTHER "*"] [LIT_CHARS dokku_client.sh]}}) (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub 0]]} {[ComSub (Com {[LIT_CHARS which]} {[LIT_CHARS dokku]})]}}) ) ) (List (Com {[LIT_CHARS _dokku]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS exit]} {[VarSub ?]} ) ) ) ) (ElseTrue) (Com {[LIT_CHARS client_help_msg]} ) ) )