(command.CommandList children: [ (command.CommandList children: [ (command.Sentence child: (C {(Id.KW_Set set)} {(-eo)} {(pipefail)}) terminator: (Token id:Id.Op_Semi val:';' span_id:8) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName '$DOKKU_TRACE')}) ) (C {(Id.KW_Set set)} {(-x)}) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MOVES) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:24) words: [ {(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)} ] ) } spids: [23] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NAMES) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:473) words: [ {(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)} ] ) } spids: [472] ) ] ) (command.ShFunction name: random_number body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{(DQ ($ Id.VSub_Number '$1'))}) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RANGE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [991] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$RANGE'))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1008) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:number) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$RANDOM')} spids: [1013] ) ] ) (C {(let)} {(DQ ('number %= ') ($ Id.VSub_DollarName '$RANGE'))}) ] spids: [997 1010] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:number) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$RANDOM')} spids: [1028] ) ] ) ] ) (C {(echo)} {($ Id.VSub_DollarName '$number')}) ] ) ) (command.ShFunction name: random_name body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NUM1) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1050) command_list: (command.CommandList children: [ (C {(random_number)} { (braced_var_sub token: (Token id:Id.VSub_Name val:MOVES span_id:1055) prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) ] ) ) } spids: [1049] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NUM2) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1064) command_list: (command.CommandList children: [ (C {(random_number)} { (braced_var_sub token: (Token id:Id.VSub_Name val:MOVES span_id:1069) prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) ] ) ) } spids: [1063] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NUM3) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1078) command_list: (command.CommandList children: [ (C {(random_number)} { (braced_var_sub token: (Token id:Id.VSub_Name val:NAMES span_id:1083) prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) ] ) ) } spids: [1077] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:UPPER_APPNAME) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:MOVES span_id:1095) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(${ Id.VSub_Name NUM1)}) ) ) (-) (braced_var_sub token: (Token id:Id.VSub_Name val:MOVES span_id:1104) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(${ Id.VSub_Name NUM2)}) ) ) (-) (braced_var_sub token: (Token id:Id.VSub_Name val:NAMES span_id:1113) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(${ Id.VSub_Name NUM3)}) ) ) ) } spids: [1092] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName '$BASH_VERSION'))} right: {(4) (Id.Lit_Other .) (Id.Lit_Other '*')} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lower_appname) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:UPPER_APPNAME span_id:1142) suffix_op: (suffix_op.Unary op_id:Id.VOp1_DComma arg_word:{}) ) } spids: [1140] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$lower_appname'))} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lower_appname) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1160) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ Id.VSub_DollarName '$UPPER_APPNAME'))}) (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:'[:upper:]' span_id:1172))} {(SQ (Token id:Id.Lit_Chars val:'[:lower:]' span_id:1176))} ) ] negated: F ) ] ) ) } spids: [1159] ) ] ) ] ) (C {(echo)} {(DQ ($ Id.VSub_DollarName '$lower_appname'))}) ] ) ) (command.ShFunction name: client_help_msg body: (command.BraceGroup children: [ (C {(echo)} { (DQ ('==> Configure the DOKKU_HOST environment variable or run ') ($ Id.VSub_Number '$0') (' from a repository with a git remote named dokku') ) } ) (C {(echo)} {(DQ ('--> i.e. git remote add dokku dokku@<dokku-host>:<app-name>'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1213) arg_word: {(20)} ) ] ) ) (command.ShFunction name: is_git_repo body: (command.BraceGroup children: [ (command.Simple words: [{(git)} {(rev-parse)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_AndGreat val:'&>' span_id:1234) fd: -1 arg_word: {(/dev/null)} ) ] ) ] ) ) (command.ShFunction name: has_dokku_remote body: (command.BraceGroup children: [ (command.Pipeline children: [(C {(git)} {(remote)} {(show)}) (C {(grep)} {(dokku)})] negated: F ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName '$DOKKU_HOST')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1271) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_d child:{(.git)}) ) (command.Simple words: [{(git)} {(rev-parse)} {(--git-dir)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1294) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1298) fd: 2 arg_word: {(1)} ) ] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1300) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DOKKU_HOST) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1306) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [ (command.Simple words: [{(git)} {(remote)} {(-v)}] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '2>' span_id: 1313 ) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(grep)} {(-Ei)} {(DQ ('^dokku'))}) (C {(head)} {(-n)} {(1)}) (C {(cut)} {(-f1)} {(-d) (SQ (Token id:Id.Lit_Chars val:' ' span_id:1342)) } ) (C {(cut)} {(-f2)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:'@' span_id:1354))} ) (command.Simple words: [ {(cut)} {(-f1)} {(-d) (SQ (Token id:Id.Lit_Chars val:':' span_id:1365)) } ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '2>' span_id: 1368 ) fd: 2 arg_word: {(/dev/null)} ) ] ) ] negated: F ) (C {(true)}) ] ) ] ) ) } spids: [1305] ) ] ) ] spids: [1276 1302] ) ] else_action: [(C {(client_help_msg)})] ) ] spids: [1262 1273] ) ] ) (C {(export)} {(Id.Lit_VarLike 'DOKKU_PORT=') (braced_var_sub token: (Token id:Id.VSub_Name val:DOKKU_PORT span_id:1392) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonEquals arg_word:{(22)}) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_DollarName '$DOKKU_HOST')} ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1409) ) ] action: [ (command.ShFunction name: _dokku body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:appname) op: assign_op.Equal rhs: {(DQ )} spids: [1421] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_d child:{(.git)}) ) (command.Simple words: [{(git)} {(rev-parse)} {(--git-dir)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1444) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1448) fd: 2 arg_word: {(1)} ) ] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1450) ) ] action: [ (C {(Id.KW_Set set)} {(Id.Lit_Other '+') (e)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:appname) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 1462 ) command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [{(git)} {(remote)} {(-v)}] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '2>' span_id: 1469 ) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(grep)} {(-Ei)} { (DQ ('dokku@') ($ Id.VSub_DollarName '$DOKKU_HOST') ) } ) (C {(head)} {(-n)} {(1)}) (C {(cut)} {(-f2)} {(-d) (SQ (Token id: Id.Lit_Chars val: '@' span_id: 1499 ) ) } ) (C {(cut)} {(-f1)} {(-d) (SQ (Token id: Id.Lit_Chars val: ' ' span_id: 1510 ) ) } ) (command.Simple words: [ {(cut)} {(-f2)} {(-d) (SQ (Token id: Id.Lit_Chars val: ':' span_id: 1521 ) ) } ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '2>' span_id: 1524 ) fd: 2 arg_word: {(/dev/null)} ) ] ) ] negated: F ) ] ) ) } spids: [1461] ) ] ) (C {(Id.KW_Set set)} {(-e)}) ] spids: [1426 1452] ) ] else_action: [(C {(echo)} {(DQ ('This is not a git repository'))})] ) (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(apps) (Id.Lit_Other ':') (create)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_Number '$2'))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1574) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:appname) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 1580 ) command_list: (command.CommandList children: [(C {(random_name)})] ) ) } spids: [1579] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:counter) op: assign_op.Equal rhs: {(0)} spids: [1585] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:1589) cond: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [ {(ssh)} {(-p)} {(DQ ($ Id.VSub_DollarName '$DOKKU_PORT'))} { (DQ ('dokku@') ($ Id.VSub_DollarName '$DOKKU_HOST') ) } {(apps)} ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '2>' span_id: 1606 ) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(grep)} {(-q)} {(DQ ($ Id.VSub_DollarName '$appname'))} ) ] negated: F ) terminator: (Token id:Id.Op_Semi val:';' span_id:1617) ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_ge left: {($ Id.VSub_DollarName '$counter')} right: {(100)} ) ) terminator: (Token id: Id.Op_Semi val: ';' span_id: 1633 ) ) ] action: [ (C {(echo)} { (DQ ( 'Error: could not reasonably generate a new app name. try cleaning up some apps...' ) ) } ) (C {(ssh)} {(-p)} {(DQ ($ Id.VSub_DollarName '$DOKKU_PORT'))} {(DQ ('dokku@') ($ Id.VSub_DollarName '$DOKKU_HOST'))} {(apps)} ) (command.ControlFlow token: (Token id: Id.ControlFlow_Exit val: exit span_id: 1661 ) arg_word: {(1)} ) ] spids: [1622 1635] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:appname) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 1670 ) command_list: (command.CommandList children: [(C {(random_name)})] ) ) } spids: [1669] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:counter) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: counter span_id: 1677 ) ) right: (arith_expr.ArithWord w: {(Id.Lit_Digits 1)} ) ) ) } spids: [1675] ) ] ) ] ) ] ) ) ] spids: [1563 1576] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:appname) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [1693] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(git)} {(remote)} {(add)} {(dokku)} { (DQ ('dokku@') ($ Id.VSub_DollarName '$DOKKU_HOST') (':') ($ Id.VSub_DollarName '$appname') ) } ) terminator: (Token id:Id.Op_Semi val:';' span_id:1718) ) ] action: [ (C {(echo)} { (DQ ('-----> Dokku remote added at ') ($ Id.VSub_DollarName '$DOKKU_HOST') ) } ) (C {(echo)} { (DQ ('-----> Application name is ') ($ Id.VSub_DollarName '$appname') ) } ) ] spids: [1702 1720] ) ] else_action: [ (C {(echo)} { (DQ ( '! Dokku remote not added! Do you already have a dokku remote?' ) ) } ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1749) ) ] ) ] spids: [1557 1560 1755 -1] ) (case_arm pat_list: [{(apps) (Id.Lit_Other ':') (destroy)}] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(is_git_repo)}) (C {(has_dokku_remote)}) (C {(git)} {(remote)} {(remove)} {(dokku)}) ] ) ] spids: [1758 1761 1781 -1] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{(DQ ($ Id.VSub_At '$@'))}) ) (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$appname'))} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:app_arg) op: assign_op.Equal rhs: {(DQ ('--app ') ($ Id.VSub_DollarName '$appname'))} spids: [1812] ) ] ) ] ) (C {(ssh)} {(-o)} {(Id.Lit_VarLike 'LogLevel=') (QUIET)} {(-p)} {($ Id.VSub_DollarName '$DOKKU_PORT')} {(-t)} {(dokku) (Id.Lit_Other '@') ($ Id.VSub_DollarName '$DOKKU_HOST')} {(--)} {($ Id.VSub_DollarName '$app_arg')} {($ Id.VSub_At '$@')} ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number '$0'))} right: {(DQ (dokku))} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number '$0'))} right: {(Id.Lit_Other '*') (dokku_client.sh)} ) ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number '$0'))} right: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 1896 ) command_list: (command.CommandList children: [(C {(which)} {(dokku)})] ) ) } ) ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1903) ) ] action: [ (C {(_dokku)} {(DQ ($ Id.VSub_At '$@'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1915) arg_word: {($ Id.VSub_QMark '$?')} ) ] spids: [1855 1905] ) ] ) ] spids: [1398 1411] ) ] else_action: [(C {(client_help_msg)})] ) ] )