(command.CommandList children: [ (C {(set)} {(-eo)} {(pipefail)}) (C {(shopt)} {(-s)} {(nullglob)}) (C {(export)} {(Lit_VarLike 'DOKKU_ROOT=') (word_part.BracedVarSub token: <VSub_Name DOKKU_ROOT> suffix_op: (suffix_op.StringUnary op_id:VTest_ColonEquals arg_word:{('~dokku')}) spids: [19 23] ) } ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolUnary op_id: BoolUnary_f child: {($ VSub_DollarName '$DOKKU_ROOT') (/dokkurc)} ) ) (C {(source)} {(DQ ($ VSub_DollarName '$DOKKU_ROOT') (/dokkurc))}) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolUnary op_id: BoolUnary_d child: {($ VSub_DollarName '$DOKKU_ROOT') (/.dokkurc)} ) ) (command.ForEach iter_name: f iter_words: [{($ VSub_DollarName '$DOKKU_ROOT') (/.dokkurc/) (Lit_Other '*')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (C {(source)} {(DQ ($ VSub_DollarName '$f'))}) terminator: <Op_Semi ';'> ) ] spids: [65 74] ) spids: [59 63] ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr:(bool_expr.WordTest w:{($ VSub_DollarName '$DOKKU_TRACE')})) (C {(set)} {(-x)}) ] ) (command.Case to_match: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(lsb_release)} {(-si)})]) left_token: <Left_CommandSub '$('> spids: [92 96] ) ) } arms: [ (case_arm pat_list: [{(Arch)}] action: [ (C {(export)} {(Lit_VarLike 'DOKKU_DISTRO=') (word_part.BracedVarSub token: <VSub_Name DOKKU_DISTRO> suffix_op: (suffix_op.StringUnary op_id:VTest_ColonEquals arg_word:{(DQ (arch))}) spids: [109 115] ) } ) ] spids: [102 103 118 16777215] ) (case_arm pat_list: [{(Debian)}] action: [ (C {(export)} {(Lit_VarLike 'DOKKU_DISTRO=') (word_part.BracedVarSub token: <VSub_Name DOKKU_DISTRO> suffix_op: (suffix_op.StringUnary op_id:VTest_ColonEquals arg_word:{(DQ (debian))}) spids: [128 134] ) } ) ] spids: [121 122 137 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(export)} {(Lit_VarLike 'DOKKU_DISTRO=') (word_part.BracedVarSub token: <VSub_Name DOKKU_DISTRO> suffix_op: (suffix_op.StringUnary op_id:VTest_ColonEquals arg_word:{(DQ (ubuntu))}) spids: [147 153] ) } ) ] spids: [140 141 156 16777215] ) ] spids: [89 99 158] ) (C {(export)} {(Lit_VarLike 'DOKKU_IMAGE=') (word_part.BracedVarSub token: <VSub_Name DOKKU_IMAGE> suffix_op: (suffix_op.StringUnary op_id: VTest_ColonEquals arg_word: {(DQ (gliderlabs/herokuish))} ) spids: [164 170] ) } ) (C {(export)} {(Lit_VarLike 'DOKKU_LIB_ROOT=') (word_part.BracedVarSub token: <VSub_Name DOKKU_LIB_PATH> suffix_op: (suffix_op.StringUnary op_id:VTest_ColonEquals arg_word:{(DQ (/var/lib/dokku))}) spids: [175 181] ) } ) (C {(export)} {(Lit_VarLike 'PLUGIN_PATH=') (word_part.BracedVarSub token: <VSub_Name PLUGIN_PATH> suffix_op: (suffix_op.StringUnary op_id: VTest_ColonEquals arg_word: {(DQ ($ VSub_DollarName '$DOKKU_LIB_ROOT') (/plugins))} ) spids: [187 194] ) } ) (C {(export)} {(Lit_VarLike 'PLUGIN_AVAILABLE_PATH=') (word_part.BracedVarSub token: <VSub_Name PLUGIN_AVAILABLE_PATH> suffix_op: (suffix_op.StringUnary op_id: VTest_ColonEquals arg_word: {(DQ ($ VSub_DollarName '$PLUGIN_PATH') (/available))} ) spids: [199 206] ) } ) (C {(export)} {(Lit_VarLike 'PLUGIN_ENABLED_PATH=') (word_part.BracedVarSub token: <VSub_Name PLUGIN_ENABLED_PATH> suffix_op: (suffix_op.StringUnary op_id: VTest_ColonEquals arg_word: {(DQ ($ VSub_DollarName '$PLUGIN_PATH') (/enabled))} ) spids: [211 218] ) } ) (C {(export)} {(Lit_VarLike 'PLUGIN_CORE_PATH=') (word_part.BracedVarSub token: <VSub_Name PLUGIN_CORE_PATH> suffix_op: (suffix_op.StringUnary op_id: VTest_ColonEquals arg_word: {(DQ ($ VSub_DollarName '$DOKKU_LIB_ROOT') (/core-plugins))} ) spids: [223 230] ) } ) (C {(export)} {(Lit_VarLike 'PLUGIN_CORE_AVAILABLE_PATH=') (word_part.BracedVarSub token: <VSub_Name PLUGIN_CORE_AVAILABLE_PATH> suffix_op: (suffix_op.StringUnary op_id: VTest_ColonEquals arg_word: {(DQ ($ VSub_DollarName '$PLUGIN_CORE_PATH') (/available))} ) spids: [235 242] ) } ) (C {(export)} {(Lit_VarLike 'PLUGIN_CORE_ENABLED_PATH=') (word_part.BracedVarSub token: <VSub_Name PLUGIN_CORE_ENABLED_PATH> suffix_op: (suffix_op.StringUnary op_id: VTest_ColonEquals arg_word: {(DQ ($ VSub_DollarName '$PLUGIN_CORE_PATH') (/enabled))} ) spids: [247 254] ) } ) (C {(export)} {(Lit_VarLike 'DOKKU_API_VERSION=') (1)}) (C {(export)} {(Lit_VarLike 'DOKKU_NOT_IMPLEMENTED_EXIT=') (10)}) (C {(export)} {(Lit_VarLike 'DOKKU_VALID_EXIT=') (0)}) (C {(export)} {(Lit_VarLike 'DOKKU_LOGS_DIR=') (word_part.BracedVarSub token: <VSub_Name DOKKU_LOGS_DIR> suffix_op: (suffix_op.StringUnary op_id:VTest_ColonEquals arg_word:{(DQ (/var/log/dokku))}) spids: [276 282] ) } ) (C {(export)} {(Lit_VarLike 'DOKKU_EVENTS_LOGFILE=') (word_part.BracedVarSub token: <VSub_Name DOKKU_EVENTS_LOGFILE> suffix_op: (suffix_op.StringUnary op_id: VTest_ColonEquals arg_word: {(DQ ($ VSub_DollarName '$DOKKU_LOGS_DIR') (/events.log))} ) spids: [287 294] ) } ) (C {(export)} {(Lit_VarLike 'DOKKU_CONTAINER_LABEL=') (dokku)}) (C {(export)} {(Lit_VarLike 'DOKKU_GLOBAL_RUN_ARGS=') (DQ ('--label=') ($ VSub_DollarName '$DOKKU_CONTAINER_LABEL')) } ) (C {(source)} {(DQ ($ VSub_DollarName '$PLUGIN_CORE_AVAILABLE_PATH') (/common/functions))}) (C {(parse_args)} {(DQ ($ VSub_At '$@'))}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:args spids:[325]) op: Equal rhs: {(word_part.ArrayLiteralPart words:[{(DQ ($ VSub_At '$@'))}])} spids: [325] ) ] spids: [325] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_EqualTilde left: { (DQ (word_part.BracedVarSub token: <VSub_Name args> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) spids: [337 342] ) ) } right: {(Lit_Other '^') (--) (Lit_Other .) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.ForEach iter_name: arg iter_words: [{(DQ ($ VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_DollarName '$arg'))} right: {(DQ (--app))} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(shift)} {(2)})] spids: [16777215 389] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_EqualTilde left: {(DQ ($ VSub_DollarName '$arg'))} right: {(Lit_Other '^') (--) (Lit_Other .) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(shift)} {(1)})] spids: [397 415] ) ] else_action: [(command.ControlFlow token:<ControlFlow_Break break>)] spids: [423 429] ) ] spids: [369 432] ) spids: [363 367] ) ] spids: [16777215 355] ) ] spids: [16777215 434] ) (command.AndOr ops: [Op_DAmp] children: [ (command.Pipeline children:[(C {(has_tty)})] negated:T) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:DOKKU_QUIET_OUTPUT spids:[442]) op: Equal rhs: {(1)} spids: [442] ) ] spids: [442] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(id)} {(-un)})]) left_token: <Left_CommandSub '$('> spids: [450 454] ) } right: {(DQ (dokku))} ) ) (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.BoolBinary op_id: BoolBinary_EqualTilde left: {($ VSub_Number '$1')} right: {(plugin) (Lit_Other ':') (Lit_Other '*')} ) ) ) (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(DQ ('ssh-keys:add'))} ) ) ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(export)} {(Lit_VarLike 'SSH_USER=') (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(id)} {(-un)})]) left_token: <Left_CommandSub '$('> spids: [503 507] ) } ) (C {(sudo)} {(-u)} {(dokku)} {(-E)} {(-H)} {(DQ ($ VSub_Number '$0'))} {(DQ ($ VSub_At '$@'))}) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] spids: [16777215 497] ) ] spids: [16777215 533] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(id)} {(-un)})]) left_token: <Left_CommandSub '$('> spids: [540 544] ) } right: {(DQ (root))} ) right: (bool_expr.BoolBinary op_id: BoolBinary_EqualTilde left: {($ VSub_Number '$1')} right: {(Lit_Other '^') (plugin) (Lit_Other ':') (Lit_Other .) (Lit_Other '*')} ) ) ) (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(id)} {(-un)})]) left_token: <Left_CommandSub '$('> spids: [570 574] ) } right: {(DQ (root))} ) right: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(DQ ('ssh-keys:add'))} ) ) ) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(dokku_log_fail)} {(DQ ('This command must be run as root'))})] spids: [16777215 595] ) ] spids: [16777215 604] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolUnary op_id: BoolUnary_n child: {(DQ ($ VSub_DollarName '$SSH_ORIGINAL_COMMAND'))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(export)} {(-n)} {(SSH_ORIGINAL_COMMAND)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_EqualTilde left: {($ VSub_Number '$1')} right: {(config-) (Lit_Other '*')} ) ) (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_EqualTilde left: {($ VSub_Number '$1')} right: {(docker-options) (Lit_Other '*')} ) ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (command.SimpleCommand words: [{(xargs)} {($ VSub_Number '$0')}] redirects: [ (redir.Redir op: <Redir_TLess '<<<'> fd: 16777215 arg_word: {($ VSub_DollarName '$SSH_ORIGINAL_COMMAND')} ) ] ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] spids: [16777215 657] ) ] else_action: [ (C {(set)} {(-f)}) (C {($ VSub_Number '$0')} {($ VSub_DollarName '$SSH_ORIGINAL_COMMAND')}) (C {(set)} {(Lit_Other '+') (f)}) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] spids: [677 705] ) ] spids: [16777215 620] ) ] spids: [16777215 707] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [(C {(dokku_auth)} {(DQ ($ VSub_At '$@'))})] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(dokku_log_fail)} {(DQ ('Access denied'))}) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 722] ) ] spids: [16777215 736] ) (command.FuncDef name: execute_dokku_cmd body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:desc spids:[748]) op: Equal rhs: {(DQ ('executes dokku sub-commands'))} spids: [748] ) ] spids: [746] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:PLUGIN_NAME spids:[756]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [756] ) ] spids: [754] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:PLUGIN_CMD spids:[764]) op: Equal rhs: {($ VSub_DollarName '$PLUGIN_NAME')} spids: [764] ) ] spids: [762] ) (command.Sentence child: (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:implemented spids:[770]) op: Equal rhs: {(0)} spids: [770] ) ] spids: [768] ) terminator: <Op_Semi ';'> ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:script spids:[776]) op: Equal spids: [776] ) ] spids: [774] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:argv spids:[781]) op: Equal rhs: {(word_part.ArrayLiteralPart words:[{(DQ ($ VSub_At '$@'))}])} spids: [781] ) ] spids: [779] ) (command.Case to_match: {(DQ ($ VSub_DollarName '$PLUGIN_NAME'))} arms: [ (case_arm pat_list: [{(events)} {(events) (Lit_Other ':') (Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:PLUGIN_NAME spids:[809]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name PLUGIN_NAME> suffix_op: (suffix_op.PatSub pat: {(events)} replace: {(20_events)} replace_mode: Undefined_Tok spids: [812] ) spids: [810 816] ) } spids: [809] ) ] spids: [807] ) ] spids: [799 804 819 16777215] ) (case_arm pat_list: [{(nginx)} {(nginx) (Lit_Other ':') (Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:PLUGIN_NAME spids:[832]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name PLUGIN_NAME> suffix_op: (suffix_op.PatSub pat: {(nginx)} replace: {(nginx-vhosts)} replace_mode: Undefined_Tok spids: [835] ) spids: [833 839] ) } spids: [832] ) ] spids: [830] ) ] spids: [822 827 842 16777215] ) (case_arm pat_list: [{(deploy)} {(delete)} {(ls)} {(run)} {(cleanup)}] action: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:PLUGIN_NAME spids:[859]) op: Equal rhs: {(DQ (00_dokku-standard))} spids: [859] ) ] spids: [857] ) ] spids: [845 854 865 16777215] ) (case_arm pat_list: [{(trace)} {(url)} {(urls)} {(report)} {(version)}] action: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:PLUGIN_NAME spids:[882]) op: Equal rhs: {(DQ (00_dokku-standard))} spids: [882] ) ] spids: [880] ) ] spids: [868 877 888 16777215] ) ] spids: [790 796 891] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(readlink)} {(-f)} { (DQ ($ VSub_DollarName '$PLUGIN_ENABLED_PATH') (/) (word_part.BracedVarSub token: <VSub_Name PLUGIN_NAME> suffix_op: (suffix_op.StringUnary op_id: VOp1_DPercent arg_word: {(':*')} ) spids: [908 912] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [900 914] ) ) } right: {(Lit_Other '*') (core-plugins) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: { (word_part.BracedVarSub token: <VSub_Name argv> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) spids: [932 937] ) } right: {(DQ ($ VSub_DollarName '$PLUGIN_CMD'))} ) ) (C {(shift)} {(1)}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.BoolUnary op_id: BoolUnary_z child: {($ VSub_DollarName '$DOKKU_APP_NAME')} ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_DollarName '$PLUGIN_CMD'))} right: {(config) (Lit_Other '*')} ) ) (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: { (word_part.BracedVarSub token: <VSub_Name argv> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 1)} ) ) spids: [989 994] ) } right: {(DQ (--no-restart))} ) ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(shift)} {(1)}) (C {(set)} {(--)} {(DQ (--no-restart))} {(DQ ($ VSub_DollarName '$DOKKU_APP_NAME'))} {(DQ ($ VSub_At '$@'))} ) ] spids: [16777215 1005] ) ] else_action: [ (C {(set)} {(--)} {(DQ ($ VSub_DollarName '$DOKKU_APP_NAME'))} {(DQ ($ VSub_At '$@'))} ) ] spids: [1030 1046] ) ] spids: [16777215 967] ) ] spids: [16777215 1049] ) (C {(set)} {(--)} {(DQ ($ VSub_DollarName '$PLUGIN_CMD'))} {(DQ ($ VSub_At '$@'))}) ] spids: [16777215 927] ) ] spids: [16777215 1065] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolUnary op_id: BoolUnary_x child: {($ VSub_DollarName '$PLUGIN_ENABLED_PATH') (/) ($ VSub_DollarName '$PLUGIN_NAME') (/subcommands/default) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C { (DQ ($ VSub_DollarName '$PLUGIN_ENABLED_PATH') (/) ($ VSub_DollarName '$PLUGIN_NAME') (/subcommands/default) ) } {(DQ ($ VSub_At '$@'))} ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:implemented spids:[1098]) op: Equal rhs: {(1)} spids: [1098] ) ] spids: [1098] ) ] spids: [16777215 1083] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolUnary op_id: BoolUnary_x child: {($ VSub_DollarName '$PLUGIN_ENABLED_PATH') (/) ($ VSub_DollarName '$PLUGIN_NAME') (/subcommands/) ($ VSub_DollarName '$PLUGIN_CMD') } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C { (DQ ($ VSub_DollarName '$PLUGIN_ENABLED_PATH') (/) ($ VSub_DollarName '$PLUGIN_NAME') (/subcommands/) ($ VSub_DollarName '$PLUGIN_CMD') ) } {(DQ ($ VSub_At '$@'))} ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:implemented spids:[1133]) op: Equal rhs: {(1)} spids: [1133] ) ] spids: [1133] ) ] spids: [1102 1117] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolUnary op_id: BoolUnary_x child: {($ VSub_DollarName '$PLUGIN_ENABLED_PATH') (/) (word_part.BracedVarSub token: <VSub_Name PLUGIN_NAME> suffix_op: (suffix_op.StringUnary op_id: VOp1_DPercent arg_word: {(':*')} ) spids: [1145 1149] ) (/subcommands/) (word_part.BracedVarSub token: <VSub_Number 1> suffix_op: (suffix_op.StringUnary op_id: VOp1_Pound arg_word: {('*:')} ) spids: [1151 1155] ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C { (DQ ($ VSub_DollarName '$PLUGIN_ENABLED_PATH') (/) (word_part.BracedVarSub token: <VSub_Name PLUGIN_NAME> suffix_op: (suffix_op.StringUnary op_id:VOp1_DPercent arg_word:{(':*')}) spids: [1166 1170] ) (/subcommands/) (word_part.BracedVarSub token: <VSub_Number 1> suffix_op: (suffix_op.StringUnary op_id:VOp1_Pound arg_word:{('*:')}) spids: [1172 1176] ) ) } {(DQ ($ VSub_At '$@'))} ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:implemented spids:[1184]) op: Equal rhs: {(1)} spids: [1184] ) ] spids: [1184] ) ] spids: [1137 1160] ) ] spids: [16777215 1188] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$implemented')} right: {(0)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.ForEach iter_name: script iter_words: [ {($ VSub_DollarName '$PLUGIN_ENABLED_PATH') (/) (Lit_Other '*') (/commands)} ] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (C {(set)} {(Lit_Other '+') (e)}) terminator: <Op_Semi ';'> ) (command.Sentence child: (C {($ VSub_DollarName '$script')} {(DQ ($ VSub_At '$@'))}) terminator: <Op_Semi ';'> ) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:exit_code spids:[1236]) op: Equal rhs: {($ VSub_QMark '$?')} spids: [1236] ) ] spids: [1236] ) terminator: <Op_Semi ';'> ) (C {(set)} {(-e)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {(DQ ($ VSub_DollarName '$exit_code'))} right: { (DQ ($ VSub_DollarName '$DOKKU_NOT_IMPLEMENTED_EXIT') ) } ) ) terminator: <Op_Semi ';'> ) ] action: [(command.ControlFlow token:<ControlFlow_Continue continue>)] spids: [16777215 1263] ) ] spids: [16777215 1269] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:implemented spids:[1272]) op: Equal rhs: {(1)} spids: [1272] ) ] spids: [1272] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_ne left: {(DQ ($ VSub_DollarName '$exit_code'))} right: {(DQ ($ VSub_DollarName '$DOKKU_VALID_EXIT'))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_DollarName '$exit_code')} ) ] spids: [16777215 1293] ) ] spids: [16777215 1301] ) ] spids: [1219 1304] ) spids: [1212 1217] ) ] spids: [16777215 1204] ) ] spids: [16777215 1307] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {(DQ ($ VSub_DollarName '$implemented'))} right: {(0)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(dokku_log_warn)} { (DQ (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) ($ VSub_Star '$*') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) (' is not a dokku command.') ) } ) (C {(dokku_log_warn)} { (DQ ('See ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) ('dokku help') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) (' for a list of available commands.') ) } ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [16777215 1326] ) ] spids: [16777215 1355] ) ] spids: [743] ) spids: [739 742] ) (command.Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(help)} {(SQ )}] action: [ (C {(export)} {(Lit_VarLike 'LC_ALL=') (C)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:ALL_PLUGIN_COMMANDS spids:[1385]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.AndOr ops: [Op_DPipe] children: [ (command.SimpleCommand words: [ {(find)} {(-L)} {(DQ ($ VSub_DollarName '$PLUGIN_PATH') (/enabled))} {(-name)} {(commands)} ] redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(true)}) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [1386 1407] ) } spids: [1385] ) ] spids: [1385] ) (command.ForEach iter_name: plugin_command iter_words: [{($ VSub_DollarName '$ALL_PLUGIN_COMMANDS')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(readlink)} {(-f)} {(DQ ($ VSub_DollarName '$plugin_command'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1431 1439] ) ) } right: {(Lit_Other '*') (core-plugins) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:CORE_PLUGIN_COMMANDS spids:[1454]) op: PlusEqual rhs: {(DQ ($ VSub_DollarName '$plugin_command') (' '))} spids: [1454] ) ] spids: [1454] ) ] spids: [16777215 1451] ) ] spids: [16777215 1461] ) ] spids: [1423 1464] ) spids: [1420 1422] ) (command.ForEach iter_name: plugin_command iter_words: [{($ VSub_DollarName '$ALL_PLUGIN_COMMANDS')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(readlink)} {(-f)} {(DQ ($ VSub_DollarName '$plugin_command'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1487 1495] ) ) } right: {(Lit_Other '*') (core-plugins) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMMUNITY_PLUGIN_COMMANDS spids:[1510]) op: PlusEqual rhs: {(DQ ($ VSub_DollarName '$plugin_command') (' '))} spids: [1510] ) ] spids: [1510] ) ] spids: [16777215 1507] ) ] spids: [16777215 1517] ) ] spids: [1479 1520] ) spids: [1476 1478] ) (C {(echo)} { (DQ ( 'Usage: dokku [--quiet|--trace|--rm-container|--rm|--force] COMMAND <app> [command-specific-options]' ) ) } ) (C {(echo)} {(DQ )}) (C {(echo)} { (DQ ('Primary help options, type ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('dokku COMMAND:help') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' for more details, or dokku help --all to see all commands.') ) } ) (C {(echo)} {(DQ )}) (C {(echo)} {(DQ ('Commands:'))}) (C {(echo)} {(DQ )}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Number '$2'))} right: {(DQ (--all))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Pipeline children: [ (command.ForEach iter_name: core_plugin_command iter_words: [{($ VSub_DollarName '$CORE_PLUGIN_COMMANDS')}] do_arg_iter: F body: (command.DoGroup children: [(C {($ VSub_DollarName '$core_plugin_command')} {(help)})] spids: [1602 1610] ) spids: [1598 1600] ) (C {(sort)}) (C {(column)} {(-c2)} {(-t)} {(-s) (Lit_Comma ',')}) ] negated: F ) (C {(echo)} {(DQ )}) (C {(echo)} {(DQ ('Community plugin commands:'))}) (C {(echo)} {(DQ )}) (command.Pipeline children: [ (command.ForEach iter_name: community_plugin_command iter_words: [{($ VSub_DollarName '$COMMUNITY_PLUGIN_COMMANDS')}] do_arg_iter: F body: (command.DoGroup children: [(C {($ VSub_DollarName '$community_plugin_command')} {(help)})] spids: [1656 1664] ) spids: [1652 1654] ) (C {(sort)}) (C {(column)} {(-c2)} {(-t)} {(-s) (Lit_Comma ',')}) ] negated: F ) ] spids: [16777215 1590] ) ] else_action: [ (command.Pipeline children: [ (command.ForEach iter_name: core_plugin_command iter_words: [{($ VSub_DollarName '$CORE_PLUGIN_COMMANDS')}] do_arg_iter: F body: (command.DoGroup children: [(C {($ VSub_DollarName '$core_plugin_command')} {(help)})] spids: [1694 1706] ) spids: [1690 1692] ) (C {(sort)}) (C {(sed)} {(-e)} {(SQ <'/^.*:/d'>)} {(-e)} {(SQ <'s/\\s[\\[\\<\\-\\(].*,/,/'>)}) (C {(column)} {(-c2)} {(-t)} {(-s) (Lit_Comma ',')}) ] negated: F ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolUnary op_id: BoolUnary_n child: {(DQ ($ VSub_DollarName '$COMMUNITY_PLUGIN_COMMANDS'))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ )}) (C {(echo)} {(DQ ('Community plugin commands:'))}) (C {(echo)} {(DQ )}) (command.Pipeline children: [ (command.ForEach iter_name: community_plugin_command iter_words: [{($ VSub_DollarName '$COMMUNITY_PLUGIN_COMMANDS')}] do_arg_iter: F body: (command.DoGroup children: [ (C {($ VSub_DollarName '$community_plugin_command')} {(help)}) ] spids: [1784 1792] ) spids: [1780 1782] ) (C {(sort)}) (C {(column)} {(-c2)} {(-t)} {(-s) (Lit_Comma ',')}) ] negated: F ) ] spids: [16777215 1753] ) ] spids: [16777215 1810] ) ] spids: [1682 1813] ) ] spids: [1369 1373 1816 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(execute_dokku_cmd)} {(DQ ($ VSub_At '$@'))})] spids: [1820 1821 1831 16777215] ) ] spids: [1360 1366 1834] ) ] )