(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] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:boilerDir) op: Equal rhs: {(DQ (${ VSub_Name KUBE_ROOT) (/hack/boilerplate))} spids: [76] ) ] spids: [76] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:boiler) op: Equal rhs: {(DQ (${ VSub_Name boilerDir) (/boilerplate.py))} spids: [84] ) ] spids: [84] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:files_need_boilerplate) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [(C {(${ VSub_Name boiler)} {(DQ ($ VSub_At '$@'))})] ) left_token: <Left_CommandSub '$('> spids: [95 103] ) } ] ) } spids: [93] ) ] spids: [93] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_gt left: { (BracedVarSub token: <VSub_Name files_need_boilerplate> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [114 120] ) } right: {(0)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (ForEach iter_name: file iter_words: [ { (DQ (BracedVarSub token: <VSub_Name files_need_boilerplate> bracket_op: (WholeArray op_id:Lit_At) spids: [139 144] ) ) } ] do_arg_iter: F body: (DoGroup children: [ (C {(echo)} {(DQ ('Boilerplate header is wrong for: ') (${ VSub_Name file))}) ] spids: [148 161] ) spids: [137 146] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 129] ) ] spids: [16777215 169] ) ] )