(List (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS errexit]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS nounset]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS pipefail]} ) (= scope= flags=0 words=[] bindings=[('KUBE_ROOT', {[ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE]]})] [LIT_CHARS /..]})]) (Com {[LIT_CHARS source]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /hack/lib/init.sh]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS golang] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS setup_env]} ) (Com {[LIT_CHARS make]} {[LIT_CHARS -C]} {[DQ [VarSub KUBE_ROOT]]} {[LIT_VAR_LIKE "WHAT="] [LIT_CHARS cmd/linkcheck] =} ) (= scope= flags=0 words=[] bindings=[('linkcheck', {[ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS find-binary]} {[DQ [LIT_CHARS linkcheck]]})]})]) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS util] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS ensure-temp-dir]} ) (= scope= flags=0 words=[] bindings=[('OUTPUT', {[DQ [VarSub KUBE_TEMP]] [LIT_CHARS /linkcheck-output]})]) (FunctionDef cleanup [] (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub OUTPUT]]} ) ) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS cleanup]]} {[LIT_CHARS EXIT]} {[LIT_CHARS SIGINT]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub OUTPUT]]} ) (= scope= flags=0 words=[] bindings=[('APIROOT', {[DQ [VarSub KUBE_ROOT][LIT_CHARS /pkg/api/]]})]) (= scope= flags=0 words=[] bindings=[('APISROOT', {[DQ [VarSub KUBE_ROOT][LIT_CHARS /pkg/apis/]]})]) (= scope= flags=0 words=[] bindings=[('DOCROOT', {[DQ [VarSub KUBE_ROOT][LIT_CHARS /docs/]]})]) (= scope= flags=0 words=[] bindings=[('ROOTS', {[Array {[VarSub APIROOT]} {[VarSub APISROOT]} {[VarSub DOCROOT]}]})]) (= scope= flags=0 words=[] bindings=[('found_invalid', {[LIT_CHARS false]})]) (For root [{[DQ [VarSub ROOTS bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]) (List (AndOr OP_AND_IF (Com {[DQ [VarSub linkcheck]]} {[DQ [LIT_CHARS "--root-dir="][VarSub root]]} < (FilenameRedirectNode filename={[ComSub (Com redirects=[(DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1)]{[LIT_CHARS tee]} {[LIT_CHARS -a]} {[DQ [VarSub OUTPUT][LIT_CHARS /error]]})]} "> 2), > ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('ret', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('ret', {[VarSub ?]})]) ) ) (If (DBracket {B2 BINARY_INT_EQ {[VarSub ret]} {[LIT_CHARS 1]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Failed: found invalid links in "][VarSub root][LIT_CHARS .]]} ) (= scope= flags=0 words=[] bindings=[('found_invalid', {[LIT_CHARS true]})]) ) ) (If (DBracket {B2 BINARY_INT_GT {[VarSub ret]} {[LIT_CHARS 1]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Error running linkcheck"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub found_invalid]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS true]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Summary of invalid links:"]]} ) (Com {[LIT_CHARS cat]} {[VarSub OUTPUT] [LIT_CHARS /error]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) )