(CommandList children: [ (C {(set)} {(-o)} {(errexit)}) (C {(set)} {(-o)} {(nounset)}) (C {(set)} {(-o)} {(pipefail)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:KUBE_ROOT) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(dirname)} {(DQ (${ VSub_Name BASH_SOURCE))})] ) left_token: <Left_CommandSub '$('> spids: [64 72] ) (/../..) } spids: [63] ) ] spids: [63] ) (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/hack/lib/util.sh))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:EXCLUDED_PATTERNS) op: Equal rhs: { (ArrayLiteralPart words: [ {(DQ (verify-all.sh))} {(DQ (verify-linkcheck.sh))} {(DQ (verify-test-owners.sh))} {(DQ ('verify-*-dockerized.sh'))} ] ) } spids: [88] ) ] spids: [88] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:QUICK_PATTERNS) op: PlusEqual rhs: { (ArrayLiteralPart words: [ {(DQ (verify-api-groups.sh))} {(DQ (verify-bazel.sh))} {(DQ (verify-boilerplate.sh))} {(DQ (verify-generated-files-remake))} {(DQ (verify-godep-licenses.sh))} {(DQ (verify-gofmt.sh))} {(DQ (verify-pkg-names.sh))} {(DQ (verify-readonly-packages.sh))} {(DQ (verify-staging-client-go.sh))} {(DQ (verify-staging-imports.sh))} {(DQ (verify-test-images.sh))} {(DQ (verify-test-owners.sh))} ] ) } spids: [136] ) ] spids: [136] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:EXCLUDED_CHECKS) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (AndOr children: [ (SimpleCommand words: [ {(ls)} { (BracedVarSub token: <VSub_Name EXCLUDED_PATTERNS> bracket_op: (WholeArray op_id:Lit_At) suffix_op: (PatSub pat: {} replace: {(${ VSub_Name KUBE_ROOT) (EscapedLiteralPart token: <Lit_EscapedChar '\\/'> ) (hack) (EscapedLiteralPart token:<Lit_EscapedChar '\\/'>) } do_all: False do_prefix: True do_suffix: False ) spids: [206 220] ) } ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [222] ) ] ) (C {(true)}) ] op_id: Op_DPipe ) ] ) left_token: <Left_CommandSub '$('> spids: [203 228] ) } spids: [202] ) ] spids: [202] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:QUICK_CHECKS) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (AndOr children: [ (SimpleCommand words: [ {(ls)} { (BracedVarSub token: <VSub_Name QUICK_PATTERNS> bracket_op: (WholeArray op_id:Lit_At) suffix_op: (PatSub pat: {} replace: {(${ VSub_Name KUBE_ROOT) (EscapedLiteralPart token: <Lit_EscapedChar '\\/'> ) (hack) (EscapedLiteralPart token:<Lit_EscapedChar '\\/'>) } do_all: False do_prefix: True do_suffix: False ) spids: [234 248] ) } ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [250] ) ] ) (C {(true)}) ] op_id: Op_DPipe ) ] ) left_token: <Left_CommandSub '$('> spids: [231 256] ) } spids: [230] ) ] spids: [230] ) (FuncDef name: is-excluded body: (BraceGroup children: [ (ForEach iter_name: e iter_words: [ { (BracedVarSub token: <VSub_Name EXCLUDED_CHECKS> bracket_op: (WholeArray op_id:Lit_At) spids: [272 277] ) } ] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_ef left: {($ VSub_Number '$1')} right: {(DQ ($ VSub_Name '$e'))} ) ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return>)] spids: [16777215 298] ) ] spids: [16777215 304] ) ] spids: [280 307] ) spids: [271 278] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [263] ) spids: [259 262] ) (FuncDef name: is-quick body: (BraceGroup children: [ (ForEach iter_name: e iter_words: [ { (BracedVarSub token: <VSub_Name QUICK_CHECKS> bracket_op: (WholeArray op_id:Lit_At) spids: [330 335] ) } ] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_ef left: {($ VSub_Number '$1')} right: {(DQ ($ VSub_Name '$e'))} ) ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return>)] spids: [16777215 356] ) ] spids: [16777215 362] ) ] spids: [338 365] ) spids: [329 336] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [321] ) spids: [317 320] ) (FuncDef name: run-cmd body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(Sentence child:(C {(${ VSub_Name SILENT)}) terminator:<Op_Semi ';'>)] action: [ (Sentence child: (C {(DQ ($ VSub_At '$@'))}) terminator: <Op_Amp '&'> ) (SimpleCommand redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [397] ) ] ) ] spids: [16777215 389] ) ] else_action: [(C {(DQ ($ VSub_At '$@'))})] spids: [402 410] ) ] spids: [379] ) spids: [375 378] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED_TESTS) op: Equal rhs: {(ArrayLiteralPart)} spids: [418] ) ] spids: [418] ) (FuncDef name: print-failed-tests body: (BraceGroup children: [ (C {(echo)} {(-e)} {(DQ ('========================'))}) (C {(echo)} {(-e)} {(DQ (${ VSub_Name color_red) ('FAILED TESTS') (${ VSub_Name color_norm))}) (C {(echo)} {(-e)} {(DQ ('========================'))}) (ForEach iter_name: t iter_words: [ { (BracedVarSub token: <VSub_Name FAILED_TESTS> bracket_op: (WholeArray op_id:Lit_At) spids: [469 474] ) } ] do_arg_iter: False body: (DoGroup children: [ (C {(echo)} {(-e)} {(DQ (${ VSub_Name color_red) (${ VSub_Name t) (${ VSub_Name color_norm))} ) ] spids: [477 497] ) spids: [468 475] ) ] spids: [427] ) spids: [423 426] ) (FuncDef name: run-checks body: (BraceGroup children: [ (Assignment keyword: Assign_Local flags: [-r] pairs: [ (assign_pair lhs: (LhsName name:pattern) op: Equal rhs: {($ VSub_Number '$1')} spids: [513] ) ] spids: [509] ) (Assignment keyword: Assign_Local flags: [-r] pairs: [ (assign_pair lhs: (LhsName name:runner) op: Equal rhs: {($ VSub_Number '$2')} spids: [521] ) ] spids: [517] ) (ForEach iter_name: t iter_words: [ { (CommandSubPart command_list: (CommandList children:[(C {(ls)} {(${ VSub_Name pattern)})]) left_token: <Left_CommandSub '$('> spids: [532 538] ) } ] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(is-excluded)} {(DQ (${ VSub_Name t))}) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('Skipping ') (${ VSub_Name t))}) (ControlFlow token: <ControlFlow_Continue continue> ) ] spids: [16777215 556] ) ] spids: [16777215 572] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (C {(${ VSub_Name QUICK)}) (Pipeline children: [(C {(is-quick)} {(DQ (${ VSub_Name t))})] negated: True ) ] op_id: Op_DAmp ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('Skipping ') (${ VSub_Name t) (' in quick mode'))}) (ControlFlow token: <ControlFlow_Continue continue> ) ] spids: [16777215 595] ) ] spids: [16777215 612] ) (C {(echo)} {(-e)} {(DQ ('Verifying ') (${ VSub_Name t))}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:start) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(date)} {(Lit_Other '+') (Lit_Other '%') (s)})] ) left_token: <Left_CommandSub '$('> spids: [630 636] ) } spids: [629] ) ] spids: [627] ) (AndOr children: [ (C {(run-cmd)} {(DQ (${ VSub_Name runner))} {(DQ (${ VSub_Name t))}) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tr) op: Equal rhs: {($ VSub_QMark '$?')} spids: [655] ) ] spids: [655] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tr) op: Equal rhs: {($ VSub_QMark '$?')} spids: [660] ) ] spids: [660] ) ] op_id: Op_DPipe ) ] op_id: Op_DAmp ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:elapsed) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (CommandSubPart command_list: (CommandList children: [ (C {(date)} {(Lit_Other '+') (Lit_Other '%') (s)}) ] ) left_token: <Left_CommandSub '$('> spids: [668 674] ) } ) right: (ArithWord w:{(${ VSub_Name start)}) ) spids: [667 682] ) } spids: [666] ) ] spids: [664] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {(${ VSub_Name tr)} right: {(0)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(-e)} { (DQ (${ VSub_Name color_green) (SUCCESS) (${ VSub_Name color_norm) (' ') (${ VSub_Name t) (Lit_Other '\\') (t) (${ VSub_Name elapsed) (s) ) } ) ] spids: [16777215 700] ) ] else_action: [ (C {(echo)} {(-e)} { (DQ (${ VSub_Name color_red) (FAILED) (${ VSub_Name color_norm) (' ') (${ VSub_Name t) (Lit_Other '\\') (t) (${ VSub_Name elapsed) (s) ) } ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ret) op:Equal rhs:{(1)} spids:[756])] spids: [756] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED_TESTS) op: PlusEqual rhs: {(ArrayLiteralPart words:[{(${ VSub_Name t)}])} spids: [760] ) ] spids: [760] ) ] spids: [728 768] ) ] spids: [541 771] ) spids: [531 16777215] ) ] spids: [506] ) spids: [502 505] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:SILENT) op:Equal rhs:{(true)} spids:[776])] spids: [776] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:QUICK) op:Equal rhs:{(false)} spids:[779])] spids: [779] ) (While cond: [(Sentence child:(C {(getopts)} {(DQ (':vQ'))} {(opt)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (Case to_match: {(${ VSub_Name opt)} arms: [ (case_arm pat_list: [{(v)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SILENT) op: Equal rhs: {(false)} spids: [810] ) ] spids: [810] ) ] spids: [806 807 814 16777215] ) (case_arm pat_list: [{(Q)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:QUICK) op: Equal rhs: {(true)} spids: [821] ) ] spids: [821] ) ] spids: [817 818 825 16777215] ) (case_arm pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar '\\?'>)}] action: [ (SimpleCommand words: [{(echo)} {(DQ ('Invalid flag: -') (${ VSub_Name OPTARG))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[841])] ) (C {(exit)} {(1)}) ] spids: [828 829 850 16777215] ) ] spids: [797 803 853] ) ] spids: [794 855] ) ) (If arms: [ (if_arm cond: [(Sentence child:(C {(${ VSub_Name SILENT)}) terminator:<Op_Semi ';'>)] action: [ (C {(echo)} {(DQ ('Running in silent mode, run with -v if you want to see script logs.'))}) ] spids: [16777215 866] ) ] spids: [16777215 875] ) (If arms: [ (if_arm cond: [(Sentence child:(C {(${ VSub_Name QUICK)}) terminator:<Op_Semi ';'>)] action: [(C {(echo)} {(DQ ('Running in quick mode (-Q flag). Only fast checks will run.'))})] spids: [16777215 886] ) ] spids: [16777215 895] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ret) op:Equal rhs:{(0)} spids:[898])] spids: [898] ) (C {(run-checks)} {(DQ (${ VSub_Name KUBE_ROOT) ('/hack/verify-*.sh'))} {(bash)}) (C {(run-checks)} {(DQ (${ VSub_Name KUBE_ROOT) ('/hack/verify-*.py'))} {(python)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id:BoolBinary_eq left:{(${ VSub_Name ret)} right:{(1)}) ) terminator: <Op_Semi ';'> ) ] action: [(C {(print-failed-tests)})] spids: [16777215 939] ) ] spids: [16777215 945] ) (C {(exit)} {(${ VSub_Name ret)}) ] )