(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 /..]})]) (= scope= flags=0 words=[] bindings=[('boilerDir', {[DQ [VarSub KUBE_ROOT][LIT_CHARS /hack/boilerplate]]})]) (= scope= flags=0 words=[] bindings=[('boiler', {[DQ [VarSub boilerDir][LIT_CHARS /boilerplate.py]]})]) (= scope= flags=0 words=[] bindings=[('files_need_boilerplate', {[Array {[ComSub (Com {[VarSub boiler]} {[DQ [VarSub @]]})]}]})]) (= scope= flags=0 words=[] bindings=[('unitTestOut', {[DQ [ComSub (Com {[LIT_CHARS mktemp]})]]})]) (Com {[LIT_CHARS trap]} {[LIT_CHARS cleanup]} {[LIT_CHARS EXIT]} ) (FunctionDef cleanup [] (Com {[LIT_CHARS rm]} {[DQ [VarSub unitTestOut]]} ) ) (Com {[LIT_CHARS pushd]} {[DQ [VarSub boilerDir]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (If (Pipeline! (Com {[LIT_CHARS python]} {[LIT_CHARS -m]} {[LIT_CHARS unittest]} {[LIT_CHARS boilerplate_test]} < (FilenameRedirectNode filename={[DQ [VarSub unitTestOut]]} "> 2), > ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "boilerplate_test.py failed"]]} ) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS cat]} {[DQ [VarSub unitTestOut]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (Com {[LIT_CHARS popd]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (If (DBracket {B2 BINARY_INT_GT {[VarSub files_need_boilerplate bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]} {[LIT_CHARS 0]}}) (List (For file [{[DQ [VarSub files_need_boilerplate bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Boilerplate header is wrong for: "][VarSub file]]} ) ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) )