(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (C {(source)} {(test/common.sh)})
    (FuncDef
      name: process-file
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:proj)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [46]
                )
              ]
              spids: [44]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:abs_path)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [52]
                )
              ]
              spids: [50]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:rel_path)
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [58]
                )
              ]
              spids: [56]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:raw_base)
                  op: Equal
                  rhs: {(_tmp/wild/raw/) ($ VSub_Name '$proj') (/) ($ VSub_Name '$rel_path')}
                  spids: [65]
                )
              ]
              spids: [63]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:www_base)
                  op: Equal
                  rhs: {(_tmp/wild/www/) ($ VSub_Name '$proj') (/) ($ VSub_Name '$rel_path')}
                  spids: [74]
                )
              ]
              spids: [72]
            )
            (C {(mkdir)} {(-p)} 
              {
                (CommandSubPart
                  command_list: (CommandList children:[(C {(dirname)} {($ VSub_Name '$raw_base')})])
                  left_token: <Left_CommandSub '$('>
                  spids: [85 89]
                )
              }
            )
            (C {(mkdir)} {(-p)} 
              {
                (CommandSubPart
                  command_list: (CommandList children:[(C {(dirname)} {($ VSub_Name '$www_base')})])
                  left_token: <Left_CommandSub '$('>
                  spids: [96 100]
                )
              }
            )
            (C {(log)} 
              {(DQ ('--- Processing ') ($ VSub_Name '$proj') (' - ') ($ VSub_Name '$rel_path'))}
            )
            (SimpleCommand
              words: [{(wc)} {($ VSub_Name '$abs_path')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(${ VSub_Name raw_base) (__wc.txt)}
                  spids: [127]
                )
              ]
            )
            (C {(cp)} {($ VSub_Name '$abs_path')} {(${ VSub_Name www_base) (.txt)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:task_file)
                  op: Equal
                  rhs: {(${ VSub_Name raw_base) (__parse.task.txt)}
                  spids: [157]
                )
              ]
              spids: [155]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:stderr_file)
                  op: Equal
                  rhs: {(${ VSub_Name raw_base) (__parse.stderr.txt)}
                  spids: [166]
                )
              ]
              spids: [164]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out_file)
                  op: Equal
                  rhs: {(${ VSub_Name www_base) (__ast.html)}
                  spids: [175]
                )
              ]
              spids: [173]
            )
            (SimpleCommand
              words: [
                {(run-task-with-status)}
                {($ VSub_Name '$task_file')}
                {(bin/osh)}
                {(--ast-format)}
                {(abbrev-html)}
                {(-n)}
                {($ VSub_Name '$abs_path')}
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$out_file')}
                  spids: [201]
                )
                (Redir
                  op_id: Redir_Great
                  fd: 2
                  arg_word: {($ VSub_Name '$stderr_file')}
                  spids: [205]
                )
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:task_file)
                  op: Equal
                  rhs: {(${ VSub_Name raw_base) (__osh2oil.task.txt)}
                  spids: [215]
                )
              ]
              spids: [215]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:stderr_file)
                  op: Equal
                  rhs: {(${ VSub_Name raw_base) (__osh2oil.stderr.txt)}
                  spids: [222]
                )
              ]
              spids: [222]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out_file)
                  op: Equal
                  rhs: {(${ VSub_Name www_base) (__oil.txt)}
                  spids: [229]
                )
              ]
              spids: [229]
            )
            (SimpleCommand
              words: [
                {(run-task-with-status)}
                {($ VSub_Name '$task_file')}
                {(bin/osh)}
                {(-n)}
                {(--fix)}
                {($ VSub_Name '$abs_path')}
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$out_file')}
                  spids: [253]
                )
                (Redir
                  op_id: Redir_Great
                  fd: 2
                  arg_word: {($ VSub_Name '$stderr_file')}
                  spids: [257]
                )
              ]
            )
          ]
          spids: [41]
        )
      spids: [37 40]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:NUM_TASKS) op:Equal rhs:{(200)} spids:[266])]
      spids: [264]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:MANIFEST)
          op: Equal
          rhs: {(_tmp/wild/MANIFEST.txt)}
          spids: [271]
        )
      ]
      spids: [269]
    )
    (FuncDef
      name: parse-in-parallel
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:failed) op:Equal rhs:{(SQ )} spids:[284])]
              spids: [282]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(xargs)} {(-n)} {(3)} {(-P)} {($ VSub_Name '$JOBS')} {(--)} {($ VSub_Number '$0')} 
                  {(process-file)}
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:failed) op:Equal rhs:{(1)} spids:[307])]
                  spids: [307]
                )
              ]
            )
            (C {(tree)} {(-L)} {(3)} {(_tmp/wild)})
          ]
          spids: [279]
        )
      spids: [275 278]
    )
    (FuncDef
      name: parse-and-report
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:manifest_regex)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{})
                        spids: [344 347]
                      )
                    }
                  spids: [343]
                )
              ]
              spids: [341]
            )
            (TimeBlock
              pipeline: 
                (BraceGroup
                  children: [
                    (C {(test/wild.sh)} {(write-manifest)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(test)} {(-n)} {(DQ ($ VSub_Name '$manifest_regex'))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Pipeline
                              children: [
                                (C {(egrep)} {(--)} {(DQ ($ VSub_Name '$manifest_regex'))} 
                                  {($ VSub_Name '$MANIFEST')}
                                )
                                (C {(parse-in-parallel)})
                              ]
                              negated: F
                            )
                          ]
                          spids: [16777215 376]
                        )
                      ]
                      else_action: [
                        (Pipeline
                          children: [(C {(cat)} {($ VSub_Name '$MANIFEST')}) (C {(parse-in-parallel)})]
                          negated: F
                        )
                      ]
                      spids: [394 406]
                    )
                    (C {(make-report)})
                  ]
                  spids: [356]
                )
            )
          ]
          spids: [338]
        )
      spids: [334 337]
    )
    (FuncDef
      name: wild-report
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(test/wild_report.py)} {(DQ ($ VSub_At '$@'))}]
              more_env: [
                (env_pair
                  name: PYTHONPATH
                  val: {(TildeSubPart prefix:'') (/hg/json-template/python)}
                  spids: [425]
                )
              ]
            )
          ]
          spids: [422]
        )
      spids: [418 421]
    )
    (FuncDef
      name: _link
      body: 
        (BraceGroup
          children: [(C {(ln)} {(-s)} {(-f)} {(-v)} {(DQ ($ VSub_At '$@'))})]
          spids: [442]
        )
      spids: [438 441]
    )
    (FuncDef
      name: make-report
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [(C {(cat)} {($ VSub_Name '$MANIFEST')}) (C {(wild-report)} {(summarize-dirs)})]
              negated: F
            )
            (C {(_link)} 
              (BracedWordTree
                parts: [($ VSub_Name '$PWD') (/web/osh-to-oil.) (BracedAltPart words:[{(html)} {(js)}])]
              ) {(_tmp/wild/www)}
            )
            (C {(_link)} {($ VSub_Name '$PWD') (/web)} {(_tmp)})
          ]
          spids: [464]
        )
      spids: [460 463]
    )
    (FuncDef
      name: test-wild-report
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(egrep)} {(--)} {(SQ <'^oil|^perf-tools'>)} {($ VSub_Name '$MANIFEST')})
                (C {(wild-report)} {(summarize-dirs)})
              ]
              negated: F
            )
          ]
          spids: [519]
        )
      spids: [515 518]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(test)} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(basename)} {($ VSub_Number '$0')})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [546 550]
                      )
                    )
                  } {(Lit_Other '=')} {(SQ <wild-runner.sh>)}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(DQ ($ VSub_At '$@'))})]
          spids: [16777215 560]
        )
      ]
      spids: [16777215 567]
    )
  ]
)