(command.CommandList children: [ (C {<Id.KW_Set set>} {<-o>} {<nounset>}) (C {<Id.KW_Set set>} {<-o>} {<pipefail>}) (C {<Id.KW_Set set>} {<-o>} {<errexit>}) (C {<readonly>} {<Id.Lit_VarLike 'TIMEFORMAT='> (SQ <'%R'>)}) (command.ShFunction name: strace-callback body: (BraceGroup children: [ (command.Pipeline children: [ (command.Simple words: [{<strace>} {(DQ ($ Id.VSub_At '$@'))}] redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) (C {<wc>} {<-l>}) ] negated: F ) ] ) ) (command.ShFunction name: time-callback body: (BraceGroup children: [ (command.TimeBlock pipeline: (command.Simple words: [{(DQ ($ Id.VSub_At '$@'))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ) ] ) ) (command.ShFunction name: compare body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'callback='> (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<strace-callback>}) ) } ) (command.ForEach iter_name: sh iter_words: [{<bash>} {<dash>} {<mksh>} {<zsh>}] do_arg_iter: F body: (command.DoGroup children: [ (C {<echo>} {($ Id.VSub_DollarName '$sh')}) (C {($ Id.VSub_DollarName '$callback')} {($ Id.VSub_DollarName '$sh')} {<-c>} {(SQ <'echo "hi" > /dev/null'>)} ) (C {<echo>}) ] ) ) (command.ForEach iter_name: awk iter_words: [{<gawk>} {<mawk>}] do_arg_iter: F body: (command.DoGroup children: [ (C {<echo>} {($ Id.VSub_DollarName '$awk')}) (command.Simple words: [ {($ Id.VSub_DollarName '$callback')} {($ Id.VSub_DollarName '$awk')} {(SQ <'{ print "hi" } '>)} ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<echo>}) ] ) ) (command.If arms: [ (if_arm cond: [(command.Sentence child:(C {<which>} {<lua>}) terminator:<Id.Op_Semi _>)] action: [ (C {<echo>} {<lua>}) (C {($ Id.VSub_DollarName '$callback')} {<lua>} {<-e>} {(SQ <'print "hi"'>)}) (C {<echo>}) ] spids: [244 251] ) ] ) (C {<echo>} {<perl>}) (C {($ Id.VSub_DollarName '$callback')} {<perl>} {<-e>} {(SQ <'print "hi\\n"'>)}) (C {<echo>}) (command.If arms: [ (if_arm cond: [(command.Sentence child:(C {<which>} {<ruby>}) terminator:<Id.Op_Semi _>)] action: [ (C {<echo>} {<ruby>}) (C {($ Id.VSub_DollarName '$callback')} {<ruby>} {<-e>} {(SQ <'print "hi\\n"'>)}) (C {<echo>}) ] spids: [301 308] ) ] ) (command.ForEach iter_name: py iter_words: [{<python>} {<python3>}] do_arg_iter: F body: (command.DoGroup children: [ (C {<echo>} {($ Id.VSub_DollarName '$py')} {<-S>}) (C {($ Id.VSub_DollarName '$callback')} {($ Id.VSub_DollarName '$py')} {<-S>} {<-c>} {(SQ <'print("hi")'>)} ) (C {<echo>}) ] ) ) (command.ForEach iter_name: py iter_words: [{<python>} {<python3>}] do_arg_iter: F body: (command.DoGroup children: [ (C {<echo>} {($ Id.VSub_DollarName '$py')} {<import>}) (C {($ Id.VSub_DollarName '$callback')} {($ Id.VSub_DollarName '$py')} {<-S>} {<-c>} {(SQ <'import json;print("hi")'>)} ) (C {<echo>}) ] ) ) (command.ForEach iter_name: py iter_words: [{<python>} {<python3>}] do_arg_iter: F body: (command.DoGroup children: [ (C {<echo>} {($ Id.VSub_DollarName '$py')} {<import>}) (C {($ Id.VSub_DollarName '$callback')} {($ Id.VSub_DollarName '$py')} {<-S>} {<-c>} {(SQ <'import json;print("hi")'>)} ) (C {<echo>}) ] ) ) (C {<echo>} {(SQ <'Small app.zip'>)}) (C {($ Id.VSub_DollarName '$callback')} {<python>} {<-S>} {<'_tmp/app.zip'>}) (C {<echo>}) (C {<echo>} {(SQ <'hello app bundle'>)}) (command.AndOr ops: [Id.Op_DPipe] children: [(C {($ Id.VSub_DollarName '$callback')} {<'_bin/hello.ovm'>}) (C {<true>})] ) (C {<echo>}) (C {<echo>} {(SQ <'OSH app bundle true'>)}) (C {($ Id.VSub_DollarName '$callback')} {<'_bin/true'>}) (C {<echo>}) (C {<echo>} {(SQ <'OSH app bundle Hello World'>)}) (C {($ Id.VSub_DollarName '$callback')} {<'_bin/osh'>} {<-c>} {(SQ <'echo hi'>)}) (C {<echo>}) ] ) ) (command.ShFunction name: compare-strace body: (BraceGroup children:[(C {<compare>} {<strace-callback>})]) ) (command.ShFunction name: compare-time body: (BraceGroup children:[(C {<compare>} {<time-callback>})]) ) (command.ShFunction name: import-stats body: (BraceGroup children: [ (C {<echo>} {<json>}) (command.Pipeline children: [ (command.Simple words: [{<strace>} {<python>} {<-c>} {(SQ <'import json'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) (C {<grep>} {<json>}) (C {<wc>} {<-l>}) ] negated: F ) (C {<echo>} {<nonexistent___>}) (command.Pipeline children: [ (command.Simple words: [{<strace>} {<python>} {<-c>} {(SQ <'import nonexistent___'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) (C {<grep>} {<nonexistent___>}) (C {<wc>} {<-l>}) ] negated: F ) ] ) ) (command.ShFunction name: make-zip body: (BraceGroup children: [ (C {<rm>} {<-r>} {<-f>} {<'_tmp/app'>}) (C {<rm>} {<-f>} {<'_tmp/app.zip'>}) (C {<mkdir>} {<-p>} {<'_tmp/app'>}) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'_tmp/app/lib1.py'>} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EOF>} here_end_span_id: 695 stdin_parts: [ <'print '> <Id.Right_DoubleQuote '"'> <'hi from lib1'> <Id.Right_DoubleQuote '"'> <'\n'> ] ) ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'_tmp/app/lib2.py'>} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EOF>} here_end_span_id: 713 stdin_parts: [ <'print '> <Id.Right_DoubleQuote '"'> <'hi from lib2'> <Id.Right_DoubleQuote '"'> <'\n'> ] ) ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'_tmp/app/__main__.py'>} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EOF>} here_end_span_id: 735 stdin_parts: [ <'import sys\n'> <'sys.path = [sys.argv[0]]\n'> <'import lib1\n'> <'import lib2\n'> <'print '> <Id.Right_DoubleQuote '"'> <'hi from zip'> <Id.Right_DoubleQuote '"'> <'\n'> ] ) ) ] do_fork: T ) (C {<pushd>} {<'_tmp/app'>}) (C {<zip>} {<-r>} {<'../app.zip'>} {<.>}) (C {<popd>}) ] ) ) (command.ShFunction name: test-zip body: (BraceGroup children:[(C {<python>} {<-S>} {<'_tmp/app.zip'>})]) ) (command.ShFunction name: strace-zip body: (BraceGroup children:[(C {<strace>} {<python>} {<-S>} {<'_tmp/app.zip'>})]) ) (C {(DQ ($ Id.VSub_At '$@'))}) ] )