(command.CommandList children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$0')} right: { (braced_var_sub token: (Token id:Id.VSub_Name val:BASH_SOURCE span_id:70) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) ) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:78) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dirname) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:BASH_SOURCE span_id:85) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Percent arg_word: {(Id.Lit_Slash /) ('*')} ) ) } spids: [83] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$dirname')} right: {($ Id.VSub_Number '$0')} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:top_dir) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:.. span_id:109))} spids: [107] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:top_dir) op: assign_op.Equal rhs: {(${ Id.VSub_Name dirname) (/..)} spids: [114] ) ] ) ] ) (command.ForEach iter_name: file iter_words: [{(help)} {(alias)}] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (C {(source)} {($ Id.VSub_DollarName '$top_dir') (/lib/) (${ Id.VSub_Name file) (.sh)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:143) ) ] ) ) ] spids: [61 80] ) ] ) (C {(_Dbg_help_add)} {(help)} { (SQ (Token id:Id.Lit_Chars val:'**help** [*command* [*subcommand* ..]]\n' span_id:156) (Token id:Id.Lit_Chars val:'\n' span_id:157) (Token id:Id.Lit_Chars val:'If no arguments are given, print a list of command names.\n' span_id:158) (Token id: Id.Lit_Chars val: 'With a command name give help for that command. For many commands\n' span_id: 159 ) (Token id: Id.Lit_Chars val: 'you can get further detailed help by listing the subcommand name.\n' span_id: 160 ) (Token id:Id.Lit_Chars val:'\n' span_id:161) (Token id:Id.Lit_Chars val:'Examples:\n' span_id:162) (Token id:Id.Lit_Chars val:'---------\n' span_id:163) (Token id:Id.Lit_Chars val:'\n' span_id:164) (Token id:Id.Lit_Chars val:' help\n' span_id:165) (Token id:Id.Lit_Chars val:' help up\n' span_id:166) (Token id:Id.Lit_Chars val:' help set\n' span_id:167) (Token id:Id.Lit_Chars val:' help set args' span_id:168) ) } {(1)} {(_Dbg_complete_help)} ) (command.ShFunction name: _Dbg_complete_help body: (command.BraceGroup children: [ (command.Sentence child: (C {(typeset)} {(-a)} {(words)}) terminator: (Token id:Id.Op_Semi val:';' span_id:188) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:' ' span_id:193))} spids: [191] ) (assign_pair lhs: (sh_lhs_expr.Name name:words) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:197) words: [{($ Id.VSub_DollarName '$COMP_LINE')}] ) } spids: [196] ) ] ) (C {(typeset)} {(subcmds)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:subcmds) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:_Dbg_command_help span_id:213) prefix_op: (Id.VSub_Bang) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } spids: [209] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: (arith_expr.ArithWord w: { (braced_var_sub token: (Token id:Id.VSub_Name val:words span_id:227) prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:239) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:245) words: [{($ Id.VSub_DollarName '$subcmds')}] ) } spids: [244] ) ] ) ] spids: [221 241] ) (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: (arith_expr.ArithWord w: { (braced_var_sub token: (Token id:Id.VSub_Name val:words span_id:258) prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)}) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:271) ) ] action: [ (C {(typeset)} {(Id.Lit_VarLike 'commands=') (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:_Dbg_command_help span_id:282) prefix_op: (Id.VSub_Bang) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:291) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:293) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ Id.VSub_DollarName '$subcmds'))} { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: words span_id: 304 ) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Id.Lit_Digits 1)} ) ) ) ) } ) ] ) ) } ] ) } spids: [290] ) ] ) ] spids: [252 273] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: {(sh_array_literal left:(Token id:Id.Op_LParen val:'(' span_id:319))} spids: [318] ) ] ) ] ) ] ) ) (command.ShFunction name: _Dbg_do_help body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$_Dbg_args'))} right: {(SQ (Token id:Id.Lit_Chars val:'*' span_id:361))} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_args) op: assign_op.Equal rhs: {(SQ )} spids: [368] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(SQ )} right: {($ Id.VSub_DollarName '$_Dbg_args')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:387) ) ] action: [ (C {(_Dbg_help_sort_command_names)}) (C {(_Dbg_section)} {(SQ (Token id:Id.Lit_Chars val:'Available commands:' span_id:398))} ) (C {(typeset)} {(-a)} {(Id.Lit_VarLike 'list=') (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:407) words: [ { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: _Dbg_sorted_command_names span_id: 410 ) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ] ) } ) (C {(_Dbg_list_columns)}) (C {(_Dbg_msg)} {(SQ )}) (C {(_Dbg_msg)} { (SQ (Token id: Id.Lit_Chars val: 'Readline command line editing (emacs/vi mode) is available.' span_id: 431 ) ) } ) (C {(_Dbg_msg)} { (SQ (Token id: Id.Lit_Chars val: 'Type "help" followed by command name for full documentation.' span_id: 438 ) ) } ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:442) arg_word: {(0)} ) ] spids: [374 389] ) ] else_action: [ (C {(typeset)} {(Id.Lit_VarLike 'dbg_cmd=') (DQ ($ Id.VSub_Number '$1'))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (braced_var_sub token: (Token id: Id.VSub_Name val: _Dbg_command_help span_id: 465 ) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$dbg_cmd')} ) ) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:473) ) ] action: [ (C {(_Dbg_msg_rst)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:_Dbg_command_help span_id:482) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$dbg_cmd')}) ) ) ) } ) ] spids: [458 475] ) ] else_action: [ (C {(_Dbg_alias_expand)} {($ Id.VSub_DollarName '$dbg_cmd')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dbg_cmd) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$expanded_alias'))} spids: [498] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (braced_var_sub token: (Token id: Id.VSub_Name val: _Dbg_command_help span_id: 511 ) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$dbg_cmd')} ) ) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:519) ) ] action: [ (C {(_Dbg_msg_rst)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:_Dbg_command_help span_id:528) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$dbg_cmd')} ) ) ) ) } ) ] spids: [504 521] ) ] else_action: [ (command.Case to_match: {($ Id.VSub_DollarName '$dbg_cmd')} arms: [ (case_arm pat_list: [{(i)} {(Id.KW_In in)} {(inf)} {(info)}] action: [ (C {(_Dbg_info_help)} {($ Id.VSub_Number '$2')}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:568) ) ] spids: [546 560 571 -1] ) (case_arm pat_list: [{(sh)} {(sho)} {(show)}] action: [(C {(_Dbg_help_show)} {($ Id.VSub_Number '$2')})] spids: [574 584 592 -1] ) (case_arm pat_list: [{(se)} {(Id.KW_Set set)}] action: [(C {(_Dbg_help_set)} {($ Id.VSub_Number '$2')})] spids: [595 601 609 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(typeset)} {(-i)} {(Id.Lit_VarLike 'count=') (0)}) (C {(typeset)} {(found_cmd)}) (command.Sentence child: (C {(typeset)} {(list)}) terminator: (Token id:Id.Op_Semi val:';' span_id:637) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:list) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: _Dbg_command_help span_id: 643 ) prefix_op: (Id.VSub_Bang) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } spids: [639] ) ] ) (command.ForEach iter_name: try iter_words: [{($ Id.VSub_DollarName '$list')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName '$try')} right: {(Id.Lit_Other '^') ($ Id.VSub_DollarName '$dbg_cmd') } ) ) terminator: (Token id: Id.Op_Semi val: ';' span_id: 677 ) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:found_cmd) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$try')} spids: [682] ) ] ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: (sh_lhs_expr.Name name:count) ) ) ] spids: [664 679] ) ] ) ] ) ) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (sh_lhs_expr.Name name:found) right: (arith_expr.Binary op_id: Id.Arith_DEqual left: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: count span_id: 703 ) ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: found span_id: 714 ) ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:717) ) ] action: [ (C {(_Dbg_msg)} { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: _Dbg_command_help span_id: 726 ) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$found_cmd')} ) ) ) ) } ) ] spids: [711 719] ) ] else_action: [ (C {(_Dbg_errmsg)} { (DQ ('Undefined command: ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\"' span_id: 741 ) ) ($ Id.VSub_DollarName '$dbg_cmd') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\"' span_id: 743 ) ) ('. Try ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:745)) (help) (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\"' span_id: 747 ) ) (.) ) } ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:752) arg_word: {(1)} ) ] ) ] spids: [612 614 760 -1] ) ] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aliases_found) op: assign_op.Equal rhs: {(SQ )} spids: [772] ) ] ) (C {(_Dbg_alias_find_aliased)} {(DQ ($ Id.VSub_DollarName '$dbg_cmd'))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName '$aliases_found')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:794) ) ] action: [ (C {(_Dbg_msg)} {(SQ )}) (C {(_Dbg_msg)} { (DQ ('Aliases for ') ($ Id.VSub_DollarName '$dbg_cmd') (': ') ($ Id.VSub_DollarName '$aliases_found') ) } ) ] spids: [784 796] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:818) arg_word: {(2)} ) ] ) ] ) ) (C {(_Dbg_alias_add)} {(SQ (Token id:Id.Lit_Chars val:h span_id:831))} {(help)}) (C {(_Dbg_alias_add)} {(SQ (Token id:Id.Lit_Chars val:'?' span_id:839))} {(help)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$0')} right: { (braced_var_sub token: (Token id:Id.VSub_Name val:BASH_SOURCE span_id:857) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) ) ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:865) ) ] action: [ (command.ForEach iter_name: file iter_words: [{(sort)} {(columnize)} {(list)} {(msg)}] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (C {(source)} {($ Id.VSub_DollarName '$top_dir') (/lib/) (${ Id.VSub_Name file) (.sh)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:897) ) ] ) ) (C {(_Dbg_do_help)}) (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:--- span_id:917))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_args) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:help span_id:923))} spids: [921] ) ] ) (C {(_Dbg_do_help)} {(help)}) ] spids: [848 867] ) ] ) ] )