(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]} ) (= scope= flags=0 words=[] bindings=[('APIROOTS', {[VarSub APIROOTS test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS pkg] [LIT_SLASH /] [LIT_CHARS "api pkg"] [LIT_SLASH /] [LIT_CHARS "apis pkg"] [LIT_SLASH /] [LIT_CHARS "runtime pkg"] [LIT_SLASH /] [LIT_CHARS util] [LIT_SLASH /] [LIT_CHARS "intstr pkg"] [LIT_SLASH /] [LIT_CHARS watch]}]})]) (= scope= flags=0 words=[] bindings=[('_tmp', {[DQ [VarSub KUBE_ROOT][LIT_CHARS /_tmp]]})]) (FunctionDef cleanup [] (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub _tmp]]} ) ) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS cleanup]]} {[LIT_CHARS EXIT]} {[LIT_CHARS SIGINT]} ) (Com {[LIT_CHARS cleanup]} ) (For APIROOT [{[VarSub APIROOTS]}]) (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub _tmp][LIT_CHARS /][VarSub APIROOT]]} ) (Com {[LIT_CHARS cp]} {[LIT_CHARS -a]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /][VarSub APIROOT]] [LIT_CHARS /] [LIT_OTHER "*"]} {[DQ [VarSub _tmp][LIT_CHARS /][VarSub APIROOT][LIT_CHARS /]]} ) ) ) (Com {[DQ [VarSub KUBE_ROOT][LIT_CHARS /hack/update-generated-protobuf.sh]]} more_env=[('KUBE_VERBOSE', {[LIT_CHARS 3]})] ) (For APIROOT [{[VarSub APIROOTS]}]) (List (= scope= flags=0 words=[] bindings=[('TMP_APIROOT', {[DQ [VarSub _tmp][LIT_CHARS /][VarSub APIROOT]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "diffing "][VarSub APIROOT][LIT_CHARS " against freshly generated protobuf"]]} ) (= scope= flags=0 words=[] bindings=[('ret', {[LIT_CHARS 0]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[LIT_CHARS -Naupr]} {[LIT_CHARS -I]} {[SQ ]} {[LIT_CHARS -x]} {[SQ ]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /][VarSub APIROOT]]} {[DQ [VarSub TMP_APIROOT]]} ) (= scope= flags=0 words=[] bindings=[('ret', {[VarSub ?]})]) ) (Com {[LIT_CHARS cp]} {[LIT_CHARS -a]} {[DQ [VarSub TMP_APIROOT]] [LIT_CHARS /] [LIT_OTHER "*"]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /][VarSub APIROOT][LIT_CHARS /]]} ) (If (DBracket {B2 BINARY_INT_EQ {[VarSub ret]} {[LIT_CHARS 0]}}) (Com {[LIT_CHARS echo]} {[DQ [VarSub APIROOT][LIT_CHARS " up to date."]]} ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [VarSub APIROOT][LIT_CHARS " is out of date. Please run hack/update-generated-protobuf.sh"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) ) )