(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/init.sh))}) (C {(kube) (Lit_Other ":") (Lit_Other ":") (golang) (Lit_Other ":") (Lit_Other ":") (setup_env)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:APIROOTS) op: Equal rhs: { (BracedVarSub token: <VSub_Name APIROOTS> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(pkg) (Lit_Slash /) ("api pkg") (Lit_Slash /) ("apis pkg") (Lit_Slash /) ("watch staging") (Lit_Slash /) (src) (Lit_Slash /) (k8s.io) (Lit_Slash /) (apimachinery) (Lit_Slash /) (pkg) (Lit_Slash /) ("api staging") (Lit_Slash /) (src) (Lit_Slash /) (k8s.io) (Lit_Slash /) (apimachinery) (Lit_Slash /) (pkg) (Lit_Slash /) ("apis staging") (Lit_Slash /) (src) (Lit_Slash /) (k8s.io) (Lit_Slash /) (apiserver) (Lit_Slash /) ("pkg staging") (Lit_Slash /) (src) (Lit_Slash /) (k8s.io) (Lit_Slash /) ("api staging") (Lit_Slash /) (src) (Lit_Slash /) (k8s.io) (Lit_Slash /) (metrics) (Lit_Slash /) (pkg) (Lit_Slash /) (apis) } ) spids: [95 149] ) } spids: [94] ) ] spids: [94] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_tmp) op: Equal rhs: {(DQ (${ VSub_Name KUBE_ROOT) (/_tmp))} spids: [151] ) ] spids: [151] ) (FuncDef name: cleanup body: (BraceGroup children:[(C {(rm)} {(-rf)} {(DQ (${ VSub_Name _tmp))})] spids:[164]) spids: [160 163] ) (C {(trap)} {(DQ (cleanup))} {(EXIT)} {(SIGINT)}) (C {(cleanup)}) (ForEach iter_name: APIROOT iter_words: [{(${ VSub_Name APIROOTS)}] do_arg_iter: False body: (DoGroup children: [ (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name _tmp) (/) (${ VSub_Name APIROOT))}) (C {(cp)} {(-a)} {(DQ (${ VSub_Name KUBE_ROOT) (/) (${ VSub_Name APIROOT)) (/) (Lit_Other "*")} {(DQ (${ VSub_Name _tmp) (/) (${ VSub_Name APIROOT) (/))} ) ] spids: [204 249] ) spids: [198 202] ) (SimpleCommand words: [{(DQ (${ VSub_Name KUBE_ROOT) (/hack/update-generated-protobuf.sh))}] more_env: [(env_pair name:KUBE_VERBOSE val:{(3)} spids:[252])] ) (ForEach iter_name: APIROOT iter_words: [{(${ VSub_Name APIROOTS)}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TMP_APIROOT) op: Equal rhs: {(DQ (${ VSub_Name _tmp) (/) (${ VSub_Name APIROOT))} spids: [276] ) ] spids: [276] ) (C {(echo)} {(DQ ("diffing ") (${ VSub_Name APIROOT) (" against freshly generated protobuf"))} ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ret) op:Equal rhs:{(0)} spids:[299])] spids: [299] ) (AndOr children: [ (C {(diff)} {(-Naupr)} {(-I)} {(SQ <"Auto generated by">)} {(-x)} {(SQ <"zz_generated.*">)} {(DQ (${ VSub_Name KUBE_ROOT) (/) (${ VSub_Name APIROOT))} {(DQ (${ VSub_Name TMP_APIROOT))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ret) op: Equal rhs: {($ VSub_QMark "$?")} spids: [337] ) ] spids: [337] ) ] op_id: Op_DPipe ) (C {(cp)} {(-a)} {(DQ (${ VSub_Name TMP_APIROOT)) (/) (Lit_Other "*")} {(DQ (${ VSub_Name KUBE_ROOT) (/) (${ VSub_Name APIROOT) (/))} ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name "$ret")} right: {(0)} ) ) terminator: <Op_Semi ";"> ) ] action: [(C {(echo)} {(DQ (${ VSub_Name APIROOT) (" up to date."))})] spids: [-1 378] ) ] else_action: [ (C {(echo)} { (DQ (${ VSub_Name APIROOT) (" is out of date. Please run hack/update-generated-protobuf.sh") ) } ) (C {(exit)} {(1)}) ] spids: [391 409] ) ] spids: [273 411] ) spids: [267 271] ) ] )