(command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-n)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:FLAGS_VERSION span_id:275) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } {(Id.Lit_RBracket ']')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:284) arg_word: {(0)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_VERSION) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:1.2.3pre span_id:290))} spids: [288] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_TRUE) op: assign_op.Equal rhs: {(0)} spids: [297] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_FALSE) op: assign_op.Equal rhs: {(1)} spids: [300] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_ERROR) op: assign_op.Equal rhs: {(2)} spids: [303] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_DEBUG) op: assign_op.Equal rhs: {(0)} spids: [310] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_INFO) op: assign_op.Equal rhs: {(1)} spids: [313] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_WARN) op: assign_op.Equal rhs: {(2)} spids: [316] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_ERROR) op: assign_op.Equal rhs: {(3)} spids: [319] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_FATAL) op: assign_op.Equal rhs: {(4)} spids: [322] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_LEVEL_DEFAULT) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_LEVEL_WARN)} spids: [325] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_EXPR_CMD) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'expr --' span_id:336))} spids: [334] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_UNAME_S) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:340) command_list: (command.CommandList children:[(C {(uname)} {(-s)})]) ) } spids: [339] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name __FLAGS_UNAME_S))} {(Id.Lit_Equals '=')} {(SQ (Token id:Id.Lit_Chars val:BSD span_id:361))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:365) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_EXPR_CMD) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'gexpr --' span_id:372))} spids: [370] ) ] ) ] spids: [348 367] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_output_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:379) command_list: (command.CommandList children: [ (command.Simple words: [{(${ Id.VSub_Name __FLAGS_EXPR_CMD)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:386) fd: 2 arg_word: {(1)} ) ] ) ] ) ) } spids: [378] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-eq)} {(${ Id.VSub_Name FLAGS_TRUE)} {(-a)} {(DQ (${ Id.VSub_Name _flags_output_))} {(Id.Lit_Equals '=')} {(SQ (Token id:Id.Lit_Chars val:-- span_id:414))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:418) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_EXPR_CMD) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:expr span_id:429))} spids: [427] ) ] ) ] spids: [391 420] ) ] ) (C {(unset)} {(_flags_output_)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_EXPR_CMD) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:FLAGS_EXPR_CMD span_id:448) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(${ Id.VSub_Name __FLAGS_EXPR_CMD)} ) ) } spids: [446] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_GETOPT_CMD) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:FLAGS_GETOPT_CMD span_id:457) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(getopt)}) ) } spids: [455] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ZSH_VERSION span_id:474) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:480) ) ] action: [ (command.Pipeline children: [ (C {(setopt)}) (command.Simple words: [{(grep)} {(DQ ('^shwordsplit') (Id.Lit_Other '$'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:495) fd: -1 arg_word: {(/dev/null)} ) ] ) ] negated: F ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-ne)} {(${ Id.VSub_Name FLAGS_TRUE)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:512) ) ] action: [ (C {(_flags_fatal)} { (SQ (Token id: Id.Lit_Chars val: 'zsh shwordsplit option is required for proper zsh operation' span_id: 520 ) ) } ) ] spids: [499 514] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:FLAGS_PARENT span_id:535) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:541) ) ] action: [ (C {(_flags_fatal)} { (DQ ('zsh does not pass ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:550) ) ("0 through properly. please declare' ") (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:553) ) ('FLAGS_PARENT=') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:555)) (0) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:557)) (' before calling shFlags') ) } ) ] spids: [527 543] ) ] ) ] spids: [466 482] ) ] ) (command.Subshell command_list: (command.CommandList children: [ (command.Sentence child: (C {(echo)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:FLAGS_TRUE span_id:576) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(0)}) ) ) } ) terminator: (Token id:Id.Op_Semi val:';' span_id:581) ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:585) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op:(Token id:Id.Redir_GreatAnd val:'2>&' span_id:588) fd:2 arg_word:{(1)}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-eq)} {(${ Id.VSub_Name FLAGS_TRUE)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:604) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_USE_BUILTIN) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [609] ) ] ) ] spids: [591 606] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_USE_BUILTIN) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [617] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_RESERVED_LIST) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: ' ARGC ARGV ERROR FALSE GETOPT_CMD HELP PARENT TRUE ' span_id: 641 ) ) } spids: [639] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_RESERVED_LIST) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name __FLAGS_RESERVED_LIST) (' VERSION '))} spids: [644] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS_STD) op: assign_op.Equal rhs: {(0)} spids: [656] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS_ENH) op: assign_op.Equal rhs: {(1)} spids: [659] ) ] ) (command.ShFunction name: _flags_getopt_vers body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_getopt_cmd_) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:675) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(${ Id.VSub_Name FLAGS_GETOPT_CMD)} ) ) } spids: [673] ) ] ) (command.Case to_match: { (DQ (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:686) command_list: (command.CommandList children: [ (command.Simple words: [{(${ Id.VSub_Name _flags_getopt_cmd_)} {(-lfoo)} {(SQ )} {(--foo)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:700) fd: 2 arg_word: {(1)} ) ] ) ] ) ) ) } arms: [ (case_arm pat_list: [{(SQ (Token id:Id.Lit_Chars val:' -- --foo' span_id:709))}] action: [(C {(echo)} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)})] spids: [708 711 719 -1] ) (case_arm pat_list: [{(SQ (Token id:Id.Lit_Chars val:' --foo --' span_id:723))}] action: [(C {(echo)} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)})] spids: [722 725 733 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [(C {(echo)} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)})] spids: [740 741 749 -1] ) ] ) (C {(unset)} {(_flags_getopt_cmd_)}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:765) command_list: (command.CommandList children:[(C {(_flags_getopt_vers)})]) ) } spids: [764] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_OPTSTR_SHORT) op: assign_op.Equal rhs: {(0)} spids: [775] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_OPTSTR_LONG) op: assign_op.Equal rhs: {(1)} spids: [778] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_NULL) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'~' span_id:784))} spids: [782] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_DEFAULT) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:default span_id:793))} spids: [791] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_HELP) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:help span_id:798))} spids: [796] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_SHORT) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:short span_id:803))} spids: [801] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_TYPE) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:type span_id:808))} spids: [806] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_LEN_SHORT) op: assign_op.Equal rhs: {(0)} spids: [815] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_LEN_LONG) op: assign_op.Equal rhs: {(1)} spids: [818] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_NONE) op: assign_op.Equal rhs: {(0)} spids: [825] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_BOOLEAN) op: assign_op.Equal rhs: {(1)} spids: [828] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_FLOAT) op: assign_op.Equal rhs: {(2)} spids: [831] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_INTEGER) op: assign_op.Equal rhs: {(3)} spids: [834] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_STRING) op: assign_op.Equal rhs: {(4)} spids: [837] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_constants) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:845) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(Id.KW_Set set)}) (C {(awk)} {(-F) (Id.Lit_Equals '=')} { (SQ (Token id: Id.Lit_Chars val: '/^FLAGS_/ || /^__FLAGS_/ {print $1}' span_id: 857 ) ) } ) ] negated: F ) ] ) ) } spids: [844] ) ] ) (command.ForEach iter_name: __flags_const iter_words: [{(${ Id.VSub_Name __flags_constants)}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(${ Id.VSub_Name __flags_const)} arms: [ (case_arm pat_list: [{(FLAGS_HELP)}] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:891) ) ] spids: [888 889 893 -1] ) (case_arm pat_list: [{(FLAGS_PARENT)}] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:899) ) ] spids: [896 897 901 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ZSH_VERSION span_id:919) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:925) ) ] action: [ (C {(readonly)} {(DQ (${ Id.VSub_Name __flags_const))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:939) ) ] spids: [911 927] ) ] ) (command.Case to_match: {(${ Id.VSub_Name ZSH_VERSION)} arms: [ (case_arm pat_list: [{(Id.Lit_LBracket '[') (123) (Id.Lit_RBracket ']') (.) (Id.Lit_Star '*')}] action: [(C {(readonly)} {(DQ (${ Id.VSub_Name __flags_const))})] spids: [954 959 969 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [(C {(readonly)} {(-g)} {(DQ (${ Id.VSub_Name __flags_const))})] spids: [972 973 985 -1] ) ] ) ] ) ) (C {(unset)} {(__flags_const)} {(__flags_constants)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_boolNames) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:' ' span_id:1017))} spids: [1015] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_longNames) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:' ' span_id:1025))} spids: [1023] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_shortNames) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:' ' span_id:1033))} spids: [1031] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_definedNames) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:' ' span_id:1041))} spids: [1039] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_columns) op: assign_op.Equal rhs: {(SQ )} spids: [1048] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_level) op: assign_op.Equal rhs: {(0)} spids: [1055] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_opts) op: assign_op.Equal rhs: {(SQ )} spids: [1061] ) ] ) (command.ShFunction name: _flags_debug body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name __flags_level)} {(-le)} {(${ Id.VSub_Name FLAGS_LEVEL_DEBUG)} {(Id.Lit_RBracket ']')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1105) ) ] ) (command.Simple words: [{(echo)} {(DQ ('flags:DEBUG ') ($ Id.VSub_Star '$*'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1115) fd: -1 arg_word: {(2)} ) ] ) ] ) ) (command.ShFunction name: _flags_info body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name __flags_level)} {(-le)} {(${ Id.VSub_Name FLAGS_LEVEL_INFO)} {(Id.Lit_RBracket ']')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1143) ) ] ) (command.Simple words: [{(echo)} {(DQ ('flags:INFO ') ($ Id.VSub_Star '$*'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1153) fd: -1 arg_word: {(2)} ) ] ) ] ) ) (command.ShFunction name: _flags_warn body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name __flags_level)} {(-le)} {(${ Id.VSub_Name FLAGS_LEVEL_WARN)} {(Id.Lit_RBracket ']')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1181) ) ] ) (command.Simple words: [{(echo)} {(DQ ('flags:WARN ') ($ Id.VSub_Star '$*'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1191) fd: -1 arg_word: {(2)} ) ] ) ] ) ) (command.ShFunction name: _flags_error body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name __flags_level)} {(-le)} {(${ Id.VSub_Name FLAGS_LEVEL_ERROR)} {(Id.Lit_RBracket ']')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1219) ) ] ) (command.Simple words: [{(echo)} {(DQ ('flags:ERROR ') ($ Id.VSub_Star '$*'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1229) fd: -1 arg_word: {(2)} ) ] ) ] ) ) (command.ShFunction name: _flags_fatal body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name __flags_level)} {(-le)} {(${ Id.VSub_Name FLAGS_LEVEL_FATAL)} {(Id.Lit_RBracket ']')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1257) ) ] ) (command.Simple words: [{(echo)} {(DQ ('flags:FATAL ') ($ Id.VSub_Star '$*'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1267) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1271) arg_word: {(${ Id.VSub_Name FLAGS_ERROR)} ) ] ) ) (command.ShFunction name: flags_loggingLevel body: (command.BraceGroup children: [ (command.Sentence child: (C {(echo)} {(${ Id.VSub_Name __flags_level)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1294) ) ] ) ) (command.ShFunction name: flags_setLoggingLevel body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-ne)} {(1)} {(Id.Lit_RBracket ']')}) (C {(_flags_fatal)} {(DQ ('flags_setLevel(): logging level missing'))}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_level_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1343] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_level_))} {(-ge)} {(DQ (${ Id.VSub_Name FLAGS_LEVEL_DEBUG))} {(-a)} {(DQ (${ Id.VSub_Name _flags_level_))} {(-le)} {(DQ (${ Id.VSub_Name FLAGS_LEVEL_FATAL))} {(Id.Lit_RBracket ']')} ) (C {(_flags_fatal)} {(DQ ("Invalid logging level '") (${ Id.VSub_Name _flags_level_) ("' specified."))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_level) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1398] ) ] ) (C {(unset)} {(_flags_level_)}) ] ) ) (command.ShFunction name: _flags_define body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-lt)} {(4)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1481) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'DEFINE error: too few arguments' span_id: 1488 ) ) } spids: [1486] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [1492] ) ] ) (C {(_flags_error)} {(DQ (${ Id.VSub_Name flags_error))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1507) arg_word: {(${ Id.VSub_Name flags_return)} ) ] spids: [1470 1483] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_type_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1518] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_name_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [1522] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_default_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [1526] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_help_) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Number val:4 span_id:1532) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{('\xc2\xa7')}) ) } spids: [1530] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_short_) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Number val:5 span_id:1543) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(${ Id.VSub_Name __FLAGS_NULL)} ) ) } spids: [1541] ) ] ) (C {(_flags_debug)} { (DQ ('type:') (${ Id.VSub_Name _flags_type_) (' name:') (${ Id.VSub_Name _flags_name_)) } { (DQ ("default:'") (${ Id.VSub_Name _flags_default_) ("' help:'") (${ Id.VSub_Name _flags_help_) ("'") ) } {(DQ ('short:') (${ Id.VSub_Name _flags_short_))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [1590] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_usName_) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1598) command_list: (command.CommandList children: [ (C {(_flags_underscoreName)} {(DQ (${ Id.VSub_Name _flags_name_))}) ] ) ) ) } spids: [1596] ) ] ) (C {(_flags_itemInList)} {(DQ (${ Id.VSub_Name _flags_usName_))} {(DQ (${ Id.VSub_Name __FLAGS_RESERVED_LIST))} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-eq)} {(${ Id.VSub_Name FLAGS_TRUE)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1645) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: {(DQ ('flag name (') (${ Id.VSub_Name _flags_name_) (') is reserved'))} spids: [1650] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [1660] ) ] ) ] spids: [1632 1647] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name _flags_return_)} {(-eq)} {(${ Id.VSub_Name FLAGS_TRUE)} {(-a)} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} {(-ne)} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))} {(-a)} {(DQ (${ Id.VSub_Name _flags_short_))} {(Id.Lit_Equals '=')} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {(Id.Lit_RBracket ']')} ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ ('short flag required for (') (${ Id.VSub_Name _flags_name_) (') on this platform') ) } spids: [1730] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [1740] ) ] ) ] spids: [1674 1727] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name _flags_return_)} {(-eq)} {(${ Id.VSub_Name FLAGS_TRUE)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1769) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_itemInList)} {(DQ (${ Id.VSub_Name _flags_usName_))} {(DQ (${ Id.VSub_Name __flags_definedNames))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1789) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ ('definition for ([no]') (${ Id.VSub_Name _flags_name_) (') already exists') ) } spids: [1794] ) ] ) (C {(_flags_warn)} {(DQ (${ Id.VSub_Name flags_error))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [1813] ) ] ) ] spids: [1774 1791] ) ] ) ] spids: [1754 1771] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name _flags_return_)} {(-eq)} {(${ Id.VSub_Name FLAGS_TRUE)} {(-a)} {(DQ (${ Id.VSub_Name _flags_short_))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {(Id.Lit_RBracket ']')} ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_itemInList)} {(DQ (${ Id.VSub_Name _flags_short_))} {(DQ (${ Id.VSub_Name __flags_shortNames))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1884) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ ('flag short name (') (${ Id.VSub_Name _flags_short_) (') already defined') ) } spids: [1889] ) ] ) (C {(_flags_warn)} {(DQ (${ Id.VSub_Name flags_error))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [1908] ) ] ) ] spids: [1869 1886] ) ] ) ] spids: [1830 1866] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name _flags_return_)} {(-eq)} {(${ Id.VSub_Name FLAGS_TRUE)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1948) ) ] action: [ (command.Case to_match: {(${ Id.VSub_Name _flags_type_)} arms: [ (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_validBool)} {(DQ (${ Id.VSub_Name _flags_default_))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1977) ) ] action: [ (command.Case to_match: {(${ Id.VSub_Name _flags_default_)} arms: [ (case_arm pat_list: [{(true)} {(t)} {(0)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_default_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [1998] ) ] ) ] spids: [1991 1996 2003 -1] ) (case_arm pat_list: [{(false)} {(f)} {(1)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_default_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [2013] ) ] ) ] spids: [2006 2011 2018 -1] ) ] ) ] spids: [1968 1979] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ ("invalid default flag value '") (${ Id.VSub_Name _flags_default_) ("'") ) } spids: [2027] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [2037] ) ] ) ] ) ] spids: [1962 1965 2046 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_validFloat)} {(DQ (${ Id.VSub_Name _flags_default_))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:2065) ) ] action: [(C {(Id.Lit_Other ':')})] spids: [2056 2067] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ ("invalid default flag value '") (${ Id.VSub_Name _flags_default_) ("'") ) } spids: [2076] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [2086] ) ] ) ] ) ] spids: [2050 2053 2095 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_validInt)} {(DQ (${ Id.VSub_Name _flags_default_))}) terminator: (Token id:Id.Op_Semi val:';' span_id:2114) ) ] action: [(C {(Id.Lit_Other ':')})] spids: [2105 2116] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ ("invalid default flag value '") (${ Id.VSub_Name _flags_default_) ("'") ) } spids: [2125] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [2135] ) ] ) ] ) ] spids: [2099 2102 2144 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}] spids: [2148 2151 2153 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ ("unrecognized flag type '") (${ Id.VSub_Name _flags_type_) ("'") ) } spids: [2164] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [2174] ) ] ) ] spids: [2160 2161 2180 -1] ) ] ) ] spids: [1933 1950] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name _flags_return_)} {(-eq)} {(${ Id.VSub_Name FLAGS_TRUE)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:2205) ) ] action: [ (C {(eval)} { (DQ (FLAGS_) (${ Id.VSub_Name _flags_usName_) ("='") (${ Id.VSub_Name _flags_default_) ("'") ) } ) (C {(eval)} { (DQ (__flags_) (${ Id.VSub_Name _flags_usName_) (_) (${ Id.VSub_Name __FLAGS_INFO_TYPE) ('=') (${ Id.VSub_Name _flags_type_) ) } ) (C {(eval)} { (DQ (__flags_) (${ Id.VSub_Name _flags_usName_) (_) (${ Id.VSub_Name __FLAGS_INFO_DEFAULT) ('=') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:2260)) (${ Id.VSub_Name _flags_default_) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:2264)) ) } ) (C {(eval)} { (DQ (__flags_) (${ Id.VSub_Name _flags_usName_) (_) (${ Id.VSub_Name __FLAGS_INFO_HELP) ('=') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:2280)) (${ Id.VSub_Name _flags_help_) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:2284)) ) } ) (C {(eval)} { (DQ (__flags_) (${ Id.VSub_Name _flags_usName_) (_) (${ Id.VSub_Name __FLAGS_INFO_SHORT) ("='") (${ Id.VSub_Name _flags_short_) ("'") ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_shortNames) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name __flags_shortNames) (${ Id.VSub_Name _flags_short_) (' ') ) } spids: [2312] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_longNames) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name __flags_longNames) (${ Id.VSub_Name _flags_name_) (' ') ) } spids: [2324] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_type_))} {(-eq)} {(DQ (${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_boolNames) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name __flags_boolNames) (no) (${ Id.VSub_Name _flags_name_) (' ') ) } spids: [2358] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_definedNames) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name __flags_definedNames) (${ Id.VSub_Name _flags_usName_) (' ') ) } spids: [2376] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_type_))} {(-eq)} {(DQ (${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_definedNames) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name __flags_definedNames) (no) (${ Id.VSub_Name _flags_usName_) (' ') ) } spids: [2410] ) ] ) ] ) ] spids: [2190 2207] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name _flags_return_)} spids: [2427] ) ] ) (C {(unset)} {(_flags_default_)} {(_flags_help_)} {(_flags_name_)} {(_flags_return_)} {(_flags_short_)} {(_flags_type_)} {(_flags_usName_)} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name flags_return)} {(-eq)} {(${ Id.VSub_Name FLAGS_ERROR)} {(Id.Lit_RBracket ']')} ) (C {(_flags_error)} {(DQ (${ Id.VSub_Name flags_error))}) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:2477) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_underscoreName body: (command.BraceGroup children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ Id.VSub_Number '$1'))}) (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:- span_id:2521))} {(SQ (Token id:Id.Lit_Chars val:_ span_id:2525))} ) ] negated: F ) ] ) ) (command.ShFunction name: _flags_genOptStr body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_optStrType_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [2571] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opts_) op: assign_op.Equal rhs: {(SQ )} spids: [2576] ) ] ) (command.ForEach iter_name: _flags_name_ iter_words: [{(${ Id.VSub_Name __flags_longNames)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_usName_) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:2598) command_list: (command.CommandList children: [ (C {(_flags_underscoreName)} {(DQ (${ Id.VSub_Name _flags_name_))} ) ] ) ) ) } spids: [2596] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_type_) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:2614) command_list: (command.CommandList children: [ (C {(_flags_getFlagInfo)} {(DQ (${ Id.VSub_Name _flags_usName_))} {(DQ (${ Id.VSub_Name __FLAGS_INFO_TYPE))} ) ] ) ) ) } spids: [2612] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-eq)} {(${ Id.VSub_Name FLAGS_TRUE)} {(Id.Lit_RBracket ']')} ) (C {(_flags_fatal)} { (SQ (Token id: Id.Lit_Chars val: 'call to _flags_type_ failed' span_id: 2651 ) ) } ) ] ) (command.Case to_match: {(${ Id.VSub_Name _flags_optStrType_)} arms: [ (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_shortName_) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id: Id.Left_Backtick val: '`' span_id: 2672 ) command_list: (command.CommandList children: [ (C {(_flags_getFlagInfo)} {(DQ (${ Id.VSub_Name _flags_usName_))} {(DQ (${ Id.VSub_Name __FLAGS_INFO_SHORT))} ) ] ) ) ) } spids: [2670] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_shortName_))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:2717) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opts_) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name _flags_opts_) (${ Id.VSub_Name _flags_shortName_) ) } spids: [2722] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_type_))} {(-ne)} {(DQ (${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opts_) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name _flags_opts_) (':'))} spids: [2759] ) ] ) ] ) ] spids: [2697 2719] ) ] ) ] spids: [2664 2667 2771 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_OPTSTR_LONG)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opts_) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: _flags_opts_ span_id: 2784 ) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(${ Id.VSub_Name _flags_opts_) (',')} ) ) (${ Id.VSub_Name _flags_name_) ) } spids: [2781] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_type_))} {(-ne)} {(DQ (${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opts_) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name _flags_opts_) (':'))} spids: [2823] ) ] ) ] ) ] spids: [2775 2778 2832 -1] ) ] ) ] ) ) (C {(echo)} {(DQ (${ Id.VSub_Name _flags_opts_))}) (C {(unset)} {(_flags_name_)} {(_flags_opts_)} {(_flags_optStrType_)} {(_flags_shortName_)} {(_flags_type_)} {(_flags_usName_)} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:2868) arg_word: {(${ Id.VSub_Name FLAGS_TRUE)} ) ] ) ) (command.ShFunction name: _flags_getFlagInfo body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_gFI_usName_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [2919] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_gFI_info_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [2923] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_infoVar_) op: assign_op.Equal rhs: { (DQ (__flags_) (${ Id.VSub_Name _flags_gFI_usName_) (_) (${ Id.VSub_Name _flags_gFI_info_) ) } spids: [2940] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_strToEval_) op: assign_op.Equal rhs: { (DQ ('_flags_infoValue_=') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:2956) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:2957)) ('{') (${ Id.VSub_Name _flags_infoVar_) (':-}') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:2963)) ) } spids: [2953] ) ] ) (C {(eval)} {(DQ (${ Id.VSub_Name _flags_strToEval_))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name _flags_infoValue_))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:2989) ) ] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_gFI_info_))} {(Id.Lit_Equals '=')} {(${ Id.VSub_Name __FLAGS_INFO_HELP)} {(-a)} {(DQ (${ Id.VSub_Name _flags_infoValue_))} {(Id.Lit_Equals '=')} {(SQ (Token id:Id.Lit_Chars val:'\xc2\xa7' span_id:3025))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_infoValue_) op: assign_op.Equal rhs: {(SQ )} spids: [3032] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3037] ) ] ) ] spids: [2976 2991] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_typeVar_) op: assign_op.Equal rhs: { (DQ (__flags_) (${ Id.VSub_Name _flags_gFI_usName_) (_) (${ Id.VSub_Name __FLAGS_INFO_TYPE) ) } spids: [3090] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_strToEval_) op: assign_op.Equal rhs: { (DQ ('_flags_typeValue_=') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:3106) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3107)) ('{') (${ Id.VSub_Name _flags_typeVar_) (':-}') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:3113)) ) } spids: [3103] ) ] ) (C {(eval)} {(DQ (${ Id.VSub_Name _flags_strToEval_))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_typeValue_))} {(Id.Lit_Equals '=')} {(DQ (${ Id.VSub_Name __FLAGS_TYPE_STRING))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:3149) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3154] ) ] ) ] spids: [3130 3151] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [3163] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ ('missing flag info variable (') (${ Id.VSub_Name _flags_infoVar_) (')') ) } spids: [3169] ) ] ) ] ) ] ) (C {(echo)} {(DQ (${ Id.VSub_Name _flags_infoValue_))}) (C {(unset)} {(_flags_gFI_usName_)} {(_flags_gfI_info_)} {(_flags_infoValue_)} {(_flags_infoVar_)} {(_flags_strToEval_)} {(_flags_typeValue_)} {(_flags_typeVar_)} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name flags_return)} {(-eq)} {(${ Id.VSub_Name FLAGS_ERROR)} {(Id.Lit_RBracket ']')} ) (C {(_flags_error)} {(DQ (${ Id.VSub_Name flags_error))}) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:3239) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_itemInList body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_str_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3285] ) ] ) (C {(shift)}) (command.Case to_match: { (DQ (' ') (braced_var_sub token: (Token id:Id.VSub_Star val:'*' span_id:3298) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) (' ') ) } arms: [ (case_arm pat_list: [ {(Id.Lit_Star '*') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\ ' span_id:3308) ) (${ Id.VSub_Name _flags_str_) (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\ ' span_id:3312) ) (Id.Lit_Star '*') } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3316] ) ] ) ] spids: [3307 3314 3321 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [3327] ) ] ) ] spids: [3324 3325 3332 -1] ) ] ) (C {(unset)} {(_flags_str_)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:3344) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_columns body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ (${ Id.VSub_Name __flags_columns))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:3385) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [{(eval)} {(stty)} {(size)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:3398) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:3401) fd: 2 arg_word: {(1)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:3403) ) ] action: [ (C {(Id.KW_Set set)} {(--)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:3420) command_list: (command.CommandList children: [(C {(stty)} {(size)})] ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_columns) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:2 span_id:3432) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } spids: [3429] ) ] ) ] spids: [3390 3405] ) ] ) ] spids: [3372 3387] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ (${ Id.VSub_Name __flags_columns))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:3457) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [{(eval)} {(tput)} {(cols)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:3470) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:3473) fd: 2 arg_word: {(1)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:3475) ) ] action: [ (C {(Id.KW_Set set)} {(--)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:3488) command_list: (command.CommandList children: [(C {(tput)} {(cols)})] ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_columns) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:3500) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } spids: [3497] ) ] ) ] spids: [3462 3477] ) ] ) ] spids: [3444 3459] ) ] ) (C {(echo)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:__flags_columns span_id:3516) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(80)}) ) ) } ) ] ) ) (command.ShFunction name: _flags_validBool body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_bool_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3550] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3555] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name _flags_bool_))} arms: [ (case_arm pat_list:[{(true)} {(t)} {(0)}] spids:[3572 3577 3579 -1]) (case_arm pat_list:[{(false)} {(f)} {(1)}] spids:[3582 3587 3589 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [3595] ) ] ) ] spids: [3592 3593 3600 -1] ) ] ) (C {(unset)} {(_flags_bool_)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:3612) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_validFloat body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [3646] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_RBracket ']')}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:3664) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_float_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3671] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_validInt)} {(DQ (${ Id.VSub_Name _flags_float_))}) terminator: (Token id:Id.Op_Semi val:';' span_id:3685) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3690] ) ] ) ] spids: [3676 3687] ) (if_arm cond: [ (command.Sentence child: (C {(_flags_useBuiltin)}) terminator: (Token id:Id.Op_Semi val:';' span_id:3699) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_float_whole_) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:_flags_float_ span_id:3706) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{('.*')}) ) } spids: [3704] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_float_fraction_) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:_flags_float_ span_id:3714) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{('*.')}) ) } spids: [3712] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_validInt)} { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: _flags_float_whole_ span_id: 3726 ) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(0)} ) ) ) } {(-a)} {(_flags_validInt)} {(DQ (${ Id.VSub_Name _flags_float_fraction_))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:3743) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3748] ) ] ) ] spids: [3720 3745] ) ] ) (C {(unset)} {(_flags_float_whole_)} {(_flags_float_fraction_)}) ] spids: [3696 3701] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3767] ) ] ) (command.Case to_match: {(${ Id.VSub_Name _flags_float_)} arms: [ (case_arm pat_list: [{(-) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_test_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:3791) command_list: (command.CommandList children: [ (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_float_))} {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'\\(-[0-9]*\\.[0-9]*\\)' span_id:3817))} ) ] ) ) } spids: [3790] ) ] ) ] spids: [3782 3784 3822 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_test_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:3833) command_list: (command.CommandList children: [ (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_float_))} {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'\\([0-9]*\\.[0-9]*\\)' span_id:3859))} ) ] ) ) } spids: [3832] ) ] ) ] spids: [3825 3826 3864 -1] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_test_))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (${ Id.VSub_Name _flags_float_))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [3891] ) ] ) ] ) (C {(unset)} {(_flags_test_)}) ] ) (C {(unset)} {(_flags_float_)} {(_flags_float_whole_)} {(_flags_float_fraction_)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:3915) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_validInt body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [3949] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_RBracket ']')}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:3967) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_int_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3974] ) ] ) (command.Case to_match: {(${ Id.VSub_Name _flags_int_)} arms: [ (case_arm pat_list: [{(-) (Id.Lit_Star '*') (.) (Id.Lit_Star '*')}] spids: [3988 3992 3994 -1] ) (case_arm pat_list: [{(-) (Id.Lit_Star '*')}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_useBuiltin)}) terminator: (Token id:Id.Op_Semi val:';' span_id:4011) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_int_) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:_flags_int_ span_id:4018) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(-)}) ) } spids: [4016] ) ] ) ] spids: [4008 4013] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_int_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:4028) command_list: (command.CommandList children: [ (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_int_))} {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'-\\([0-9][0-9]*\\)' span_id:4048))} ) ] ) ) } spids: [4027] ) ] ) ] ) ] spids: [4000 4002 4056 -1] ) ] ) (command.Case to_match: {(${ Id.VSub_Name _flags_int_)} arms: [ (case_arm pat_list: [ {(Id.Lit_Star '*') (Id.Lit_LBracket '[') (Id.KW_Bang '!') (0-9) (Id.Lit_RBracket ']') (Id.Lit_Star '*') } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [4080] ) ] ) ] spids: [4072 4078 4085 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [4091] ) ] ) ] spids: [4088 4089 4096 -1] ) ] ) (C {(unset)} {(_flags_int_)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:4108) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_getoptStandard body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [4151] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_shortOpts_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:4158) command_list: (command.CommandList children: [ (C {(_flags_genOptStr)} {(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)}) ] ) ) } spids: [4157] ) ] ) (command.ForEach iter_name: _flags_opt_ iter_words: [{(DQ ($ Id.VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_match_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:4193) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(DQ (x) (${ Id.VSub_Name _flags_opt_) (x))}) (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/ //g' span_id:4210))} ) ] negated: F ) ] ) ) } spids: [4192] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_match_))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (x) (${ Id.VSub_Name _flags_opt_) (x))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:4237) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'the available getopt does not support spaces in options' span_id: 4244 ) ) } spids: [4242] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [4248] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:4254) ) ] spids: [4215 4239] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name flags_return)} {(-eq)} {(${ Id.VSub_Name FLAGS_TRUE)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:4279) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_opts) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:4285) command_list: (command.CommandList children: [ (command.Simple words: [ {(getopt)} {(DQ (${ Id.VSub_Name _flags_shortOpts_))} {(DQ ($ Id.VSub_At '$@'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:4300) fd: 2 arg_word: {(1)} ) ] ) ] ) ) } spids: [4284] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_rtrn_) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [4305] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name _flags_rtrn_)} {(-ne)} {(${ Id.VSub_Name FLAGS_TRUE)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:4324) ) ] action: [ (C {(_flags_warn)} {(DQ (${ Id.VSub_Name __flags_opts))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'unable to parse provided options with getopt.' span_id: 4340 ) ) } spids: [4338] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [4344] ) ] ) ] spids: [4309 4326] ) ] ) ] spids: [4264 4281] ) ] ) (C {(unset)} {(_flags_match_)} {(_flags_opt_)} {(_flags_rtrn_)} {(_flags_shortOpts_)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:4368) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_getoptEnhanced body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [4411] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_shortOpts_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:4418) command_list: (command.CommandList children: [ (C {(_flags_genOptStr)} {(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)}) ] ) ) } spids: [4417] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_boolOpts_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:4430) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(DQ (${ Id.VSub_Name __flags_boolNames))}) (C {(sed)} { (SQ (Token id: Id.Lit_Chars val: 's/^ *//;s/ *$//;s/ /,/g' span_id: 4450 ) ) } ) ] negated: F ) ] ) ) } spids: [4429] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_longOpts_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:4456) command_list: (command.CommandList children: [(C {(_flags_genOptStr)} {(${ Id.VSub_Name __FLAGS_OPTSTR_LONG)})] ) ) } spids: [4455] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_opts) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:4469) command_list: (command.CommandList children: [ (command.Simple words: [ {(${ Id.VSub_Name FLAGS_GETOPT_CMD)} {(-o)} {(DQ (${ Id.VSub_Name _flags_shortOpts_))} {(-l)} { (DQ (${ Id.VSub_Name _flags_longOpts_) (',') (${ Id.VSub_Name _flags_boolOpts_) ) } {(--)} {(DQ ($ Id.VSub_At '$@'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:4517) fd: 2 arg_word: {(1)} ) ] ) ] ) ) } spids: [4468] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_rtrn_) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [4522] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name _flags_rtrn_)} {(-ne)} {(${ Id.VSub_Name FLAGS_TRUE)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:4541) ) ] action: [ (C {(_flags_warn)} {(DQ (${ Id.VSub_Name __flags_opts))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'unable to parse provided options with getopt.' span_id: 4557 ) ) } spids: [4555] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [4561] ) ] ) ] spids: [4526 4543] ) ] ) (C {(unset)} {(_flags_boolOpts_)} {(_flags_longOpts_)} {(_flags_rtrn_)} {(_flags_shortOpts_)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:4582) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_parseGetopt body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_argc_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4631] ) ] ) (C {(shift)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [4639] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} {(-ne)} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:4665) ) ] action: [(C {(Id.KW_Set set)} {(--)} {($ Id.VSub_At '$@')})] spids: [4646 4667] ) ] else_action: [(C {(eval)} {(Id.KW_Set set)} {(--)} {(DQ ($ Id.VSub_At '$@'))})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_ARGC) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:4728) command_list: (command.CommandList children: [ (C {(_flags_math)} { (DQ ($ Id.VSub_Pound '$#') (' - 1 - ') (${ Id.VSub_Name _flags_argc_)) } ) ] ) ) } spids: [4727] ) ] ) (C {(export)} {(FLAGS_ARGC)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:4753) cond: [ (command.Sentence child: (C {(true)}) terminator: (Token id:Id.Op_Semi val:';' span_id:4756) ) ] body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opt_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4761] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_arg_) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Number val:2 span_id:4767) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{}) ) } spids: [4765] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_type_) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_TYPE_NONE)} spids: [4772] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_name_) op: assign_op.Equal rhs: {(SQ )} spids: [4778] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name _flags_opt_))} arms: [ (case_arm pat_list: [{(--)}] action: [ (command.Sentence child: (C {(shift)}) terminator: (Token id:Id.Op_Semi val:';' span_id:4803) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:4805) ) ] spids: [4799 4800 4807 -1] ) (case_arm pat_list: [{(--) (Id.Lit_Star '*')}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_useBuiltin)}) terminator: (Token id:Id.Op_Semi val:';' span_id:4825) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opt_) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id: Id.VSub_Name val: _flags_opt_ span_id: 4832 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {('*--')} ) ) } spids: [4830] ) ] ) ] spids: [4822 4827] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opt_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_Backtick val: '`' span_id: 4842 ) command_list: (command.CommandList children: [ (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_opt_))} {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'--\\(.*\\)' span_id:4862))} ) ] ) ) } spids: [4841] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_len_) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_LEN_LONG)} spids: [4870] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_itemInList)} {(DQ (${ Id.VSub_Name _flags_opt_))} {(DQ (${ Id.VSub_Name __flags_longNames))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:4891) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_name_) op: assign_op.Equal rhs: {(${ Id.VSub_Name _flags_opt_)} spids: [4896] ) ] ) ] spids: [4876 4893] ) ] else_action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_itemInList)} {(DQ (${ Id.VSub_Name _flags_opt_))} {(DQ (${ Id.VSub_Name __flags_boolNames))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:4924) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_useBuiltin)}) terminator: (Token id: Id.Op_Semi val: ';' span_id: 4932 ) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_name_) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id: Id.VSub_Name val: _flags_opt_ span_id: 4939 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {('*no')} ) ) } spids: [4937] ) ] ) ] spids: [4929 4934] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_name_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_Backtick val: '`' span_id: 4949 ) command_list: (command.CommandList children: [ (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_opt_))} {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'no\\(.*\\)' span_id:4969))} ) ] ) ) } spids: [4948] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_type_) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} spids: [4977] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_arg_) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_NULL)} spids: [4983] ) ] ) ] spids: [4909 4926] ) ] ) ] ) ] spids: [4814 4816 4995 -1] ) (case_arm pat_list: [{(-) (Id.Lit_Star '*')}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_useBuiltin)}) terminator: (Token id:Id.Op_Semi val:';' span_id:5010) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opt_) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id: Id.VSub_Name val: _flags_opt_ span_id: 5017 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {('*-')} ) ) } spids: [5015] ) ] ) ] spids: [5007 5012] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opt_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_Backtick val: '`' span_id: 5027 ) command_list: (command.CommandList children: [ (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_opt_))} {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'-\\(.*\\)' span_id:5047))} ) ] ) ) } spids: [5026] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_len_) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_LEN_SHORT)} spids: [5055] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_itemInList)} {(DQ (${ Id.VSub_Name _flags_opt_))} {(DQ (${ Id.VSub_Name __flags_shortNames))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5076) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_pos_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_Backtick val: '`' span_id: 5090 ) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} { (DQ (${ Id.VSub_Name __flags_shortNames) ) } ) (C {(awk)} { (SQ (Token id: Id.Lit_Chars val: 'BEGIN{RS=" ";rn=0}$0==e{rn=NR}END{print rn}' span_id: 5113 ) ) } {(Id.Lit_VarLike 'e=') (DQ (${ Id.VSub_Name _flags_opt_))} ) ] negated: F ) ] ) ) } spids: [5089] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_name_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_Backtick val: '`' span_id: 5128 ) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(DQ (${ Id.VSub_Name __flags_longNames))} ) (C {(awk)} { (SQ (Token id: Id.Lit_Chars val: 'BEGIN{RS=" "}rn==NR{print $0}' span_id: 5148 ) ) } {(Id.Lit_VarLike 'rn=') (DQ (${ Id.VSub_Name _flags_pos_))} ) ] negated: F ) ] ) ) } spids: [5127] ) ] ) ] spids: [5061 5078] ) ] ) ] spids: [4999 5001 5163 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ (${ Id.VSub_Name _flags_name_))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5187) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ ('unrecognized option (') (${ Id.VSub_Name _flags_opt_) (')')) } spids: [5192] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [5202] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:5208) ) ] spids: [5174 5189] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_usName_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:5220) command_list: (command.CommandList children: [ (C {(_flags_underscoreName)} {(DQ (${ Id.VSub_Name _flags_name_))}) ] ) ) } spids: [5219] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name _flags_type_)} {(-eq)} {(${ Id.VSub_Name __FLAGS_TYPE_NONE)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_type_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:5252) command_list: (command.CommandList children: [ (C {(_flags_getFlagInfo)} {(DQ (${ Id.VSub_Name _flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_TYPE)} ) ] ) ) } spids: [5251] ) ] ) ] ) (command.Case to_match: {(${ Id.VSub_Name _flags_type_)} arms: [ (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name _flags_len_)} {(-eq)} {(${ Id.VSub_Name __FLAGS_LEN_LONG)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5304) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_arg_))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5329) ) ] action: [ (C {(eval)} { (DQ (FLAGS_) (${ Id.VSub_Name _flags_usName_) ('=') (${ Id.VSub_Name FLAGS_TRUE) ) } ) ] spids: [5309 5331] ) ] else_action: [ (C {(eval)} { (DQ (FLAGS_) (${ Id.VSub_Name _flags_usName_) ('=') (${ Id.VSub_Name FLAGS_FALSE) ) } ) ] ) ] spids: [5289 5306] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_strToEval_) op: assign_op.Equal rhs: { (DQ ('_flags_val_=') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 5375 ) ) ('{__flags_') (${ Id.VSub_Name _flags_usName_) (_) (${ Id.VSub_Name __FLAGS_INFO_DEFAULT) ('}') ) } spids: [5371] ) ] ) (C {(eval)} {(DQ (${ Id.VSub_Name _flags_strToEval_))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_val_))} {(-eq)} {(${ Id.VSub_Name FLAGS_FALSE)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5418) ) ] action: [ (C {(eval)} { (DQ (FLAGS_) (${ Id.VSub_Name _flags_usName_) ('=') (${ Id.VSub_Name FLAGS_TRUE) ) } ) ] spids: [5401 5420] ) ] else_action: [ (C {(eval)} { (DQ (FLAGS_) (${ Id.VSub_Name _flags_usName_) ('=') (${ Id.VSub_Name FLAGS_FALSE) ) } ) ] ) ] ) ] spids: [5283 5286 5460 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_validFloat)} {(DQ (${ Id.VSub_Name _flags_arg_))}) terminator: (Token id:Id.Op_Semi val:';' span_id:5479) ) ] action: [ (C {(eval)} { (DQ (FLAGS_) (${ Id.VSub_Name _flags_usName_) ("='") (${ Id.VSub_Name _flags_arg_) ("'") ) } ) ] spids: [5470 5481] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ ('invalid float value (') (${ Id.VSub_Name _flags_arg_) (')') ) } spids: [5502] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [5512] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:5518) ) ] ) ] spids: [5464 5467 5524 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_flags_validInt)} {(DQ (${ Id.VSub_Name _flags_arg_))}) terminator: (Token id:Id.Op_Semi val:';' span_id:5543) ) ] action: [ (C {(eval)} { (DQ (FLAGS_) (${ Id.VSub_Name _flags_usName_) ("='") (${ Id.VSub_Name _flags_arg_) ("'") ) } ) ] spids: [5534 5545] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ ('invalid integer value (') (${ Id.VSub_Name _flags_arg_) (')') ) } spids: [5566] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [5576] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:5582) ) ] ) ] spids: [5528 5531 5588 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}] action: [ (C {(eval)} { (DQ (FLAGS_) (${ Id.VSub_Name _flags_usName_) ("='") (${ Id.VSub_Name _flags_arg_) ("'") ) } ) ] spids: [5592 5595 5613 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_usName_))} {(Id.Lit_Equals '=')} {(SQ (Token id:Id.Lit_Chars val:help span_id:5637))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5641) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name FLAGS_help))} {(-eq)} {(${ Id.VSub_Name FLAGS_TRUE)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5667) ) ] action: [ (C {(flags_help)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'help requested' span_id: 5677 ) ) } spids: [5675] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [5681] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:5687) ) ] spids: [5650 5669] ) ] ) ] spids: [5624 5643] ) ] ) (C {(shift)}) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name _flags_type_))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {(Id.Lit_RBracket ']')} ) (C {(shift)}) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_ARGV) op: assign_op.Equal rhs: {(SQ )} spids: [5734] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:5739) cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-gt)} {(0)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5750) ) ] body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_ARGV) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:FLAGS_ARGV span_id:5758) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(${ Id.VSub_Name FLAGS_ARGV) (' ')} ) ) ("'") ($ Id.VSub_Number '$1') ("'") ) } spids: [5755] ) ] ) (C {(shift)}) ] ) ) (C {(unset)} {(_flags_arg_)} {(_flags_len_)} {(_flags_name_)} {(_flags_opt_)} {(_flags_pos_)} {(_flags_strToEval_)} {(_flags_type_)} {(_flags_usName_)} {(_flags_val_)} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:5801) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_math body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-eq)} {(0)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5852) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [5857] ) ] ) ] spids: [5841 5854] ) (if_arm cond: [ (command.Sentence child: (C {(_flags_useBuiltin)}) terminator: (Token id:Id.Op_Semi val:';' span_id:5866) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_expr_) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'$(($@))' span_id:5885))} spids: [5883] ) ] ) (C {(eval)} {(echo)} {(${ Id.VSub_Name _flags_expr_)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [5898] ) ] ) (C {(unset)} {(_flags_expr_)}) ] spids: [5863 5868] ) ] else_action: [ (C {(eval)} {(expr)} {(DQ ($ Id.VSub_At '$@'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [5919] ) ] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:5927) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_strlen body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_str_) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:5969) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{}) ) } spids: [5967] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ (${ Id.VSub_Name _flags_str_))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5988) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_output) op: assign_op.Equal rhs: {(0)} spids: [5993] ) ] ) ] spids: [5975 5990] ) (if_arm cond: [ (command.Sentence child: (C {(_flags_useBuiltin)}) terminator: (Token id:Id.Op_Semi val:';' span_id:6000) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_output) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:_flags_str_ span_id:6008) prefix_op: (Id.VSub_Pound) ) } spids: [6005] ) ] ) ] spids: [5997 6002] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_output) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:6016) command_list: (command.CommandList children: [ (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_str_))} {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'.*' span_id:6032))} ) ] ) ) } spids: [6015] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [6040] ) ] ) (C {(unset)} {(_flags_str_)}) (C {(echo)} {(DQ (${ Id.VSub_Name flags_output))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:6059) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_useBuiltin body: (command.BraceGroup children: [ (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:6092) arg_word: {(${ Id.VSub_Name __FLAGS_USE_BUILTIN)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:6097) ) ] ) ) (command.ShFunction name: DEFINE_boolean body: (command.BraceGroup children: [ (command.Sentence child: (C {(_flags_define)} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {(DQ ($ Id.VSub_At '$@'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:6165) ) ] ) ) (command.ShFunction name: DEFINE_float body: (command.BraceGroup children: [ (command.Sentence child: (C {(_flags_define)} {(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)} {(DQ ($ Id.VSub_At '$@'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:6188) ) ] ) ) (command.ShFunction name: DEFINE_integer body: (command.BraceGroup children: [ (command.Sentence child: (C {(_flags_define)} {(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)} {(DQ ($ Id.VSub_At '$@'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:6207) ) ] ) ) (command.ShFunction name: DEFINE_string body: (command.BraceGroup children: [ (command.Sentence child: (C {(_flags_define)} {(${ Id.VSub_Name __FLAGS_TYPE_STRING)} {(DQ ($ Id.VSub_At '$@'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:6226) ) ] ) ) (command.ShFunction name: FLAGS body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-z)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:__flags_help_type span_id:6266) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } {(Id.Lit_RBracket ']')} ) (C {(DEFINE_boolean)} {(SQ (Token id:Id.Lit_Chars val:help span_id:6280))} {(false)} {(SQ (Token id:Id.Lit_Chars val:'show this help' span_id:6286))} {(SQ (Token id:Id.Lit_Chars val:h span_id:6290))} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-gt)} {(0)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:6310) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} {(-ne)} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:6334) ) ] action: [(C {(_flags_getoptStandard)} {(DQ ($ Id.VSub_At '$@'))})] spids: [6315 6336] ) ] else_action: [(C {(_flags_getoptEnhanced)} {(DQ ($ Id.VSub_At '$@'))})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [6359] ) ] ) ] spids: [6299 6312] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_opts) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:-- span_id:6372))} spids: [6370] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [6376] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name flags_return)} {(-eq)} {(${ Id.VSub_Name FLAGS_TRUE)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:6401) ) ] action: [ (C {(_flags_parseGetopt)} {($ Id.VSub_Pound '$#')} {(DQ (${ Id.VSub_Name __flags_opts))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [6417] ) ] ) ] spids: [6386 6403] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(${ Id.VSub_Name flags_return)} {(-eq)} {(${ Id.VSub_Name FLAGS_ERROR)} {(Id.Lit_RBracket ']')} ) (C {(_flags_fatal)} {(DQ (${ Id.VSub_Name flags_error))}) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:6450) arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: flags_getoptInfo body: (command.BraceGroup children: [ (C {(_flags_debug)} { (DQ ('uname -a: ') (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:6504) command_list: (command.CommandList children:[(C {(uname)} {(-a)})]) ) ) } ) (C {(_flags_debug)} {(DQ ('PATH: ') (${ Id.VSub_Name PATH))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:BASH_VERSION span_id:6537) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:6543) ) ] action: [ (C {(_flags_debug)} {(SQ (Token id:Id.Lit_Chars val:'shell: bash' span_id:6551))}) (C {(_flags_debug)} {(DQ ('BASH_VERSION: ') (${ Id.VSub_Name BASH_VERSION))}) ] spids: [6529 6545] ) (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:ZSH_VERSION span_id:6573) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:6579) ) ] action: [ (C {(_flags_debug)} {(SQ (Token id:Id.Lit_Chars val:'shell: zsh' span_id:6587))}) (C {(_flags_debug)} {(DQ ('ZSH_VERSION: ') (${ Id.VSub_Name ZSH_VERSION))}) ] spids: [6565 6581] ) ] ) (command.Simple words: [{(${ Id.VSub_Name FLAGS_GETOPT_CMD)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:6613) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_getoptReturn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [6617] ) ] ) (C {(_flags_debug)} {(DQ ('getopt return: ') (${ Id.VSub_Name _flags_getoptReturn))}) (C {(_flags_debug)} { (DQ ('getopt --version: ') (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:6635) command_list: (command.CommandList children: [ (command.Simple words: [{(${ Id.VSub_Name FLAGS_GETOPT_CMD)} {(--version)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:6644) fd: 2 arg_word: {(1)} ) ] ) ] ) ) ) } ) (C {(unset)} {(_flags_getoptReturn)}) ] ) ) (command.ShFunction name: flags_getoptIsEnh body: (command.BraceGroup children: [ (C {(test)} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} {(-eq)} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))} ) ] ) ) (command.ShFunction name: flags_getoptIsStd body: (command.BraceGroup children: [ (C {(test)} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} {(-eq)} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD))} ) ] ) ) (command.ShFunction name: flags_help body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:FLAGS_HELP span_id:6794) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:6800) ) ] action: [ (command.Simple words: [{(echo)} {(DQ (${ Id.VSub_Name FLAGS_HELP))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:6813) fd: -1 arg_word: {(2)} ) ] ) ] spids: [6786 6802] ) ] else_action: [ (command.Simple words: [ {(echo)} { (DQ ('USAGE: ') (braced_var_sub token: (Token id:Id.VSub_Name val:FLAGS_PARENT span_id:6825) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {($ Id.VSub_Number '$0')} ) ) (' [flags] args') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:6832) fd: -1 arg_word: {(2)} ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name __flags_longNames))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:6852) ) ] action: [ (command.Simple words: [{(echo)} {(SQ (Token id:Id.Lit_Chars val:'flags:' span_id:6860))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:6863) fd: -1 arg_word: {(2)} ) ] ) (command.ForEach iter_name: flags_name_ iter_words: [{(${ Id.VSub_Name __flags_longNames)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_flagStr_) op: assign_op.Equal rhs: {(SQ )} spids: [6881] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_boolStr_) op: assign_op.Equal rhs: {(SQ )} spids: [6886] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_usName_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:6892) command_list: (command.CommandList children: [ (C {(_flags_underscoreName)} {(DQ (${ Id.VSub_Name flags_name_))} ) ] ) ) } spids: [6891] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_default_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:6907) command_list: (command.CommandList children: [ (C {(_flags_getFlagInfo)} {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_DEFAULT)} ) ] ) ) } spids: [6906] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_help_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:6930) command_list: (command.CommandList children: [ (C {(_flags_getFlagInfo)} {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_HELP)} ) ] ) ) } spids: [6929] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_short_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:6953) command_list: (command.CommandList children: [ (C {(_flags_getFlagInfo)} {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_SHORT)} ) ] ) ) } spids: [6952] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_type_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:6976) command_list: (command.CommandList children: [ (C {(_flags_getFlagInfo)} {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_TYPE)} ) ] ) ) } spids: [6975] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name flags_short_))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_flagStr_) op: assign_op.Equal rhs: {(DQ (-) (${ Id.VSub_Name flags_short_))} spids: [7022] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} {(-eq)} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:7051) ) ] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name flags_short_))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_flagStr_) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name flags_flagStr_) (','))} spids: [7079] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name flags_type_))} {(-eq)} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {(-a)} {(DQ (${ Id.VSub_Name flags_usName_))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(SQ (Token id:Id.Lit_Chars val:help span_id:7120))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_boolStr_) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'[no]' span_id:7131))} spids: [7129] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_flagStr_) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name flags_flagStr_) (--) (${ Id.VSub_Name flags_boolStr_) (${ Id.VSub_Name flags_name_) (':') ) } spids: [7135] ) ] ) ] spids: [7032 7053] ) ] ) (command.Case to_match: {(${ Id.VSub_Name flags_type_)} arms: [ (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name flags_default_))} {(-eq)} {(${ Id.VSub_Name FLAGS_TRUE)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:7187) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_defaultStr_) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: true span_id: 7194 ) ) } spids: [7192] ) ] ) ] spids: [7170 7189] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_defaultStr_) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:false span_id:7203))} spids: [7201] ) ] ) ] ) ] spids: [7164 7167 7210 -1] ) (case_arm pat_list: [ {(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)} {(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_defaultStr_) op: assign_op.Equal rhs: {(${ Id.VSub_Name flags_default_)} spids: [7223] ) ] ) ] spids: [7213 7220 7228 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_defaultStr_) op: assign_op.Equal rhs: {(DQ ("'") (${ Id.VSub_Name flags_default_) ("'"))} spids: [7236] ) ] ) ] spids: [7231 7234 7245 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_defaultStr_) op: assign_op.Equal rhs: {(DQ ('(default: ') (${ Id.VSub_Name flags_defaultStr_) (')'))} spids: [7251] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_helpStr_) op: assign_op.Equal rhs: { (DQ (' ') (${ Id.VSub_Name flags_flagStr_) (' ') (braced_var_sub token: (Token id:Id.VSub_Name val:flags_help_ span_id:7270) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(${ Id.VSub_Name flags_help_) (' ')} ) ) (${ Id.VSub_Name flags_defaultStr_) ) } spids: [7262] ) ] ) (command.Simple words: [{(_flags_strlen)} {(DQ (${ Id.VSub_Name flags_helpStr_))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:7291) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_helpStrLen_) op: assign_op.Equal rhs: {(${ Id.VSub_Name flags_output)} spids: [7295] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_columns_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:7302) command_list: (command.CommandList children: [(C {(_flags_columns)})] ) ) } spids: [7301] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name flags_helpStrLen_))} {(-lt)} {(DQ (${ Id.VSub_Name flags_columns_))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:7329) ) ] action: [ (command.Simple words: [{(echo)} {(DQ (${ Id.VSub_Name flags_helpStr_))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:7342) fd: -1 arg_word: {(2)} ) ] ) ] spids: [7310 7331] ) ] else_action: [ (command.Simple words: [ {(echo)} { (DQ (' ') (${ Id.VSub_Name flags_flagStr_) (' ') (${ Id.VSub_Name flags_help_) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:7362) fd: -1 arg_word: {(2)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_emptyStr_) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id: Id.Left_Backtick val: '`' span_id: 7376 ) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} { (DQ (x) (${ Id.VSub_Name flags_flagStr_) (x) ) } ) (C {(awk)} { (SQ (Token id: Id.Lit_Chars val: '{printf "%"length($0)-2"s", ""}' span_id: 7402 ) ) } ) ] negated: F ) ] ) ) ) } spids: [7374] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_helpStr_) op: assign_op.Equal rhs: { (DQ (' ') (${ Id.VSub_Name flags_emptyStr_) (' ') (${ Id.VSub_Name flags_defaultStr_) ) } spids: [7408] ) ] ) (command.Simple words: [{(_flags_strlen)} {(DQ (${ Id.VSub_Name flags_helpStr_))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:7429) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_helpStrLen_) op: assign_op.Equal rhs: {(${ Id.VSub_Name flags_output)} spids: [7433] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} {(-eq)} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD))} {(-o)} {(DQ (${ Id.VSub_Name flags_helpStrLen_))} {(-lt)} {(DQ (${ Id.VSub_Name flags_columns_))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:7477) ) ] action: [ (command.Simple words: [{(echo)} {(DQ (${ Id.VSub_Name flags_helpStr_))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:7494) fd: -1 arg_word: {(2)} ) ] ) ] spids: [7440 7479] ) ] else_action: [ (command.Simple words: [ {(echo)} {(DQ (' ') (${ Id.VSub_Name flags_defaultStr_))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:7518) fd: -1 arg_word: {(2)} ) ] ) ] ) ] ) ] ) ) ] spids: [6839 6854] ) ] ) (C {(unset)} {(flags_boolStr_)} {(flags_default_)} {(flags_defaultStr_)} {(flags_emptyStr_)} {(flags_flagStr_)} {(flags_help_)} {(flags_helpStr)} {(flags_helpStrLen)} {(flags_name_)} {(flags_columns_)} {(flags_short_)} {(flags_type_)} {(flags_usName_)} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:7568) arg_word: {(${ Id.VSub_Name FLAGS_TRUE)} ) ] ) ) (command.ShFunction name: flags_reset body: (command.BraceGroup children: [ (command.ForEach iter_name: flags_name_ iter_words: [{(${ Id.VSub_Name __flags_longNames)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_usName_) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:7617) command_list: (command.CommandList children: [ (C {(_flags_underscoreName)} {(DQ (${ Id.VSub_Name flags_name_))}) ] ) ) } spids: [7616] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_strToEval_) op: assign_op.Equal rhs: {(DQ ('unset FLAGS_') (${ Id.VSub_Name flags_usName_))} spids: [7630] ) ] ) (command.ForEach iter_name: flags_type_ iter_words: [ {(${ Id.VSub_Name __FLAGS_INFO_DEFAULT)} {(${ Id.VSub_Name __FLAGS_INFO_HELP)} {(${ Id.VSub_Name __FLAGS_INFO_SHORT)} {(${ Id.VSub_Name __FLAGS_INFO_TYPE)} ] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_strToEval_) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name flags_strToEval_) (' __flags_') (${ Id.VSub_Name flags_usName_) (_) (${ Id.VSub_Name flags_type_) ) } spids: [7673] ) ] ) ] ) ) (C {(eval)} {(DQ (${ Id.VSub_Name flags_strToEval_))}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_boolNames) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:' ' span_id:7712))} spids: [7710] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_longNames) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:' ' span_id:7718))} spids: [7716] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_shortNames) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:' ' span_id:7724))} spids: [7722] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_definedNames) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:' ' span_id:7730))} spids: [7728] ) ] ) (C {(flags_setLoggingLevel)} {(${ Id.VSub_Name __FLAGS_LEVEL_DEFAULT)}) (C {(unset)} {(flags_name_)} {(flags_type_)} {(flags_strToEval_)} {(flags_usName_)}) ] ) ) (C {(flags_setLoggingLevel)} {(${ Id.VSub_Name __FLAGS_LEVEL_DEFAULT)}) ] )