(command.CommandList children: [ (C {<set>} {<-o>} {<nounset>}) (C {<set>} {<-o>} {<pipefail>}) (C {<set>} {<-o>} {<errexit>}) (C {<source>} {<'test/common.sh'>}) (command.ShFunction name: process-file body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'proj='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'abs_path='> ($ Id.VSub_Number '$2')}) (C {<local>} {<Id.Lit_VarLike 'rel_path='> ($ Id.VSub_Number '$3')}) (C {<local>} {<Id.Lit_VarLike 'raw_base='> <'_tmp/wild/raw/'> ($ Id.VSub_DollarName '$proj') <'/'> ($ Id.VSub_DollarName '$rel_path') } ) (C {<local>} {<Id.Lit_VarLike 'www_base='> <'_tmp/wild/www/'> ($ Id.VSub_DollarName '$proj') <'/'> ($ Id.VSub_DollarName '$rel_path') } ) (C {<mkdir>} {<-p>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {($ Id.VSub_DollarName '$raw_base')}) ) } ) (C {<mkdir>} {<-p>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {($ Id.VSub_DollarName '$www_base')}) ) } ) (C {<log>} { (DQ <'--- Processing '> ($ Id.VSub_DollarName '$proj') <' - '> ($ Id.VSub_DollarName '$rel_path') ) } ) (command.Simple words: [{<wc>} {($ Id.VSub_DollarName '$abs_path')}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name raw_base) <__wc.txt>} ) ] do_fork: T ) (C {<cp>} {($ Id.VSub_DollarName '$abs_path')} {(${ Id.VSub_Name www_base) <.txt>}) (C {<local>} {<Id.Lit_VarLike 'task_file='> (${ Id.VSub_Name raw_base) <__parse.task.txt>}) (C {<local>} {<Id.Lit_VarLike 'stderr_file='> (${ Id.VSub_Name raw_base) <__parse.stderr.txt>} ) (C {<local>} {<Id.Lit_VarLike 'out_file='> (${ Id.VSub_Name www_base) <__ast.html>}) (command.Simple words: [ {<run-task-with-status>} {($ Id.VSub_DollarName '$task_file')} {<'bin/osh'>} {<--ast-format>} {<abbrev-html>} {<-n>} {($ Id.VSub_DollarName '$abs_path')} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$out_file')} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName '$stderr_file')} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:task_file) op: assign_op.Equal rhs: {(${ Id.VSub_Name raw_base) <__osh2oil.task.txt>} spids: [215] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:stderr_file) op: assign_op.Equal rhs: {(${ Id.VSub_Name raw_base) <__osh2oil.stderr.txt>} spids: [222] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:out_file) op: assign_op.Equal rhs: {(${ Id.VSub_Name www_base) <__oil.txt>} spids: [229] ) ] ) (command.Simple words: [ {<run-task-with-status>} {($ Id.VSub_DollarName '$task_file')} {($ Id.VSub_DollarName '$OSH')} {<-n>} {<--fix>} {($ Id.VSub_DollarName '$abs_path')} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$out_file')} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName '$stderr_file')} ) ] do_fork: T ) ] ) ) (C {<readonly>} {<Id.Lit_VarLike 'NUM_TASKS='> <200>}) (C {<readonly>} {<Id.Lit_VarLike 'MANIFEST='> <'_tmp/wild/MANIFEST.txt'>}) (command.ShFunction name: parse-in-parallel body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'failed='> (SQ )}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<xargs>} {<-n>} {<3>} {<-P>} {($ Id.VSub_DollarName '$JOBS')} {<-->} {($ Id.VSub_Number '$0')} {<process-file>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [307] ) ] ) ] ) (C {<tree>} {<-L>} {<3>} {<'_tmp/wild'>}) ] ) ) (command.ShFunction name: parse-and-report body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'manifest_regex='> (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{}) ) } ) (command.TimeBlock pipeline: (BraceGroup children: [ (C {<'test/wild.sh'>} {<write-manifest>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$manifest_regex'))}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Pipeline children: [ (C {<egrep>} {<-->} {(DQ ($ Id.VSub_DollarName '$manifest_regex'))} {($ Id.VSub_DollarName '$MANIFEST')} ) (C {<parse-in-parallel>}) ] negated: F ) ] spids: [365 376] ) ] else_action: [ (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$MANIFEST')}) (C {<parse-in-parallel>}) ] negated: F ) ] ) (C {<make-report>}) ] ) ) ] ) ) (command.ShFunction name: wild-report body: (BraceGroup children: [ (command.Simple words: [{<'test/wild_report.py'>} {(DQ ($ Id.VSub_At '$@'))}] more_env: [ (env_pair name: PYTHONPATH val: {<Id.Lit_TildeLike '~'> <'/hg/json-template/python'>} spids: [425] ) ] do_fork: T ) ] ) ) (command.ShFunction name: _link body: (BraceGroup children:[(C {<ln>} {<-s>} {<-f>} {<-v>} {(DQ ($ Id.VSub_At '$@'))})]) ) (command.ShFunction name: make-report body: (BraceGroup children: [ (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$MANIFEST')}) (C {<wild-report>} {<summarize-dirs>}) ] negated: F ) (C {<_link>} (word.BracedTree parts: [ ($ Id.VSub_DollarName '$PWD') <'/web/osh-to-oil.'> (word_part.BracedTuple words:[{<html>} {<js>}]) ] ) {<'_tmp/wild/www'>} ) (C {<_link>} {($ Id.VSub_DollarName '$PWD') <'/web'>} {<_tmp>}) ] ) ) (command.ShFunction name: test-wild-report body: (BraceGroup children: [ (command.Pipeline children: [ (C {<egrep>} {<-->} {(SQ <'^oil|^perf-tools'>)} {($ Id.VSub_DollarName '$MANIFEST')}) (C {<wild-report>} {<summarize-dirs>}) ] negated: F ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<basename>} {($ Id.VSub_Number '$0')}) ) ) } {<Id.Lit_Equals '='>} {(SQ <wild-runner.sh>)} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {(DQ ($ Id.VSub_At '$@'))})] spids: [541 560] ) ] ) ] )