(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:currentVersion) op:Equal rhs:{(DQ (1.11.1))} spids:[7])] spids: [7] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:configuredClient) op:Equal rhs:{(DQ )} spids:[12])] spids: [12] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:search) op:Equal rhs:{(DQ (0))} spids:[19])] spids: [19] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:insensitive) op:Equal rhs:{(DQ )} spids:[24])] spids: [24] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:recursive) op:Equal rhs:{(DQ )} spids:[28])] spids: [28] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:boundry) op:Equal rhs:{(DQ )} spids:[32])] spids: [32] ) (FuncDef name: getConfiguredClient body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (SimpleCommand words: [{(command)} {(-v)} {(curl)}] redirects: [ (Redir op: <Redir_AndGreat '&>'> fd: 16777215 arg_word: {(/dev/null)} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:configuredClient) op: Equal rhs: {(DQ (curl))} spids: [63] ) ] spids: [63] ) ] spids: [16777215 60] ) (if_arm cond: [ (Sentence child: (SimpleCommand words: [{(command)} {(-v)} {(wget)}] redirects: [ (Redir op: <Redir_AndGreat '&>'> fd: 16777215 arg_word: {(/dev/null)} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:configuredClient) op: Equal rhs: {(DQ (wget))} spids: [85] ) ] spids: [85] ) ] spids: [69 82] ) (if_arm cond: [ (Sentence child: (SimpleCommand words: [{(command)} {(-v)} {(fetch)}] redirects: [ (Redir op: <Redir_AndGreat '&>'> fd: 16777215 arg_word: {(/dev/null)} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:configuredClient) op: Equal rhs: {(DQ (fetch))} spids: [107] ) ] spids: [107] ) ] spids: [91 104] ) ] else_action: [ (C {(echo)} {(DQ ('Error: This tool reqires either curl, wget, or fetch to be installed.'))} ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [113 128] ) ] spids: [44] ) spids: [40 43] ) (FuncDef name: httpGet body: (BraceGroup children: [ (Case to_match: {(DQ ($ VSub_Name '$configuredClient'))} arms: [ (case_arm pat_list: [{(curl)}] action: [(C {(curl)} {(-A)} {(curl)} {(-s)} {(DQ ($ VSub_At '$@'))})] spids: [153 154 167 16777215] ) (case_arm pat_list: [{(wget)}] action: [(C {(wget)} {(-qO-)} {(DQ ($ VSub_At '$@'))})] spids: [170 171 180 16777215] ) (case_arm pat_list: [{(fetch)}] action: [(C {(fetch)} {(-o)} {(DQ (...))})] spids: [183 184 193 16777215] ) ] spids: [144 150 196] ) ] spids: [141] ) spids: [137 140] ) (FuncDef name: checkInternet body: (BraceGroup children: [ (Pipeline children: [ (C {(echo)} {(-e)} {(DQ ('GET http://google.com HTTP/1.0') (Lit_Other '\\') (n) (Lit_Other '\\') (n))} ) (SimpleCommand words: [{(nc)} {(google.com)} {(80)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)}) (Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) ] ) ] negated: F ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-eq)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 253] ) ] else_action: [ (SimpleCommand words: [{(echo)} {(DQ ('Error: no active internet connection'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [264 285] ) ] spids: [206] ) spids: [202 205] ) (FuncDef name: update body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:repositoryName) op: Equal rhs: {(DQ (Bash-Snippets))} spids: [309] ) ] spids: [309] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:githubUserName) op: Equal rhs: {(DQ (alexanderepstein))} spids: [318] ) ] spids: [318] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nameOfInstallFile) op: Equal rhs: {(DQ (install.sh))} spids: [327] ) ] spids: [327] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:latestVersion) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(httpGet)} {(https) (Lit_Other ':') (//api.github.com/repos/) ($ VSub_Name '$githubUserName') (/) ($ VSub_Name '$repositoryName') (/tags) } ) (C {(grep)} {(-Eo)} {(SQ <'"name":.*?[^\\\\]",'>)}) (C {(head)} {(-1)}) (C {(grep)} {(-Eo)} {(DQ ('[0-9.]+'))}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [337 373] ) } spids: [336] ) ] spids: [336] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$currentVersion')} right: {(DQ )} ) right: (LogicalOr left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$repositoryName')} right: {(DQ )} ) right: (LogicalOr left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$githubUserName')} right: {(DQ )} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$nameOfInstallFile')} right: {(DQ )} ) ) ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} {(DQ ('Error: update utility has not been configured correctly.'))} ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 420] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$latestVersion')} right: {(DQ )} ) ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ('Error: no active internet connection'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [438 451] ) ] else_action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(DQ ($ VSub_Name '$latestVersion'))} right: {(DQ ($ VSub_Name '$currentVersion'))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('Version ') ($ VSub_Name '$latestVersion') (' available'))}) (C {(echo)} {(-n)} { (DQ ('Do you wish to update ') ($ VSub_Name '$repositoryName') (' [Y/n]: ')) } ) (C {(read)} {(-r)} {(answer)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$answer'))} right: {(DQ (Y))} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$answer'))} right: {(DQ (y))} ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (AndOr ops: [Op_DPipe] children: [ (C {(cd)} {(TildeSubPart token:<Lit_TildeLike '~'>)}) (BraceGroup children: [ (Sentence child: (C {(echo)} {(SQ <'Update Failed'>)}) terminator: <Op_Semi ';'> ) (Sentence child: (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) terminator: <Op_Semi ';'> ) ] spids: [557] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_d child: {(Lit_TildeLike '~') (/) ($ VSub_Name '$repositoryName') } ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (AndOr ops: [Op_DPipe] children: [ (C {(rm)} {(-r)} {(-f)} {($ VSub_Name '$repositoryName')}) (BraceGroup children: [ (Sentence child: (C {(echo)} { (DQ ( 'Permissions Error: try running the update as sudo' ) ) } ) terminator: <Op_Semi ';'> ) (Sentence child: (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) terminator: <Op_Semi ';'> ) ] spids: [601] ) ] ) terminator: <Op_Semi ';'> ) ] spids: [16777215 589] ) ] spids: [16777215 619] ) (AndOr ops: [Op_DPipe] children: [ (C {(git)} {(clone)} { (DQ ('https://github.com/') ($ VSub_Name '$githubUserName') (/) ($ VSub_Name '$repositoryName') ) } ) (BraceGroup children: [ (Sentence child: (C {(echo)} {(DQ ("Couldn't download latest version"))}) terminator: <Op_Semi ';'> ) (Sentence child: (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) terminator: <Op_Semi ';'> ) ] spids: [635] ) ] ) (AndOr ops: [Op_DPipe] children: [ (C {(cd)} {($ VSub_Name '$repositoryName')}) (BraceGroup children: [ (Sentence child: (C {(echo)} {(SQ <'Update Failed'>)}) terminator: <Op_Semi ';'> ) (Sentence child: (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) terminator: <Op_Semi ';'> ) ] spids: [659] ) ] ) (AndOr ops: [Op_DPipe Op_DPipe] children: [ (SimpleCommand words: [ {(git)} {(checkout)} {(DQ (v) ($ VSub_Name '$latestVersion'))} ] redirects: [ (Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) (SimpleCommand words: [{(git)} {(checkout)} {(DQ ($ VSub_Name '$latestVersion'))}] redirects: [ (Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(echo)} { (DQ ( "Couldn't git checkout to stable release, updating to latest commit." ) ) } ) ] ) (C {(chmod)} {(a) (Lit_Other '+') (x)} {(install.sh)}) (AndOr ops: [Op_DPipe] children: [ (C {(./) ($ VSub_Name '$nameOfInstallFile')} {(DQ (update))}) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] ) (C {(cd)} {(..)}) (AndOr ops: [Op_DPipe] children: [ (C {(rm)} {(-r)} {(-f)} {($ VSub_Name '$repositoryName')}) (BraceGroup children: [ (Sentence child: (C {(echo)} { (DQ ( 'Permissions Error: update succesfull but cannot delete temp files located at ~/' ) ($ VSub_Name '$repositoryName') (' delete this directory with sudo') ) } ) terminator: <Op_Semi ';'> ) (Sentence child: (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) terminator: <Op_Semi ';'> ) ] spids: [754] ) ] ) ] spids: [16777215 548] ) ] else_action: [(ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})] spids: [773 781] ) ] spids: [16777215 489] ) ] else_action: [ (C {(echo)} {(DQ ($ VSub_Name '$repositoryName') (' is already the latest version'))} ) ] spids: [784 795] ) ] spids: [469 798] ) ] spids: [294] ) spids: [290 293] ) (FuncDef name: usage body: (BraceGroup children: [ (C {(echo)} {(DQ (Cheat))}) (C {(echo)} { (DQ ( 'Description: Cheatsheets for quick information about multiple programming languages along with terminal commands' ) ) } ) (C {(echo)} { (DQ ( 'Usage: cheat [flags] [command] or cheat [flags] [programming language] [subject]' ) ) } ) (C {(echo)} {(DQ (' -s Does a search for last argument rather than looking for exact match'))} ) (C {(echo)} {(DQ (' -i Case insensitive search'))}) (C {(echo)} {(DQ (' -b Word boundaries in search'))}) (C {(echo)} {(DQ (' -r Recursive search'))}) (C {(echo)} {(DQ (' -u Update Bash-Snippet Tools'))}) (C {(echo)} {(DQ (' -h Show the help'))}) (C {(echo)} {(DQ (' -v Get the tool version'))}) (C {(echo)} {(DQ ('Special Pages:'))}) (C {(echo)} {(DQ (' hello Describes building the hello world program written in the language'))} ) (C {(echo)} { (DQ ( ' list This lists all cheatsheets related to previous arg if none it lists all cheatsheets' ) ) } ) (C {(echo)} { (DQ ( ' learn Shows a learn-x-in-minutes language cheat sheet perfect for getting started with the language' ) ) } ) (C {(echo)} {(DQ (' 1line A collection of one-liners in this language'))}) (C {(echo)} {(DQ (' weirdness A collection of examples of weird things in this language'))}) (C {(echo)} {(DQ ('Examples:'))}) (C {(echo)} {(DQ (' cheat rust hello'))}) (C {(echo)} {(DQ (' cheat -r -b -i go'))}) (C {(echo)} {(DQ (' cheat julia Functions'))}) (C {(echo)} {(DQ (' cheat -i go operators'))}) ] spids: [808] ) spids: [804 807] ) (FuncDef name: getCheatSheet body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Pound '$#')} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$search')} right: {(DQ (1))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:link) op: Equal rhs: {(cheat.sh/) (Lit_TildeLike '~') ($ VSub_Number '$1')} spids: [1000] ) ] spids: [1000] ) ] spids: [16777215 997] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:link) op: Equal rhs: {(cheat.sh/) ($ VSub_Number '$1')} spids: [1009] ) ] spids: [1009] ) ] spids: [1006 1014] ) ] spids: [16777215 980] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:link) op: Equal rhs: {(cheat.sh/) ($ VSub_Number '$1')} spids: [1020] ) ] spids: [1020] ) ] spids: [1017 1025] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Pound '$#')} right: {(2)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$search')} right: {(DQ (1))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:link) op: PlusEqual rhs: {(/) (Lit_TildeLike '~') ($ VSub_Number '$2')} spids: [1061] ) ] spids: [1061] ) ] spids: [16777215 1058] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:link) op: PlusEqual rhs: {(/) ($ VSub_Number '$2')} spids: [1073] ) ] spids: [1073] ) ] spids: [1070 1081] ) ] spids: [16777215 1041] ) ] spids: [16777215 1084] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name '$insensitive')} right: {(DQ )} ) right: (LogicalOr left: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name '$recursive')} right: {(DQ )} ) right: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name '$boundry')} right: {(DQ )} ) ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:link) op: PlusEqual rhs: {(/) ($ VSub_Name '$boundry') ($ VSub_Name '$insensitive') ($ VSub_Name '$recursive') } spids: [1121] ) ] spids: [1121] ) terminator: <Op_Semi ';'> ) ] spids: [16777215 1119] ) ] spids: [16777215 1128] ) (C {(httpGet)} {($ VSub_Name '$link')}) ] spids: [964] ) spids: [960 963] ) (FuncDef name: checkSpecialPage body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:temp) op: Equal rhs: {($ VSub_Number '$1')} spids: [1153] ) ] spids: [1153] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(DQ (list))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:temp) op: Equal rhs: {(DQ (':list'))} spids: [1174] ) ] spids: [1174] ) ] spids: [16777215 1171] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(DQ (learn))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:temp) op: Equal rhs: {(DQ (':list'))} spids: [1197] ) ] spids: [1197] ) ] spids: [1180 1194] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(DQ (styles))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:temp) op: Equal rhs: {(DQ (':styles'))} spids: [1220] ) ] spids: [1220] ) ] spids: [1203 1217] ) ] spids: [16777215 1226] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$2')} right: {(DQ (1))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:arg1) op: Equal rhs: {($ VSub_Name '$temp')} spids: [1246] ) ] spids: [1246] ) ] spids: [16777215 1243] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:arg2) op: Equal rhs: {($ VSub_Name '$temp')} spids: [1253] ) ] spids: [1253] ) ] spids: [1250 1257] ) ] spids: [1150] ) spids: [1146 1149] ) (AndOr ops: [Op_DPipe] children: [(C {(getConfiguredClient)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})] ) (AndOr ops: [Op_DPipe] children: [(C {(checkInternet)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})] ) (WhileUntil keyword: <KW_While while> cond: [(Sentence child:(C {(getopts)} {(DQ (ribuvhis))} {(opt)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (Case to_match: {($ VSub_Name '$opt')} arms: [ (case_arm pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar '\\?'>)}] action: [ (SimpleCommand words: [{(echo)} {(DQ ('Invalid option: -') ($ VSub_Name '$OPTARG'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [1300 1301 1320 16777215] ) (case_arm pat_list: [{(h)}] action: [(C {(usage)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})] spids: [1323 1324 1335 16777215] ) (case_arm pat_list: [{(v)}] action: [ (C {(echo)} {(DQ ('Version ') ($ VSub_Name '$currentVersion'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] spids: [1338 1339 1355 16777215] ) (case_arm pat_list: [{(u)}] action: [(C {(update)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})] spids: [1358 1359 1370 16777215] ) (case_arm pat_list: [{(i)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:insensitive) op: Equal rhs: {(DQ (i))} spids: [1377] ) ] spids: [1377] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:search) op: Equal rhs: {(DQ (1))} spids: [1383] ) ] spids: [1383] ) ] spids: [1373 1374 1389 16777215] ) (case_arm pat_list: [{(b)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:boundry) op: Equal rhs: {(DQ (b))} spids: [1396] ) ] spids: [1396] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:search) op: Equal rhs: {(DQ (1))} spids: [1402] ) ] spids: [1402] ) ] spids: [1392 1393 1408 16777215] ) (case_arm pat_list: [{(r)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:recursive) op: Equal rhs: {(DQ (r))} spids: [1415] ) ] spids: [1415] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:search) op: Equal rhs: {(DQ (1))} spids: [1421] ) ] spids: [1421] ) ] spids: [1411 1412 1427 16777215] ) (case_arm pat_list: [{(s)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:search) op: Equal rhs: {(DQ (1))} spids: [1434] ) ] spids: [1434] ) ] spids: [1430 1431 1440 16777215] ) (case_arm pat_list: [{(Lit_Other ':')}] action: [ (SimpleCommand words: [ {(echo)} {(DQ ('Option -') ($ VSub_Name '$OPTARG') (' requires an argument.'))} ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [1443 1444 1464 16777215] ) ] spids: [1293 1297 1467] ) ] spids: [1290 1469] ) ) (ForEach iter_name: arg do_arg_iter: T body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name '$arg')} right: {(DQ (-r))} ) right: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name '$arg')} right: {(DQ (-s))} ) right: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name '$arg')} right: {(DQ (-b))} ) right: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name '$arg')} right: {(DQ (-i))} ) ) ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} { (BracedVarSub token: <VSub_Name arg1> suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(x)}) spids: [1535 1539] ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:arg1) op: Equal rhs: {($ VSub_Name '$arg')} spids: [1546] ) ] spids: [1546] ) ] spids: [16777215 1543] ) ] spids: [16777215 1550] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} { (BracedVarSub token: <VSub_Name arg1> suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(x)}) spids: [1561 1565] ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:arg2) op: Equal rhs: {($ VSub_Name '$arg')} spids: [1572] ) ] spids: [1572] ) ] spids: [16777215 1569] ) ] spids: [16777215 1576] ) ] spids: [16777215 1526] ) ] spids: [16777215 1579] ) ] spids: [1479 1581] ) spids: [16777215 16777215] ) (C {(checkSpecialPage)} {($ VSub_Name '$arg1')} {(1)}) (C {(checkSpecialPage)} {($ VSub_Name '$arg2')} {(2)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id:BoolBinary_GlobDEqual left:{($ VSub_Pound '$#')} right:{(0)}) ) terminator: <Op_Semi ';'> ) ] action: [(C {(usage)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})] spids: [16777215 1613] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(DQ (update))} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(update)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})] spids: [1623 1637] ) (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(DQ (help))} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(DQ (':help'))} ) ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(usage)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})] spids: [1647 1671] ) ] else_action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name '$arg1')} right: {($ VSub_Name '$arg2')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(getCheatSheet)} {($ VSub_Name '$arg1')} {($ VSub_Name '$arg2')}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] spids: [16777215 1699] ) ] else_action: [ (C {(getCheatSheet)} {($ VSub_Name '$arg1')}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] spids: [1717 1730] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] spids: [1684 1738] ) ] )