(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)}) (C {(make)} {(-C)} {(DQ (${ VSub_Name KUBE_ROOT))} {(Lit_VarLike "WHAT=") (cmd/genswaggertypedocs)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:genswaggertypedocs) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(kube) (Lit_Other ":") (Lit_Other ":") (util) (Lit_Other ":") (Lit_Other ":") (find-binary) } {(DQ (genswaggertypedocs))} ) ] ) left_token: <Left_CommandSub "$("> spids: [112 124] ) } spids: [111] ) ] spids: [111] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:gen_swagger_result) op:Equal rhs:{(0)} spids:[127])] spids: [127] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(0)} spids:[130])] spids: [130] ) (FuncDef name: find_files body: (BraceGroup children: [ (C {(find)} {(.)} {(-not)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\(">)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\(">)} {(-wholename)} {(SQ <./output>)} {(-o)} {(-wholename)} {(SQ <./_output>)} {(-o)} {(-wholename)} {(SQ <./_gopath>)} {(-o)} {(-wholename)} {(SQ <./release>)} {(-o)} {(-wholename)} {(SQ <./target>)} {(-o)} {(-wholename)} {(SQ <"*/third_party/*">)} {(-o)} {(-wholename)} {(SQ <"*/vendor/*">)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\)">)} {(-prune)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\)">)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\(">)} {(-wholename)} {(SQ <"*pkg/api/v*/types.go">)} {(-o)} {(-wholename)} {(SQ <"*pkg/apis/*/v*/types.go">)} {(-o)} {(-wholename)} {(SQ <"*pkg/api/unversioned/types.go">)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\)">)} ) ] spids: [138] ) spids: [134 137] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id:BoolBinary_eq left:{($ VSub_Pound "$#")} right:{(0)}) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:versioned_api_files) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(find_files)}) (C {(egrep)} { (DQ ("pkg/.[^/]*/((v.[^/]*)|unversioned)/types") (EscapedLiteralPart token: <Lit_EscapedChar "\\."> ) (go) ) } ) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [285 297] ) } spids: [284] ) ] spids: [284] ) ] spids: [-1 281] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:versioned_api_files) op: Equal rhs: {(DQ (${ VSub_Star "*"))} spids: [302] ) ] spids: [302] ) ] spids: [299 309] ) (ForEach iter_name: file iter_words: [{($ VSub_Name "$versioned_api_files")}] do_arg_iter: False body: (DoGroup children: [ (AndOr children: [ (C {($ VSub_Name "$genswaggertypedocs")} {(-v)} {(-s)} {(DQ (${ VSub_Name file))} {(-f)} {(-)} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gen_swagger_result) op: Equal rhs: {($ VSub_QMark "$?")} spids: [342] ) ] spids: [342] ) ] op_id: Op_DPipe ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_ne left: {(DQ (${ VSub_Name gen_swagger_result))} right: {(DQ (0))} ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} { (DQ ("API file: ") (${ VSub_Name file) (" is missing: ") (${ VSub_Name gen_swagger_result) (" descriptions") ) } ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[383])] spids: [383] ) ] spids: [-1 365] ) ] spids: [-1 387] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(grep)} {(json) (Lit_Other ":")} {(DQ (${ VSub_Name file))}) (C {(grep)} {(-v)} {(//)}) (C {(grep)} {(description) (Lit_Other ":")}) ] negated: False ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} { (DQ ("API file: ") (${ VSub_Name file) (" should not contain descriptions in struct tags") ) } ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[434])] spids: [434] ) ] spids: [-1 420] ) ] spids: [-1 438] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(grep)} {(json) (Lit_Other ":")} {(DQ (${ VSub_Name file))}) (C {(grep)} {(-Ee)} {(DQ (",[[:space:]]+omitempty|omitempty[[:space:]]+"))}) ] negated: False ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} { (DQ ("API file: ") (${ VSub_Name file) ( " should not contain leading or trailing spaces for omitempty directive" ) ) } ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[480])] spids: [480] ) ] spids: [-1 466] ) ] spids: [-1 484] ) ] spids: [321 486] ) spids: [317 319] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:internal_types_files) op: Equal rhs: { (DQ (${ VSub_Name KUBE_ROOT) ("/pkg/api/types.go ") (${ VSub_Name KUBE_ROOT) (/pkg/apis/extensions/types.go) ) } spids: [489] ) ] spids: [489] ) (ForEach iter_name: internal_types_file iter_words: [{($ VSub_Name "$internal_types_files")}] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalNot child: (BoolUnary op_id: BoolUnary_e child: {($ VSub_Name "$internal_types_file")} ) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} { (DQ ("Internal types file ") (${ VSub_Name internal_types_file) (" does not exist") ) } ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[540])] spids: [540] ) (ControlFlow token:<ControlFlow_Continue continue>) ] spids: [-1 526] ) ] spids: [-1 547] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(grep)} {(json) (Lit_Other ":")} {(DQ (${ VSub_Name internal_types_file))} ) (C {(grep)} {(-v)} {(//)}) (C {(grep)} {(description) (Lit_Other ":")}) ] negated: False ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(DQ ("Internal API types should not contain descriptions"))}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[591])] spids: [591] ) ] spids: [-1 581] ) ] spids: [-1 595] ) ] spids: [510 597] ) spids: [506 508] ) (C {(exit)} {(${ VSub_Name result)}) ] )