(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OPTIONS_KEEPDASHDASH) op: Equal rhs: {(EmptyPart)} spids: [13] ) ] spids: [13] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OPTIONS_SPEC) op: Equal rhs: { (DQ ('git-clean [options] <paths>...\n') ('\n') ('Clean untracked files from the working directory\n') ('\n') ('When optional <paths>... arguments are given, the paths\n') ('affected are further limited to those that match them.\n') ('--\n') ('d remove directories as well\n') ('f override clean.requireForce and clean anyway\n') ("n don't remove anything, just show what would be done\n") ('q be quiet, only report errors\n') ('x remove ignored files as well\n') ('X remove only ignored files') ) } spids: [15] ) ] spids: [15] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:SUBDIRECTORY_OK) op:Equal rhs:{(Yes)} spids:[34])] spids: [34] ) (C {(.)} {(git-sh-setup)}) (C {(require_work_tree)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ignored) op:Equal rhs:{(EmptyPart)} spids:[44])] spids: [44] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ignoredonly) op:Equal rhs:{(EmptyPart)} spids:[46])] spids: [46] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:cleandir) op:Equal rhs:{(EmptyPart)} spids:[48])] spids: [48] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:rmf) op:Equal rhs:{(DQ ('rm -f --'))} spids:[50])] spids: [50] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:rmrf) op:Equal rhs:{(DQ ('rm -rf --'))} spids:[55])] spids: [55] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rm_refuse) op: Equal rhs: {(DQ ('echo Not removing'))} spids: [60] ) ] spids: [60] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:echo1) op:Equal rhs:{(DQ (echo))} spids:[65])] spids: [65] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:disabled) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(git)} {(config)} {(--bool)} {(clean.requireForce)})] ) left_token: <Left_CommandSub '$('> spids: [72 80] ) } spids: [71] ) ] spids: [71] ) (WhileUntil keyword: <KW_While while> cond: [(C {(test)} {($ VSub_Pound '$#')} {(KW_Bang '!') (Lit_Other '=')} {(0)})] body: (DoGroup children: [ (Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(-d)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cleandir) op: Equal rhs: {(1)} spids: [110] ) ] spids: [110] ) ] spids: [106 107 114 16777215] ) (case_arm pat_list: [{(-f)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:disabled) op: Equal rhs: {(false)} spids: [121] ) ] spids: [121] ) ] spids: [117 118 125 16777215] ) (case_arm pat_list: [{(-n)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:disabled) op: Equal rhs: {(false)} spids: [132] ) ] spids: [132] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rmf) op: Equal rhs: {(DQ ('echo Would remove'))} spids: [136] ) ] spids: [136] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rmrf) op: Equal rhs: {(DQ ('echo Would remove'))} spids: [142] ) ] spids: [142] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rm_refuse) op: Equal rhs: {(DQ ('echo Would not remove'))} spids: [148] ) ] spids: [148] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:echo1) op: Equal rhs: {(DQ (':'))} spids: [154] ) ] spids: [154] ) ] spids: [128 129 160 16777215] ) (case_arm pat_list: [{(-q)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:echo1) op: Equal rhs: {(DQ (':'))} spids: [167] ) ] spids: [167] ) ] spids: [163 164 173 16777215] ) (case_arm pat_list: [{(-x)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ignored) op:Equal rhs:{(1)} spids:[180])] spids: [180] ) ] spids: [176 177 184 16777215] ) (case_arm pat_list: [{(-X)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ignoredonly) op: Equal rhs: {(1)} spids: [191] ) ] spids: [191] ) ] spids: [187 188 195 16777215] ) (case_arm pat_list: [{(--)}] action: [(C {(shift)}) (ControlFlow token:<ControlFlow_Break break>)] spids: [198 199 208 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(usage)})] spids: [211 212 221 16777215] ) ] spids: [97 103 224] ) (C {(shift)}) ] spids: [94 229] ) ) (Case to_match: {(DQ ($ VSub_Name '$disabled'))} arms: [ (case_arm pat_list: [{(DQ )}] action: [ (C {(die)} {(DQ ('clean.requireForce not set and -n or -f not given; refusing to clean'))}) ] spids: [249 251 261 16777215] ) (case_arm pat_list: [{(DQ (true))}] action: [ (C {(die)} {(DQ ('clean.requireForce set and -n or -f not given; refusing to clean'))}) ] spids: [263 266 276 16777215] ) ] spids: [241 247 278] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$ignored') (',') ($ VSub_Name '$ignoredonly'))} {(Lit_Other '=')} {(DQ ('1,1'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(die)} {(DQ ('-x and -X cannot be set together'))})] spids: [16777215 300] ) ] spids: [16777215 309] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$ignored'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:excl) op: Equal rhs: {(DQ ('--exclude-per-directory=.gitignore'))} spids: [328] ) ] spids: [328] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:excl_info) op: Equal rhs: {(EmptyPart)} spids: [334] ) (assign_pair lhs: (LhsName name:excludes_file) op: Equal rhs: {(EmptyPart)} spids: [336] ) ] spids: [334] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Name '$GIT_DIR') (/info/exclude))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:excl_info) op: Equal rhs: {(DQ ('--exclude-from=') ($ VSub_Name '$GIT_DIR') (/info/exclude))} spids: [356] ) ] spids: [356] ) ] spids: [16777215 353] ) ] spids: [16777215 364] ) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DAmp] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cfg_excl) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(git)} {(config)} {(core.excludesfile)})] ) left_token: <Left_CommandSub '$('> spids: [370 376] ) } spids: [369] ) ] spids: [369] ) (C {(test)} {(-f)} {(DQ ($ VSub_Name '$cfg_excl'))}) ] ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:excludes_file) op: Equal rhs: {(DQ ('--exclude-from=') ($ VSub_Name '$cfg_excl'))} spids: [392] ) ] spids: [392] ) ] spids: [16777215 389] ) ] spids: [16777215 399] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$ignoredonly'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:excl) op: Equal rhs: {(DQ ($ VSub_Name '$excl') (' --ignored'))} spids: [416] ) ] spids: [416] ) ] spids: [16777215 413] ) ] spids: [16777215 423] ) ] spids: [16777215 325] ) ] spids: [16777215 425] ) (Pipeline children: [ (C {(git)} {(ls-files)} {(--others)} {(--directory)} {($ VSub_Name '$excl')} { (BracedVarSub token: <VSub_Name excl_info> suffix_op: (StringUnary op_id:VTest_ColonPlus arg_word:{(DQ ($ VSub_Name '$excl_info'))}) spids: [440 446] ) } { (BracedVarSub token: <VSub_Name excludes_file> suffix_op: (StringUnary op_id: VTest_ColonPlus arg_word: {(DQ ($ VSub_Name '$excludes_file'))} ) spids: [448 454] ) } {(--)} {(DQ ($ VSub_At '$@'))} ) (WhileUntil keyword: <KW_While while> cond: [(Sentence child:(C {(read)} {(-r)} {(file)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-d)} {(DQ ($ VSub_Name '$file'))} {(-a)} {(KW_Bang '!')} {(-L)} {(DQ ($ VSub_Name '$file'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$cleandir'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {($ VSub_Name '$rm_refuse')} {(DQ ($ VSub_Name '$file'))}) (ControlFlow token: <ControlFlow_Continue continue> ) ] spids: [16777215 517] ) ] spids: [16777215 530] ) (C {($ VSub_Name '$echo1')} {(DQ ('Removing ') ($ VSub_Name '$file'))}) (C {($ VSub_Name '$rmrf')} {(DQ ($ VSub_Name '$file'))}) ] spids: [16777215 501] ) ] else_action: [ (C {($ VSub_Name '$echo1')} {(DQ ('Removing ') ($ VSub_Name '$file'))}) (C {($ VSub_Name '$rmf')} {(DQ ($ VSub_Name '$file'))}) ] spids: [548 566] ) ] spids: [475 568] ) ) ] negated: F ) ] )