(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: F 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: F 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 ops: [Op_DPipe] 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] ) ] ) (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: [16777215 378] ) ] else_action: [ (C {(echo)} { (DQ (${ VSub_Name APIROOT) (' is out of date. Please run hack/update-generated-protobuf.sh') ) } ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [391 409] ) ] spids: [273 411] ) spids: [267 271] ) ] )