(List (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS errexit]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS nounset]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS pipefail]} ) (= scope= flags=0 words=[] bindings=[('KUBE_ROOT', {[ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE]]})] [LIT_CHARS /../..]})]) (Com {[LIT_CHARS source]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/lib/util.sh]]} ) (= scope= flags=0 words=[] bindings=[('EXCLUDED_CHECKS', {[Array {OP_NEWLINE "\n"} {[DQ [LIT_CHARS verify-linkcheck.sh]]} {OP_NEWLINE "\n"} {[DQ [LIT_CHARS verify-govet.sh]]} {OP_NEWLINE "\n"} {[DQ [LIT_CHARS verify-staging-client-go.sh]]} {OP_NEWLINE "\n"}]})]) (FunctionDef is-excluded [] (List (If (DBracket {B2 BINARY_FILE_EF {[VarSub 1]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /hack/verify-all.sh]]}}) (Com {[LIT_CHARS return]} ) ) (For e [{[VarSub EXCLUDED_CHECKS bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}]) (If (DBracket {B2 BINARY_FILE_EF {[VarSub 1]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /hack/][VarSub e]]}}) (Com {[LIT_CHARS return]} ) ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (FunctionDef run-cmd [] (If (Com {[VarSub SILENT]} ) (List (Fork (Com {[DQ [VarSub @]]} ) ) (Com < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (ElseTrue) (Com {[DQ [VarSub @]]} ) ) ) (FunctionDef run-checks [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pattern', {[VarSub 1]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('runner', {[VarSub 2]})]) (For t [{[ComSub (Com {[LIT_CHARS ls]} {[VarSub pattern]})]}]) (List (If (Com {[LIT_CHARS is-excluded]} {[DQ [VarSub t]]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Skipping "][VarSub t]]} ) (Com {[LIT_CHARS continue]} ) ) ) (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "Verifying "][VarSub t]]} ) (= scope= flags=0 words=[] bindings=[('start', {[ComSub (Com {[LIT_CHARS date]} {[LIT_OTHER "+"] [LIT_OTHER "%"] [LIT_CHARS s]})]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS run-cmd]} {[DQ [VarSub runner]]} {[DQ [VarSub t]]} ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('tr', {[VarSub ?]})]) (= scope= flags=0 words=[] bindings=[('tr', {[VarSub ?]})]) ) ) (= scope= flags=0 words=[] bindings=[('elapsed', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[ComSub (Com {[LIT_CHARS date]} {[LIT_OTHER "+"] [LIT_OTHER "%"] [LIT_CHARS s]})]}} {A Atom NODE_ARITH_WORD {[VarSub start]}}}]})]) (If (DBracket {B2 BINARY_INT_EQ {[VarSub tr]} {[LIT_CHARS 0]}}) (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[DQ [VarSub color_green][LIT_CHARS SUCCESS][VarSub color_norm][LIT_CHARS " "][VarSub t][\ LIT_ESCAPED_CHAR "\\t"][VarSub elapsed][LIT_CHARS s]]} ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[DQ [VarSub color_red][LIT_CHARS FAILED][VarSub color_norm][LIT_CHARS " "][VarSub t][\ LIT_ESCAPED_CHAR "\\t"][VarSub elapsed][LIT_CHARS s]]} ) (= scope= flags=0 words=[] bindings=[('ret', {[LIT_CHARS 1]})]) ) ) ) ) ) ) (While (Com {[LIT_CHARS getopts]} {[DQ [LIT_CHARS ":v"]]} {[LIT_CHARS opt]} ) (Case to_match={[VarSub opt]}, pat_word_list=[[{[LIT_CHARS v]}], [{[\ LIT_ESCAPED_CHAR "\\?"]}]] (= scope= flags=0 words=[] bindings=[('SILENT', {[LIT_CHARS false]})]) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Invalid flag: -"][VarSub OPTARG]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) (If (Com {[VarSub SILENT]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Running in silent mode, run with -v if you want to see script logs."]]} ) ) (= scope= flags=0 words=[] bindings=[('ret', {[LIT_CHARS 0]})]) (Com {[LIT_CHARS run-checks]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS "/hack/verify-*.sh"]]} {[LIT_CHARS bash]} ) (Com {[LIT_CHARS run-checks]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS "/hack/verify-*.py"]]} {[LIT_CHARS python]} ) (Com {[LIT_CHARS exit]} {[VarSub ret]} ) )