(List (= scope= flags=0 words=[] bindings=[('KUBE_VERBOSE', {[DQ [VarSub KUBE_VERBOSE test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 5]}]]})]) (FunctionDef kube::log::errexit [] (List (= scope= flags=0 words=[] bindings=[('err', {[DQ [VarSub PIPESTATUS bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]})]) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS set]} {[LIT_OTHER "+"] [LIT_CHARS o]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -qe]} {[DQ [LIT_CHARS "-o errexit"]]} ) ) (Com {[LIT_CHARS return]} ) ) (Com {[LIT_CHARS set]} {[LIT_OTHER "+"] [LIT_CHARS o]} {[LIT_CHARS xtrace]} ) (= scope= flags=0 words=[] bindings=[('code', {[DQ [VarSub 1 test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 1]}]]})]) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS error_exit]} {[DQ [LIT_CHARS "'"][VarSub BASH_COMMAND][LIT_CHARS "' exited with status "][VarSub err]]} {[DQ [VarSub 1 test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 1]}]]} {[LIT_CHARS 1]} ) ) ) (FunctionDef kube::log::install_errexit [] (List (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS ERR]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS errtrace]} ) ) ) (FunctionDef kube::log::stack [] (List (= scope= flags=0 words=[] bindings=[('stack_skip', {[VarSub 1 test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 0]}]})]) (= scope= flags=0 words=[] bindings=[('stack_skip', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub stack_skip]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (If (DBracket {B2 BINARY_INT_GT {[VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]} {[VarSub stack_skip]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Call stack:"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (= scope= flags=0 words=[{[LIT_CHARS i]}] bindings=[]) (ForExpr {A2 AS_OP_EQUAL {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}} {A2 AS_OP_LE {A Atom NODE_ARITH_WORD {[VarSub i]}} {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(#len)]]}} {A Atom NODE_ARITH_WORD {[VarSub stack_skip]}}}} {A1 AS_OP_DPLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} } (List (= scope= flags=0 words=[] bindings=[('frame_no', {[ArithSub {A2 AS_OP_PLUS {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}} {A Atom NODE_ARITH_WORD {[VarSub stack_skip]}}}]})]) (= scope= flags=0 words=[] bindings=[('source_file', {[VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub frame_no]}})]})]) (= scope= flags=0 words=[] bindings=[('source_lineno', {[VarSub BASH_LINENO bracket_op=(Index {A Atom NODE_ARITH_WORD {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub frame_no]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]}})]})]) (= scope= flags=0 words=[] bindings=[('funcname', {[VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub frame_no]}})]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " "][VarSub i][LIT_CHARS ": "][VarSub source_file][LIT_CHARS ":"][VarSub source_lineno][LIT_CHARS " "][VarSub funcname][LIT_CHARS "(...)"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) ) ) ) ) (FunctionDef kube::log::error_exit [] (List (= scope= flags=0 words=[] bindings=[('message', {[DQ [VarSub 1 test_op=VS_TEST_COLON_HYPHEN {}]]})]) (= scope= flags=0 words=[] bindings=[('code', {[DQ [VarSub 2 test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 1]}]]})]) (= scope= flags=0 words=[] bindings=[('stack_skip', {[DQ [VarSub 3 test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 0]}]]})]) (= scope= flags=0 words=[] bindings=[('stack_skip', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub stack_skip]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (If (DBracket {B2 BINARY_INT_GE {[VarSub KUBE_VERBOSE]} {[LIT_CHARS 4]}}) (List (= scope= flags=0 words=[] bindings=[('source_file', {[VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub stack_skip]}})]})]) (= scope= flags=0 words=[] bindings=[('source_line', {[VarSub BASH_LINENO bracket_op=(Index {A Atom NODE_ARITH_WORD {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub stack_skip]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]}})]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "!!! Error in "][VarSub source_file][LIT_CHARS ":"][VarSub source_line]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (AndOr OP_OR_IF (DBracket {B1 UNARY_STRING_z {[VarSub 1 test_op=VS_TEST_HYPHEN {}]}}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " "][VarSub 1]]} ) ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS stack]} {[VarSub stack_skip]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Exiting with status "][VarSub code]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) (Com {[LIT_CHARS exit]} {[DQ [VarSub code]]} ) ) ) (FunctionDef kube::log::error [] (List (= scope= flags=0 words=[] bindings=[('timestamp', {[ComSub (Com {[LIT_CHARS date]} {[LIT_OTHER "+"] [DQ [LIT_CHARS "[%m%d %H:%M:%S]"]]})]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "!!! "][VarSub timestamp][LIT_CHARS " "][VarSub 1 test_op=VS_TEST_HYPHEN {}]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS shift]} ) (For message do_arg_iter) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " "][VarSub message]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) ) (FunctionDef kube::log::usage [] (List (Com {[LIT_CHARS echo]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (= scope= flags=0 words=[{[LIT_CHARS message]}] bindings=[]) (For message do_arg_iter) (Com {[LIT_CHARS echo]} {[DQ [VarSub message]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (Com {[LIT_CHARS echo]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) (FunctionDef kube::log::usage_from_stdin [] (List (= scope= flags=0 words=[] bindings=[('messages', {[Array ]})]) (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS line]} ) (= scope= flags=0 words=[] bindings=[('messages+', {[Array {[DQ [VarSub line]]}]})]) ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS usage]} {[DQ [VarSub messages bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} ) ) ) (FunctionDef kube::log::info [] (List (= scope= flags=0 words=[] bindings=[('V', {[DQ [VarSub V test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 0]}]]})]) (If (DBracket {B2 BINARY_STRING_LESS {[VarSub KUBE_VERBOSE]} {[VarSub V]}}) (Com {[LIT_CHARS return]} ) ) (For message do_arg_iter) (Com {[LIT_CHARS echo]} {[DQ [VarSub message]]} ) ) ) ) (FunctionDef kube::log::progress [] (For message do_arg_iter) (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[LIT_CHARS -n]} {[DQ [VarSub message]]} ) ) ) (FunctionDef kube::log::info_from_stdin [] (List (= scope= flags=0 words=[] bindings=[('messages', {[Array ]})]) (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS line]} ) (= scope= flags=0 words=[] bindings=[('messages+', {[Array {[DQ [VarSub line]]}]})]) ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS log] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS info]} {[DQ [VarSub messages bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} ) ) ) (FunctionDef kube::log::status [] (List (= scope= flags=0 words=[] bindings=[('V', {[DQ [VarSub V test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 0]}]]})]) (If (DBracket {B2 BINARY_STRING_LESS {[VarSub KUBE_VERBOSE]} {[VarSub V]}}) (Com {[LIT_CHARS return]} ) ) (= scope= flags=0 words=[] bindings=[('timestamp', {[ComSub (Com {[LIT_CHARS date]} {[LIT_OTHER "+"] [DQ [LIT_CHARS "[%m%d %H:%M:%S]"]]})]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ "][VarSub timestamp][LIT_CHARS " "][VarSub 1]]} ) (Com {[LIT_CHARS shift]} ) (For message do_arg_iter) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " "][VarSub message]]} ) ) ) ) )