(List (FunctionDef kube::util::sortable_date [] (Com {[LIT_CHARS date]} {[DQ [LIT_CHARS "+%Y%m%d-%H%M%S"]]} ) ) (FunctionDef kube::util::wait_for_url [] (List (= scope= flags=0 words=[] bindings=[('url', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('prefix', {[VarSub 2 test_op=VS_TEST_COLON_HYPHEN {}]})]) (= scope= flags=0 words=[] bindings=[('wait', {[VarSub 3 test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 1]}]})]) (= scope= flags=0 words=[] bindings=[('times', {[VarSub 4 test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 30]}]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS which]} {[LIT_CHARS curl]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS usage]} {[DQ [LIT_CHARS "curl must be installed"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (= scope= flags=0 words=[{[LIT_CHARS i]}] bindings=[]) (For i [{[ComSub (Com {[LIT_CHARS seq]} {[LIT_CHARS 1]} {[VarSub times]})]}]) (List (= scope= flags=0 words=[{[LIT_CHARS out]}] bindings=[]) (If (= scope= flags=0 words=[] bindings=[('out', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS curl]} {[LIT_CHARS -gkfs]} {[VarSub url]})]})]) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS status]} {[DQ [LIT_CHARS "On try "][VarSub i][LIT_CHARS ", "][VarSub prefix][LIT_CHARS ": "][VarSub out]]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) ) (Com {[LIT_CHARS sleep]} {[VarSub wait]} ) ) ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS error]} {[DQ [LIT_CHARS "Timed out waiting for "][VarSub prefix][LIT_CHARS " to answer at "][VarSub url][LIT_CHARS "; tried "][VarSub times][LIT_CHARS " waiting "][VarSub wait][LIT_CHARS " between each"]]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (FunctionDef kube::util::get_random_port [] (Com {[LIT_CHARS awk]} {[LIT_CHARS -v]} {[LIT_VAR_LIKE "min="] [LIT_CHARS 1024] =} {[LIT_CHARS -v]} {[LIT_VAR_LIKE "max="] [LIT_CHARS 65535] =} {[SQ ]} ) ) (FunctionDef kube::util::test_host_port_free [] (List (= scope= flags=0 words=[] bindings=[('host', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('port', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('success', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('fail', {[LIT_CHARS 1]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS which]} {[LIT_CHARS nc]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS usage]} {[DQ [LIT_CHARS "netcat isn't installed, can't verify if "][VarSub host][LIT_CHARS ":"][VarSub port][LIT_CHARS " is free, skipping the check..."]]} ) (Com {[LIT_CHARS return]} {[VarSub success]} ) ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_OTHER "!"]} {[ComSub (Com {[LIT_CHARS nc]} {[LIT_CHARS -vz]} {[DQ [VarSub host]]} {[DQ [VarSub port]]})]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS status]} {[DQ [VarSub host][LIT_CHARS ":"][VarSub port][LIT_CHARS " is free, proceeding..."]]} ) (Com {[LIT_CHARS return]} {[VarSub success]} ) ) (ElseTrue) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS status]} {[DQ [VarSub host][LIT_CHARS ":"][VarSub port][LIT_CHARS " is already used"]]} ) (Com {[LIT_CHARS return]} {[VarSub fail]} ) ) ) ) ) (FunctionDef kube::util::trap_add [] (List (= scope= flags=0 words=[{[LIT_CHARS trap_add_cmd]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('trap_add_cmd', {[VarSub 1]})]) (Com {[LIT_CHARS shift]} ) (For trap_add_name [{[DQ [VarSub @]]}]) (List (= scope= flags=0 words=[{[LIT_CHARS existing_cmd]}] bindings=[]) (= scope= flags=0 words=[{[LIT_CHARS new_cmd]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('existing_cmd', {[ComSub (Pipeline (Com {[LIT_CHARS trap]} {[LIT_CHARS -p]} {[DQ [VarSub trap_add_name]]}) (Com {[LIT_CHARS awk]} {[LIT_CHARS -F] [DQ [LIT_CHARS "'"]]} {[SQ ]}) )]})]) (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub existing_cmd]]}}) (= scope= flags=0 words=[] bindings=[('new_cmd', {[DQ [VarSub trap_add_cmd]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('new_cmd', {[DQ [VarSub existing_cmd][LIT_CHARS ";"][VarSub trap_add_cmd]]})]) ) (Com {[LIT_CHARS trap]} {[DQ [VarSub new_cmd]]} {[DQ [VarSub trap_add_name]]} ) ) ) ) ) (FunctionDef kube::util::cleanup-temp-dir [] (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub KUBE_TEMP]]} ) ) (FunctionDef kube::util::ensure-temp-dir [] (If (DBracket {B1 UNARY_STRING_z {[VarSub KUBE_TEMP test_op=VS_TEST_HYPHEN {}]}}) (List (= scope= flags=0 words=[] bindings=[('KUBE_TEMP', {[ComSub (AndOr OP_OR_IF (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS mktemp]} {[LIT_CHARS -d]}) (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]} {[LIT_CHARS -t]} {[LIT_CHARS kubernetes.XXXXXX]}) )]})]) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS trap_add]} {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS cleanup-temp-dir]} {[LIT_CHARS EXIT]} ) ) ) ) (FunctionDef kube::util::host_platform [] (List (= scope= flags=0 words=[{[LIT_CHARS host_os]}] bindings=[]) (= scope= flags=0 words=[{[LIT_CHARS host_arch]}] bindings=[]) (Case to_match={[DQ [ComSub (Com {[LIT_CHARS uname]} {[LIT_CHARS -s]})]]}, pat_word_list=[[{[LIT_CHARS Darwin]}], [{[LIT_CHARS Linux]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('host_os', {[LIT_CHARS darwin]})]) (= scope= flags=0 words=[] bindings=[('host_os', {[LIT_CHARS linux]})]) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS error]} {[DQ [LIT_CHARS "Unsupported host OS. Must be Linux or Mac OS X."]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (Case to_match={[DQ [ComSub (Com {[LIT_CHARS uname]} {[LIT_CHARS -m]})]]}, pat_word_list=[[{[LIT_CHARS x86_64] [LIT_OTHER "*"]}], [{[LIT_CHARS i] [LIT_OTHER "?"] [LIT_CHARS 86_64] [LIT_OTHER "*"]}], [{[LIT_CHARS amd64] [LIT_OTHER "*"]}], [{[LIT_CHARS aarch64] [LIT_OTHER "*"]}], [{[LIT_CHARS arm64] [LIT_OTHER "*"]}], [{[LIT_CHARS arm] [LIT_OTHER "*"]}], [{[LIT_CHARS i] [LIT_OTHER "?"] [LIT_CHARS 86] [LIT_OTHER "*"]}], [{[LIT_CHARS s390x] [LIT_OTHER "*"]}], [{[LIT_CHARS ppc64le] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('host_arch', {[LIT_CHARS amd64]})]) (= scope= flags=0 words=[] bindings=[('host_arch', {[LIT_CHARS amd64]})]) (= scope= flags=0 words=[] bindings=[('host_arch', {[LIT_CHARS amd64]})]) (= scope= flags=0 words=[] bindings=[('host_arch', {[LIT_CHARS arm64]})]) (= scope= flags=0 words=[] bindings=[('host_arch', {[LIT_CHARS arm64]})]) (= scope= flags=0 words=[] bindings=[('host_arch', {[LIT_CHARS arm]})]) (= scope= flags=0 words=[] bindings=[('host_arch', {[LIT_CHARS x86]})]) (= scope= flags=0 words=[] bindings=[('host_arch', {[LIT_CHARS s390x]})]) (= scope= flags=0 words=[] bindings=[('host_arch', {[LIT_CHARS ppc64le]})]) (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS error]} {[DQ [LIT_CHARS "Unsupported host arch. Must be x86_64, 386, arm, arm64, s390x or ppc64le."]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub host_os][LIT_CHARS /][VarSub host_arch]]} ) ) ) (FunctionDef kube::util::find-binary-for-platform [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('lookfor', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('platform', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('locations', {[Array {OP_NEWLINE "\n"} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /_output/bin/][VarSub lookfor]]} {OP_NEWLINE "\n"} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /_output/dockerized/bin/][VarSub platform][LIT_CHARS /][VarSub lookfor]]} {OP_NEWLINE "\n"} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /_output/local/bin/][VarSub platform][LIT_CHARS /][VarSub lookfor]]} {OP_NEWLINE "\n"} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /platforms/][VarSub platform][LIT_CHARS /][VarSub lookfor]]} {OP_NEWLINE "\n"}]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('bin', {[ComSub (Pipeline (Subshell (AndOr OP_OR_IF (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS ls]} {[LIT_CHARS -t]} {[DQ [VarSub locations bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}) (Com {[LIT_CHARS true]}) ) ) (Com {[LIT_CHARS head]} {[LIT_CHARS -1]}) )]})]) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [VarSub bin]]} ) ) ) (FunctionDef kube::util::find-binary [] (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS find-binary-for-platform]} {[DQ [VarSub 1]]} {[DQ [ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS host_platform]})]]} ) ) (FunctionDef kube::util::gen-docs [] (List (= scope= flags=0 words=[] bindings=[('dest', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('gendocs', {[ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS find-binary]} {[DQ [LIT_CHARS gendocs]]})]})]) (= scope= flags=0 words=[] bindings=[('genkubedocs', {[ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS find-binary]} {[DQ [LIT_CHARS genkubedocs]]})]})]) (= scope= flags=0 words=[] bindings=[('genman', {[ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS find-binary]} {[DQ [LIT_CHARS genman]]})]})]) (= scope= flags=0 words=[] bindings=[('genyaml', {[ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS find-binary]} {[DQ [LIT_CHARS genyaml]]})]})]) (= scope= flags=0 words=[] bindings=[('genfeddocs', {[ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS find-binary]} {[DQ [LIT_CHARS genfeddocs]]})]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub dest][LIT_CHARS /docs/user-guide/kubectl/]]} ) (Com {[DQ [VarSub gendocs]]} {[DQ [VarSub dest][LIT_CHARS /docs/user-guide/kubectl/]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub dest][LIT_CHARS /docs/admin/]]} ) (Com {[DQ [VarSub genkubedocs]]} {[DQ [VarSub dest][LIT_CHARS /docs/admin/]]} {[DQ [LIT_CHARS kube-apiserver]]} ) (Com {[DQ [VarSub genkubedocs]]} {[DQ [VarSub dest][LIT_CHARS /docs/admin/]]} {[DQ [LIT_CHARS kube-controller-manager]]} ) (Com {[DQ [VarSub genkubedocs]]} {[DQ [VarSub dest][LIT_CHARS /docs/admin/]]} {[DQ [LIT_CHARS kube-proxy]]} ) (Com {[DQ [VarSub genkubedocs]]} {[DQ [VarSub dest][LIT_CHARS /docs/admin/]]} {[DQ [LIT_CHARS kube-scheduler]]} ) (Com {[DQ [VarSub genkubedocs]]} {[DQ [VarSub dest][LIT_CHARS /docs/admin/]]} {[DQ [LIT_CHARS kubelet]]} ) (Com {[DQ [VarSub genfeddocs]]} {[DQ [VarSub dest][LIT_CHARS /docs/admin/]]} {[DQ [LIT_CHARS federation-apiserver]]} ) (Com {[DQ [VarSub genfeddocs]]} {[DQ [VarSub dest][LIT_CHARS /docs/admin/]]} {[DQ [LIT_CHARS federation-controller-manager]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub dest][LIT_CHARS /docs/man/man1/]]} ) (Com {[DQ [VarSub genman]]} {[DQ [VarSub dest][LIT_CHARS /docs/man/man1/]]} {[DQ [LIT_CHARS kube-apiserver]]} ) (Com {[DQ [VarSub genman]]} {[DQ [VarSub dest][LIT_CHARS /docs/man/man1/]]} {[DQ [LIT_CHARS kube-controller-manager]]} ) (Com {[DQ [VarSub genman]]} {[DQ [VarSub dest][LIT_CHARS /docs/man/man1/]]} {[DQ [LIT_CHARS kube-proxy]]} ) (Com {[DQ [VarSub genman]]} {[DQ [VarSub dest][LIT_CHARS /docs/man/man1/]]} {[DQ [LIT_CHARS kube-scheduler]]} ) (Com {[DQ [VarSub genman]]} {[DQ [VarSub dest][LIT_CHARS /docs/man/man1/]]} {[DQ [LIT_CHARS kubelet]]} ) (Com {[DQ [VarSub genman]]} {[DQ [VarSub dest][LIT_CHARS /docs/man/man1/]]} {[DQ [LIT_CHARS kubectl]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub dest][LIT_CHARS /docs/yaml/kubectl/]]} ) (Com {[DQ [VarSub genyaml]]} {[DQ [VarSub dest][LIT_CHARS /docs/yaml/kubectl/]]} ) (Com {[LIT_CHARS pushd]} {[DQ [VarSub dest]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS touch]} {[LIT_CHARS .generated_docs]} ) (Pipeline (Com {[LIT_CHARS find]} {[LIT_CHARS .]} {[LIT_CHARS -type]} {[LIT_CHARS f]} ) (Com {[LIT_CHARS cut]} {[LIT_CHARS -sd]} {[LIT_CHARS /]} {[LIT_CHARS -f]} {[LIT_CHARS 2-]} ) (Com {[LIT_CHARS sort]} < (FilenameRedirectNode filename={[LIT_CHARS .generated_docs]} "> 1), > more_env=[('LC_ALL', {[LIT_CHARS C]})] ) ) (Com {[LIT_CHARS popd]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) ) (FunctionDef kube::util::set-placeholder-gen-docs [] (List (= scope= flags=0 words=[] bindings=[('list_file', {[DQ [VarSub KUBE_ROOT][LIT_CHARS /.generated_docs]]})]) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -e]} {[VarSub list_file]} {[LIT_DBRACKET_LIKE "]"]} ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS file]} ) (If (DBracket {B2 BINARY_STRING_NOT_EQUAL {[DQ [VarSub list_file]]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /][VarSub file]]}}) (Com {[LIT_CHARS cp]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /hack/autogenerated_placeholder.txt]]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /][VarSub file]]} ) ) ) ) ) ) (FunctionDef kube::util::remove-gen-docs [] (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -e]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /.generated_docs]]} {[LIT_DBRACKET_LIKE "]"]} ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS file]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS rm]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /][VarSub file]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS true]} ) ) ) ) ) (FunctionDef kube::util::gen-analytics [] (List (= scope= flags=0 words=[] bindings=[('path', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('dryrun', {[DQ [VarSub 2 test_op=VS_TEST_COLON_HYPHEN {}]]})]) (= scope= flags=0 words=[{[LIT_CHARS mdfiles]}, {[LIT_CHARS dir]}, {[LIT_CHARS link]}] bindings=[]) (If (DBracket {B2 BINARY_STRING_EQUAL {[ComSub (Com {[LIT_CHARS uname]})]} {[SQ ]}}) (= scope= flags=0 words=[] bindings=[('dir', {[DQ [VarSub path][LIT_CHARS /]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('dir', {[DQ [VarSub path]]})]) ) (= scope= flags=0 words=[] bindings=[('mdfiles', {[Array {[ComSub (Com {[LIT_CHARS find]} {[DQ [VarSub dir]]} {[LIT_CHARS -name]} {[DQ [LIT_CHARS "*.md"]]} {[LIT_CHARS -type]} {[LIT_CHARS f]} {[LIT_CHARS -not]} {[LIT_CHARS -path]} {[SQ ]} {[LIT_CHARS -not]} {[LIT_CHARS -path]} {[DQ [VarSub path][LIT_CHARS "/vendor/*"]]} {[LIT_CHARS -not]} {[LIT_CHARS -path]} {[DQ [VarSub path][LIT_CHARS "/staging/*"]]} {[LIT_CHARS -not]} {[LIT_CHARS -path]} {[DQ [VarSub path][LIT_CHARS "/third_party/*"]]} {[LIT_CHARS -not]} {[LIT_CHARS -path]} {[DQ [VarSub path][LIT_CHARS "/_gopath/*"]]} {[LIT_CHARS -not]} {[LIT_CHARS -path]} {[DQ [VarSub path][LIT_CHARS "/_output/*"]]} {[LIT_CHARS -not]} {[LIT_CHARS -path]} {[DQ [VarSub path][LIT_CHARS "/docs/user-guide/kubectl/kubectl*"]]})]}]})]) (For f [{[DQ [VarSub mdfiles bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]) (List (= scope= flags=0 words=[] bindings=[('link', {[ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS analytics-link]} {[DQ [VarSub f transform_ops=[VS_UNARY_POUND {[VarSub path] [LIT_SLASH /]}]]]})]})]) (If (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[LIT_CHARS -F]} {[LIT_CHARS -x]} {[DQ [VarSub link]]} {[DQ [VarSub f]]} ) (Com {[LIT_CHARS continue]} ) (DBracket {B1 UNARY_STRING_z {[DQ [VarSub dryrun]]}}) (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[DQ [\ LIT_ESCAPED_CHAR "\\n"][\ LIT_ESCAPED_CHAR "\\n"][VarSub link]]} < (FilenameRedirectNode filename={[DQ [VarSub f]]} >"> 1), > ) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [VarSub f]]} ) ) ) ) ) ) (FunctionDef kube::util::analytics-link [] (List (= scope= flags=0 words=[] bindings=[('path', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/"][VarSub path][LIT_CHARS "?pixel)]()"]]} ) ) ) (FunctionDef kube::util::group-version-to-pkg-path [] (List (= scope= flags=0 words=[] bindings=[('group_version', {[DQ [VarSub 1]]})]) (Case to_match={[DQ [VarSub group_version]]}, pat_word_list=[[{[LIT_CHARS __internal]}], [{[LIT_CHARS v1]}], [{[LIT_CHARS unversioned]}], [{[LIT_OTHER "*"] [LIT_CHARS .k8s.io]}], [{[LIT_OTHER "*"] [LIT_CHARS .k8s.io/] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS api]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS api/v1]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS api/unversioned]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS apis/][VarSub group_version transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS ".*k8s.io"]}]]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS apis/][VarSub group_version transform_ops=[PatSub {[LIT_CHARS ".*k8s.io"]} {}]]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS apis/][VarSub group_version transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS __internal]}]]]} ) ) ) ) (FunctionDef kube::util::gv-to-swagger-name [] (List (= scope= flags=0 words=[] bindings=[('group_version', {[DQ [VarSub 1]]})]) (Case to_match={[DQ [VarSub group_version]]}, pat_word_list=[[{[LIT_CHARS v1]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS v1]]} ) (Com {[LIT_CHARS echo]} {[DQ [VarSub group_version transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]][LIT_CHARS _][VarSub group_version transform_ops=[VS_UNARY_POUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]]} ) ) ) ) (FunctionDef kube::util::fetch-swagger-spec [] (List (For ver [{[VarSub VERSIONS]}]) (List (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [LIT_CHARS " "][VarSub KUBE_NONSERVER_GROUP_VERSIONS][LIT_CHARS " "]]} {[LIT_OTHER "*"] [DQ [LIT_CHARS " "][VarSub ver][LIT_CHARS " "]] [LIT_OTHER "*"]}}) (Com {[LIT_CHARS continue]} ) ) (If (DBracket {B2 BINARY_STRING_EQUAL {[VarSub ver]} {[DQ [LIT_CHARS v1]]}}) (= scope= flags=0 words=[] bindings=[('SUBPATH', {[DQ [LIT_CHARS api]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('SUBPATH', {[DQ [LIT_CHARS apis]]})]) ) (= scope= flags=0 words=[] bindings=[('SUBPATH', {[DQ [VarSub SUBPATH][LIT_CHARS /][VarSub ver]]})]) (= scope= flags=0 words=[] bindings=[('SWAGGER_JSON_NAME', {[DQ [ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS gv-to-swagger-name]} {[VarSub ver]})][LIT_CHARS .json]]})]) (Com {[LIT_CHARS curl]} {[LIT_CHARS -w]} {[DQ [\ LIT_ESCAPED_CHAR "\\n"]]} {[LIT_CHARS -fs]} {[DQ [VarSub SWAGGER_API_PATH][VarSub SUBPATH]]} < (FilenameRedirectNode filename={[DQ [VarSub SWAGGER_ROOT_DIR][LIT_CHARS /][VarSub SWAGGER_JSON_NAME]]} "> 1), > ) (If (DBracket {B2 BINARY_STRING_EQUAL {[VarSub ver]} {[DQ [LIT_CHARS v1]]}}) (Com {[LIT_CHARS continue]} ) ) (= scope= flags=0 words=[] bindings=[('SUBPATH', {[DQ [LIT_CHARS apis/]] [VarSub ver transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]]})]) (= scope= flags=0 words=[] bindings=[('SWAGGER_JSON_NAME', {[DQ [VarSub ver transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]][LIT_CHARS .json]]})]) (Com {[LIT_CHARS curl]} {[LIT_CHARS -w]} {[DQ [\ LIT_ESCAPED_CHAR "\\n"]]} {[LIT_CHARS -fs]} {[DQ [VarSub SWAGGER_API_PATH][VarSub SUBPATH]]} < (FilenameRedirectNode filename={[DQ [VarSub SWAGGER_ROOT_DIR][LIT_CHARS /][VarSub SWAGGER_JSON_NAME]]} "> 1), > ) ) ) (Com {[LIT_CHARS curl]} {[LIT_CHARS -w]} {[DQ [\ LIT_ESCAPED_CHAR "\\n"]]} {[LIT_CHARS -fs]} {[DQ [VarSub SWAGGER_API_PATH]]} < (FilenameRedirectNode filename={[DQ [VarSub SWAGGER_ROOT_DIR][LIT_CHARS /resourceListing.json]]} "> 1), > ) (Com {[LIT_CHARS curl]} {[LIT_CHARS -w]} {[DQ [\ LIT_ESCAPED_CHAR "\\n"]]} {[LIT_CHARS -fs]} {[DQ [VarSub SWAGGER_API_PATH][LIT_CHARS version]]} < (FilenameRedirectNode filename={[DQ [VarSub SWAGGER_ROOT_DIR][LIT_CHARS /version.json]]} "> 1), > ) (Com {[LIT_CHARS curl]} {[LIT_CHARS -w]} {[DQ [\ LIT_ESCAPED_CHAR "\\n"]]} {[LIT_CHARS -fs]} {[DQ [VarSub SWAGGER_API_PATH][LIT_CHARS api]]} < (FilenameRedirectNode filename={[DQ [VarSub SWAGGER_ROOT_DIR][LIT_CHARS /api.json]]} "> 1), > ) (Com {[LIT_CHARS curl]} {[LIT_CHARS -w]} {[DQ [\ LIT_ESCAPED_CHAR "\\n"]]} {[LIT_CHARS -fs]} {[DQ [VarSub SWAGGER_API_PATH][LIT_CHARS apis]]} < (FilenameRedirectNode filename={[DQ [VarSub SWAGGER_ROOT_DIR][LIT_CHARS /apis.json]]} "> 1), > ) (Com {[LIT_CHARS curl]} {[LIT_CHARS -w]} {[DQ [\ LIT_ESCAPED_CHAR "\\n"]]} {[LIT_CHARS -fs]} {[DQ [VarSub SWAGGER_API_PATH][LIT_CHARS logs]]} < (FilenameRedirectNode filename={[DQ [VarSub SWAGGER_ROOT_DIR][LIT_CHARS /logs.json]]} "> 1), > ) ) ) (FunctionDef kube::util::git_upstream_remote_name [] (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS remote]} {[LIT_CHARS -v]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS fetch]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -E]} {[SQ ]} ) (Com {[LIT_CHARS head]} {[LIT_CHARS -n]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS awk]} {[SQ ]} ) ) ) (FunctionDef kube::util::has_changes_against_upstream_branch [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('git_branch', {[VarSub 1]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pattern', {[VarSub 2]})]) (= scope= flags=0 words=[{[LIT_CHARS full_branch]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('full_branch', {[DQ [ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS git_upstream_remote_name]})][LIT_CHARS /][VarSub git_branch]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Checking for '"][VarSub pattern][LIT_CHARS "' changes against '"][VarSub full_branch][LIT_CHARS "'"]]} ) (If (Pipeline! (Com {[LIT_CHARS git]} {[LIT_CHARS describe]} {[DQ [VarSub full_branch]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) (If (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS diff]} {[LIT_CHARS --name-only]} {[DQ [VarSub full_branch][LIT_CHARS ...HEAD]]} ) (Com {[LIT_CHARS grep]} {[DQ [VarSub pattern]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) (If (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS status]} {[LIT_CHARS --porcelain]} ) (Com {[LIT_CHARS grep]} {[DQ [VarSub pattern]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Detected '"][VarSub pattern][LIT_CHARS "' uncommitted changes."]]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "No '"][VarSub pattern][LIT_CHARS "' changes detected."]]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (FunctionDef kube::util::download_file [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('url', {[VarSub 1]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('destination_file', {[VarSub 2]})]) (Fork (Com {[LIT_CHARS rm]} {[VarSub destination_file]} {[LIT_CHARS 2]} ) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS true]} ) ) (For i [{[ComSub (Com {[LIT_CHARS seq]} {[LIT_CHARS 5]})]}]) (If (Pipeline! (Com {[LIT_CHARS curl]} {[LIT_CHARS -fsSL]} {[LIT_CHARS --retry]} {[LIT_CHARS 3]} {[LIT_CHARS --keepalive-time]} {[LIT_CHARS 2]} {[VarSub url]} {[LIT_CHARS -o]} {[VarSub destination_file]} ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Downloading "][VarSub url][LIT_CHARS " failed. "][ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 5]}} {A Atom NODE_ARITH_WORD {[VarSub i]}}}][LIT_CHARS " retries left."]]} ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 1]} ) ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Downloading "][VarSub url][LIT_CHARS " succeed"]]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) )