(command.CommandList
  children: [
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<nounset>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<pipefail>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<errexit>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <readonly>
      more_env: []
      words: [
        {<readonly>}
        {<Id.Lit_VarLike 'OIL_VERSION='> 
          (CommandSub
            left_token: <Id.Left_DollarParen '$('>
            child: 
              (command.Simple
                blame_tok: <head>
                more_env: []
                words: [{<head>} {<-n>} {<1>} {<oil-version.txt>}]
                redirects: []
                do_fork: T
              )
            right: <Id.Eof_RParen _>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <readonly>
      more_env: []
      words: [
        {<readonly>}
        {<Id.Lit_VarLike 'OSH_RELEASE_BINARY='> <'_tmp/oil-tar-test/oil-'> 
          ($ Id.VSub_DollarName OIL_VERSION) <'/_bin/osh'>
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <log>
      name: log
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_clean-tmp-dirs>
      name: _clean-tmp-dirs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [
                {<rm>}
                {<-r>}
                {<-f>}
                (word.BracedTree
                  parts: [
                    <'_tmp/'>
                    (word_part.BracedTuple
                      words: [{<spec>} {<wild>} {<unit>} {<gold>} {<osh2oil>}]
                    )
                  ]
                )
                (word.BracedTree
                  parts: [
                    <'_tmp/'>
                    (word_part.BracedTuple
                      words: [{<osh-parser>} {<osh-runtime>} {<vm-baseline>} {<ovm-build>} {<oheap>}]
                    )
                  ]
                )
                {<'_tmp/metrics'>}
                {<'_tmp/oil-tar-test'>}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_clean>
      name: _clean
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_clean-tmp-dirs>
              more_env: []
              words: [{<_clean-tmp-dirs>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-r>} {<-f>} {<_devbuild>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'build/actions.sh'>
              more_env: []
              words: [{<'build/actions.sh'>} {<clean-repo>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_dev-build>
      name: _dev-build
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <'build/dev.sh'>
              more_env: []
              words: [{<'build/dev.sh'>} {<all>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_release-build>
      name: _release-build
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <'build/prepare.sh'>
              more_env: []
              words: [{<'build/prepare.sh'>} {<configure>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'build/prepare.sh'>
              more_env: []
              words: [{<'build/prepare.sh'>} {<build-python>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <Id.VSub_Number '$0'>
              more_env: []
              words: [{($ Id.VSub_Number 0)} {<oil>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'build/test.sh'>
              more_env: []
              words: [{<'build/test.sh'>} {<oil-tar>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <ln>
              more_env: []
              words: [
                {<ln>}
                {<-s>}
                {<-f>}
                {<--no-target-directory>}
                {<-v>}
                {<oil.ovm>}
                {($ Id.VSub_DollarName OSH_RELEASE_BINARY)}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_test-release-build>
      name: _test-release-build
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <'test/alpine.sh'>
              more_env: []
              words: [{<'test/alpine.sh'>} {<copy-tar>} {(SQ )} {<oil>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'test/alpine.sh'>
              more_env: []
              words: [{<'test/alpine.sh'>} {<test-tar>} {(SQ )} {<oil>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'test/spec.sh'>
              more_env: []
              words: [{<'test/spec.sh'>} {<link-busybox-ash>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'test/spec.sh'>
              more_env: []
              words: [{<'test/spec.sh'>} {<smoke>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'test/osh2oil.sh'>
              more_env: []
              words: [{<'test/osh2oil.sh'>} {<run-for-release>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'test/gold.sh'>
              more_env: []
              words: [{<'test/gold.sh'>} {<run-for-release>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'test/spec.sh'>
              more_env: [
                (EnvPair
                  left: <Id.Lit_VarLike 'OSH_OVM='>
                  name: OSH_OVM
                  val: {($ Id.VSub_DollarName OSH_RELEASE_BINARY)}
                )
              ]
              words: [{<'test/spec.sh'>} {<all>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <build-and-test>
      name: build-and-test
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_clean>
              more_env: []
              words: [{<_clean>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <_dev-build>
              more_env: []
              words: [{<_dev-build>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'test/unit.sh'>
              more_env: []
              words: [{<'test/unit.sh'>} {<run-for-release>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <_release-build>
              more_env: []
              words: [{<_release-build>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <_test-release-build>
              more_env: []
              words: [{<_test-release-build>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_install>
      name: _install
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <'test/spec.sh'>
              more_env: []
              words: [{<'test/spec.sh'>} {<install-shells>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <sudo>
              more_env: []
              words: [{<sudo>} {<apt>} {<install>} {<python-dev>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <benchmark-build>
      name: benchmark-build
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_install>
              more_env: []
              words: [{<_install>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <_clean>
              more_env: []
              words: [{<_clean>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <_dev-build>
              more_env: []
              words: [{<_dev-build>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <_release-build>
              more_env: []
              words: [{<_release-build>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <benchmark-run>
      name: benchmark-run
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <'benchmarks/auto.sh'>
              more_env: [
                (EnvPair
                  left: <Id.Lit_VarLike 'OSH_OVM='>
                  name: OSH_OVM
                  val: {($ Id.VSub_DollarName OSH_RELEASE_BINARY)}
                )
              ]
              words: [{<'benchmarks/auto.sh'>} {<all>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <benchmark-run-on-1-machine>
      name: benchmark-run-on-1-machine
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <'benchmarks/oheap.sh'>
              more_env: [
                (EnvPair
                  left: <Id.Lit_VarLike 'OSH_OVM='>
                  name: OSH_OVM
                  val: {($ Id.VSub_DollarName OSH_RELEASE_BINARY)}
                )
              ]
              words: [{<'benchmarks/oheap.sh'>} {<measure>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_compressed-tarball>
      name: _compressed-tarball
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'name='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 1>
                    var_name: 1
                    suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<hello>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'version='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 2>
                    var_name: 2
                    suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<0.0.0>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'in='> <'_release/'> ($ Id.VSub_DollarName name) <.tar>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'out='> <'_release/'> ($ Id.VSub_DollarName name) <-> 
                  ($ Id.VSub_DollarName version) <.tar.gz>
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'build/actions.sh'>
              more_env: []
              words: [{<'build/actions.sh'>} {<write-release-date>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <make>
              more_env: []
              words: [{<make>} {($ Id.VSub_DollarName in)}]
              redirects: []
              do_fork: T
            )
            (command.TimeBlock
              keyword: <Id.KW_Time time>
              pipeline: 
                (command.Simple
                  blame_tok: <gzip>
                  more_env: []
                  words: [{<gzip>} {<-c>} {($ Id.VSub_DollarName in)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName out)}
                    )
                  ]
                  do_fork: T
                )
            )
            (command.Simple
              blame_tok: <ls>
              more_env: []
              words: [{<ls>} {<-l>} {($ Id.VSub_DollarName out)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'out2='> <'_release/'> ($ Id.VSub_DollarName name) <-> 
                  ($ Id.VSub_DollarName version) <.tar.xz>
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.TimeBlock
              keyword: <Id.KW_Time time>
              pipeline: 
                (command.Simple
                  blame_tok: <xz>
                  more_env: []
                  words: [{<xz>} {<-c>} {($ Id.VSub_DollarName in)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName out2)}
                    )
                  ]
                  do_fork: T
                )
            )
            (command.Simple
              blame_tok: <ls>
              more_env: []
              words: [{<ls>} {<-l>} {($ Id.VSub_DollarName out2)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <oil>
      name: oil
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_compressed-tarball>
              more_env: []
              words: [{<_compressed-tarball>} {<oil>} {($ Id.VSub_DollarName OIL_VERSION)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <hello>
      name: hello
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_compressed-tarball>
              more_env: []
              words: [
                {<_compressed-tarball>}
                {<hello>}
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <head>
                        more_env: []
                        words: [{<head>} {<-n>} {<1>} {<'build/testdata/hello-version.txt'>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <escape-segments>
      name: escape-segments
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <python>
              more_env: []
              words: [
                {<python>}
                {<-c>}
                {
                  (SQ <'\n'> <'import cgi, re, sys\n'> <'\n'> <'print re.sub(\n'> 
                    <'  r"\\x00(.*)\\x01", \n'> <'  lambda match: cgi.escape(match.group(1)),\n'> <'  sys.stdin.read())\n'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_git-changelog-body>
      name: _git-changelog-body
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'prev_branch='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'cur_branch='> ($ Id.VSub_Number 2)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'format='> 
                  (SQ <'<tr>\n'> <'    <td><a class="checksum"\n'> 
                    <'           href="https://github.com/oilshell/oil/commit/%H">%h</a>\n'> <'    </td>\n'> <'    <td class="date">%ad</td>\n'> <'    <td>%x00%an%x01</td>\n'> 
                    <'    <td class="subject">%x00%s%x01</td>\n'> <'  </tr>'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<log>}
                    {($ Id.VSub_DollarName prev_branch) <..> ($ Id.VSub_DollarName cur_branch)}
                    {<--reverse>}
                    {<--pretty> <Id.Lit_Equals '='> (DQ <'format:'> ($ Id.VSub_DollarName format))}
                    {<--date> <Id.Lit_Equals '='> <short>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <escape-segments>
                  more_env: []
                  words: [{<escape-segments>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_git-changelog-header>
      name: _git-changelog-header
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'prev_branch='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'cur_branch='> ($ Id.VSub_Number 2)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'<!DOCTYPE html>\n'>
                        <'<html>\n'>
                        <'  <head>\n'>
                        <'    <title>Commits Between '>
                        ($ Id.VSub_DollarName prev_branch)
                        <' and '>
                        ($ Id.VSub_DollarName cur_branch)
                        <'</title>\n'>
                        <'    <style>\n'>
                        <'      /* Make it centered and skinny for readability */\n'>
                        <'      body {\n'>
                        <'        margin: 0 auto;\n'>
                        <'        width: 60em;\n'>
                        <'      }\n'>
                        <'      table {\n'>
                        <'        width: 100%;\n'>
                        <'      }\n'>
                        <'      code {\n'>
                        <'        color: green;\n'>
                        <'      }\n'>
                        <'      .checksum {\n'>
                        <'        font-family: monospace;\n'>
                        <'      }\n'>
                        <'      .date {\n'>
                        <'        /*font-family: monospace;*/\n'>
                        <'      }\n'>
                        <'      .subject {\n'>
                        <'        font-family: monospace;\n'>
                        <'      }\n'>
                        <'\n'>
                        <'      /* Copied from oilshell.org bundle.css */\n'>
                        <'      .date {\n'>
                        <'        font-size: medium;\n'>
                        <'        color: #555;\n'>
                        <'        padding-left: 1em;\n'>
                        <'      }\n'>
                        <'    </style>\n'>
                        <'  </head>\n'>
                        <'  <body>\n'>
                        <'    <h3>Commits Between Branches <code>'>
                        ($ Id.VSub_DollarName prev_branch)
                        <'</code> and\n'>
                        <'       <code>'>
                        ($ Id.VSub_DollarName cur_branch)
                        <'</code></h3>\n'>
                        <'    <table>\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_git-changelog>
      name: _git-changelog
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_git-changelog-header>
              more_env: []
              words: [{<_git-changelog-header>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <_git-changelog-body>
              more_env: []
              words: [{<_git-changelog-body>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'  </table>\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <_html-footer>
              more_env: []
              words: [{<_html-footer>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <git-changelog-0.1>
      name: git-changelog-0.1
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'version='> (SQ <0.1.0>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <_git-changelog>
              more_env: []
              words: [{<_git-changelog>} {<'release/0.0.0'>} {<'release/0.1.0'>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: 
                    {<'../oilshell.org__deploy/release/'> ($ Id.VSub_DollarName version) 
                      <'/changelog.html'>
                    }
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <git-changelog-0.2.alpha1>
      name: git-changelog-0.2.alpha1
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_git-changelog>
              more_env: []
              words: [{<_git-changelog>} {<'release/0.1.0'>} {<'release/0.2.alpha1'>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_release/VERSION/changelog.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <git-changelog-0.2.0>
      name: git-changelog-0.2.0
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_git-changelog>
              more_env: []
              words: [{<_git-changelog>} {<'release/0.1.0'>} {<'release/0.2.0'>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_release/VERSION/changelog.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <git-changelog-0.3.alpha1>
      name: git-changelog-0.3.alpha1
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_git-changelog>
              more_env: []
              words: [{<_git-changelog>} {<'release/0.2.0'>} {<'release/0.3.alpha1'>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_release/VERSION/changelog.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <git-changelog-0.3.0>
      name: git-changelog-0.3.0
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_git-changelog>
              more_env: []
              words: [{<_git-changelog>} {<'release/0.2.0'>} {<'release/0.3.0'>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_release/VERSION/changelog.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <git-changelog-0.4.0>
      name: git-changelog-0.4.0
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_git-changelog>
              more_env: []
              words: [{<_git-changelog>} {<'release/0.3.0'>} {<'release/0.4.0'>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_release/VERSION/changelog.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <git-changelog-0.5.alpha1>
      name: git-changelog-0.5.alpha1
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_git-changelog>
              more_env: []
              words: [{<_git-changelog>} {<'release/0.4.0'>} {<'release/0.5.alpha1'>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_release/VERSION/changelog.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <git-changelog-0.5.alpha2>
      name: git-changelog-0.5.alpha2
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_git-changelog>
              more_env: []
              words: [{<_git-changelog>} {<'release/0.5.alpha1'>} {<'release/0.5.alpha2'>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_release/VERSION/changelog.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <git-changelog-0.5.alpha3>
      name: git-changelog-0.5.alpha3
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_git-changelog>
              more_env: []
              words: [{<_git-changelog>} {<'release/0.5.alpha2'>} {<'release/0.5.alpha3'>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_release/VERSION/changelog.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <html-redirect>
      name: html-redirect
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'url='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'<!DOCTYPE html>\n'>
                        <'<html>\n'>
                        <'  <head>\n'>
                        <'    <meta http-equiv='>
                        <Id.Right_DoubleQuote '"'>
                        <refresh>
                        <Id.Right_DoubleQuote '"'>
                        <' content='>
                        <Id.Right_DoubleQuote '"'>
                        <'0; url='>
                        ($ Id.VSub_DollarName url)
                        <Id.Right_DoubleQuote '"'>
                        <' />\n'>
                        <'  </head>\n'>
                        <'  <body>\n'>
                        <'    <p>Redirect to<a href='>
                        <Id.Right_DoubleQuote '"'>
                        ($ Id.VSub_DollarName url)
                        <Id.Right_DoubleQuote '"'>
                        <'>'>
                        ($ Id.VSub_DollarName url)
                        <'</a></p>\n'>
                        <'  </body>\n'>
                        <'</html>  \n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <no-announcement>
      name: no-announcement
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'<!DOCTYPE html>\n'>
                        <'<html>\n'>
                        <'  <head>\n'>
                        <'  </head>\n'>
                        <'  <body>\n'>
                        <'    <p>No announcement for this release.</p>\n'>
                        <'  </body>\n'>
                        <'</html>  \n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <write-no-announcement>
      name: write-no-announcement
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <no-announcement>
              more_env: []
              words: [{<no-announcement>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_release/VERSION/announcement.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <announcement-0.0>
      name: announcement-0.0
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <html-redirect>
              more_env: []
              words: [{<html-redirect>} {(SQ <'/blog/2017/07/23.html'>)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'../oilshell.org__deploy/release/0.0.0/announcement.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <announcement-0.1>
      name: announcement-0.1
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'version='> (SQ <0.1.0>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <html-redirect>
              more_env: []
              words: [{<html-redirect>} {(SQ <'/blog/2017/09/09.html'>)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: 
                    {<'../oilshell.org__deploy/release/'> ($ Id.VSub_DollarName version) 
                      <'/announcement.html'>
                    }
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <announcement-0.2>
      name: announcement-0.2
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <html-redirect>
              more_env: []
              words: [{<html-redirect>} {(SQ <'/blog/2017/11/10.html'>)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_release/VERSION/announcement.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <announcement-0.3>
      name: announcement-0.3
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <html-redirect>
              more_env: []
              words: [{<html-redirect>} {(SQ <'/blog/2017/12/22.html'>)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_release/VERSION/announcement.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <announcement-0.4>
      name: announcement-0.4
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <html-redirect>
              more_env: []
              words: [{<html-redirect>} {(SQ <'/blog/2018/02/03.html'>)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_release/VERSION/announcement.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <announcement-0.5.alpha3>
      name: announcement-0.5.alpha3
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <html-redirect>
              more_env: []
              words: [{<html-redirect>} {(SQ <'/blog/2018/04/30.html'>)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_release/VERSION/announcement.html'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_link>
      name: _link
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <ln>
              more_env: []
              words: [{<ln>} {<-s>} {<-f>} {<-v>} {<--no-target-directory>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <compress-txt>
      name: compress-txt
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'name='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <log>
              more_env: []
              words: [{<log>} {(DQ <'--- test/'> ($ Id.VSub_DollarName name))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'out='> 
                  (DQ ($ Id.VSub_DollarName root) <'/test/'> ($ Id.VSub_DollarName name) <.wwz>)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <pushd>
              more_env: []
              words: [{<pushd>} {<'_tmp/'> ($ Id.VSub_DollarName name)}]
              redirects: []
              do_fork: T
            )
            (command.TimeBlock
              keyword: <Id.KW_Time time>
              pipeline: 
                (command.Simple
                  blame_tok: <zip>
                  more_env: []
                  words: [{<zip>} {<-r>} {<-q>} {($ Id.VSub_DollarName out)} {<.>}]
                  redirects: []
                  do_fork: T
                )
            )
            (command.Simple
              blame_tok: <popd>
              more_env: []
              words: [{<popd>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <compress>
      name: compress
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'root='> ($ Id.VSub_DollarName PWD) <'/_release/VERSION/'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <compress-txt>
              more_env: []
              words: [{<compress-txt>} {<osh2oil>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <compress-txt>
              more_env: []
              words: [{<compress-txt>} {<gold>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <log>
              more_env: []
              words: [{<log>} {(DQ <'--- test/unit'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'out='> (DQ ($ Id.VSub_DollarName root) <'/test/unit.wwz'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <pushd>
              more_env: []
              words: [{<pushd>} {<'_tmp/unit'>}]
              redirects: []
              do_fork: T
            )
            (command.TimeBlock
              keyword: <Id.KW_Time time>
              pipeline: 
                (command.Simple
                  blame_tok: <zip>
                  more_env: []
                  words: [{<zip>} {<-r>} {<-q>} {($ Id.VSub_DollarName out)} {<.>}]
                  redirects: []
                  do_fork: T
                )
            )
            (command.Simple
              blame_tok: <popd>
              more_env: []
              words: [{<popd>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <log>
              more_env: []
              words: [{<log>} {(DQ <'--- test/spec'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'out='> (DQ ($ Id.VSub_DollarName root) <'/test/spec.wwz'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <pushd>
              more_env: []
              words: [{<pushd>} {<'_tmp/spec'>}]
              redirects: []
              do_fork: T
            )
            (command.TimeBlock
              keyword: <Id.KW_Time time>
              pipeline: 
                (command.Simple
                  blame_tok: <zip>
                  more_env: []
                  words: [{<zip>} {<-r>} {<-q>} {($ Id.VSub_DollarName out)} {<.>}]
                  redirects: []
                  do_fork: T
                )
            )
            (command.Simple
              blame_tok: <popd>
              more_env: []
              words: [{<popd>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <log>
              more_env: []
              words: [{<log>} {(DQ <'--- test/wild'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'out='> (DQ ($ Id.VSub_DollarName root) <'/test/wild.wwz'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <pushd>
              more_env: []
              words: [{<pushd>} {<'_tmp/wild/www'>}]
              redirects: []
              do_fork: T
            )
            (command.TimeBlock
              keyword: <Id.KW_Time time>
              pipeline: 
                (command.Simple
                  blame_tok: <zip>
                  more_env: []
                  words: [{<zip>} {<-r>} {<-q>} {($ Id.VSub_DollarName out)} {<.>}]
                  redirects: []
                  do_fork: T
                )
            )
            (command.Simple
              blame_tok: <popd>
              more_env: []
              words: [{<popd>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <log>
              more_env: []
              words: [{<log>} {(DQ <'--- metrics'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'out='> (DQ ($ Id.VSub_DollarName root) <'/metrics.wwz'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <pushd>
              more_env: []
              words: [{<pushd>} {<'_tmp/metrics'>}]
              redirects: []
              do_fork: T
            )
            (command.TimeBlock
              keyword: <Id.KW_Time time>
              pipeline: 
                (command.Simple
                  blame_tok: <zip>
                  more_env: []
                  words: [{<zip>} {<-r>} {<-q>} {($ Id.VSub_DollarName out)} {<.>}]
                  redirects: []
                  do_fork: T
                )
            )
            (command.Simple
              blame_tok: <popd>
              more_env: []
              words: [{<popd>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <compress-benchmarks>
              more_env: []
              words: [{<compress-benchmarks>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <tree>
              more_env: []
              words: [{<tree>} {<'_release/VERSION'>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <compress-benchmarks>
      name: compress-benchmarks
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'root='> ($ Id.VSub_DollarName PWD) <'/_release/VERSION/'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName root)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <log>
              more_env: []
              words: [{<log>} {(DQ <'--- benchmarks'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'out='> (DQ ($ Id.VSub_DollarName root) <'/benchmarks.wwz'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <pushd>
              more_env: []
              words: [{<pushd>} {<_tmp>}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <find>
                  more_env: []
                  words: [
                    {<find>}
                    (word.BracedTree
                      parts: [
                        <'osh-parser/'>
                        (word_part.BracedTuple
                          words: [{<stage1>} {<stage2>} {<index.html>}]
                        )
                      ]
                    )
                    (word.BracedTree
                      parts: [
                        <'osh-runtime/'>
                        (word_part.BracedTuple
                          words: [{<stage1>} {<stage2>} {<index.html>}]
                        )
                      ]
                    )
                    (word.BracedTree
                      parts: [
                        <'vm-baseline/'>
                        (word_part.BracedTuple
                          words: [{<stage1>} {<stage2>} {<index.html>}]
                        )
                      ]
                    )
                    (word.BracedTree
                      parts: [
                        <'ovm-build/'>
                        (word_part.BracedTuple
                          words: [{<stage1>} {<stage2>} {<index.html>}]
                        )
                      ]
                    )
                    (word.BracedTree
                      parts: [
                        <'oheap/'>
                        (word_part.BracedTuple
                          words: [{<stage1>} {<stage2>} {<index.html>}]
                        )
                      ]
                    )
                    {<-type>}
                    {<f>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <xargs>
                  more_env: []
                  words: [{<xargs>} {<--verbose>} {<-->} {<zip>} {<-q>} {($ Id.VSub_DollarName out)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <popd>
              more_env: []
              words: [{<popd>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <line-counts>
      name: line-counts
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'out='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName out)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'build/metrics.sh'>
              more_env: []
              words: [{<'build/metrics.sh'>} {<linecount-pydeps>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName out) <'/pydeps.txt'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <'build/metrics.sh'>
              more_env: []
              words: [{<'build/metrics.sh'>} {<linecount-nativedeps>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName out) <'/nativedeps.txt'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <'scripts/count.sh'>
              more_env: []
              words: [{<'scripts/count.sh'>} {<all>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName out) <'/src.txt'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <'scripts/count.sh'>
              more_env: []
              words: [{<'scripts/count.sh'>} {<parser>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName out) <'/parser.txt'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <'scripts/count.sh'>
              more_env: []
              words: [{<'scripts/count.sh'>} {<runtime>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName out) <'/runtime.txt'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <'scripts/count.sh'>
              more_env: []
              words: [{<'scripts/count.sh'>} {<oil-osh-cloc>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName out) <'/oil-osh-cloc.txt'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <metrics>
      name: metrics
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'out='> <'_tmp/metrics'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName out)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'build/metrics.sh'>
              more_env: []
              words: [{<'build/metrics.sh'>} {<pyc-bytes>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName out) <'/pyc-bytes.txt'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <line-counts>
              more_env: []
              words: [{<line-counts>} {($ Id.VSub_DollarName out) <'/line-counts'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <tree>
              more_env: []
              words: [{<tree>} {($ Id.VSub_DollarName out)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_copy-path>
      name: _copy-path
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'src='> ($ Id.VSub_Number 1)}
                {<Id.Lit_VarLike 'dest='> ($ Id.VSub_Number 2)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [
                {<mkdir>}
                {<-p>}
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <dirname>
                        more_env: []
                        words: [{<dirname>} {($ Id.VSub_DollarName dest)}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cp>
              more_env: []
              words: [{<cp>} {<-v>} {($ Id.VSub_DollarName src)} {($ Id.VSub_DollarName dest)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <copy-web>
      name: copy-web
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <find>
                  more_env: []
                  words: [
                    {<find>}
                    {<web>}
                    {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('> ch:'(')}
                    {<-name>}
                    {<_tmp>}
                    {<-a>}
                    {<-prune>}
                    {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'> ch:')')}
                    {<-o>}
                    {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('> ch:'(')}
                    {<-name>}
                    {(SQ <'*.css'>)}
                    {<-o>}
                    {<-name>}
                    {(SQ <'*.js'>)}
                    {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'> ch:')')}
                    {<-a>}
                    {<-printf>}
                    {(SQ <'%p _release/VERSION/%p\\n'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <xargs>
                  more_env: []
                  words: [{<xargs>} {<-n>} {<2>} {<-->} {($ Id.VSub_Number 0)} {<_copy-path>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <build-tree>
      name: build-tree
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'root='> <'_release/VERSION'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [
                {<mkdir>}
                {<-p>}
                (word.BracedTree
                  parts: [
                    ($ Id.VSub_DollarName root)
                    <'/'>
                    (word_part.BracedTuple words:[{<doc>} {<test>}])
                  ]
                )
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cp>
              more_env: []
              words: [
                {<cp>}
                {<-v>}
                {<'_build/release-date.txt'>}
                {<oil-version.txt>}
                {($ Id.VSub_DollarName root)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'build/doc.sh'>
              more_env: []
              words: [{<'build/doc.sh'>} {<osh-quick-ref>} {<'_release/VERSION'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'build/doc.sh'>
              more_env: []
              words: [{<'build/doc.sh'>} {<install>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <'build/doc.sh'>
              more_env: []
              words: [{<'build/doc.sh'>} {<release-index>} {($ Id.VSub_DollarName root) <'/index.html'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <copy-web>
              more_env: []
              words: [{<copy-web>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <tree>
              more_env: []
              words: [{<tree>} {($ Id.VSub_DollarName root)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <deploy-doc>
      name: deploy-doc
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'deploy_repo='> (SQ <'../oilshell.org__deploy'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'release_root_dir='> 
                  (DQ ($ Id.VSub_DollarName deploy_repo) <'/release'>)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'release_dir='> 
                  (DQ ($ Id.VSub_DollarName release_root_dir) <'/'> ($ Id.VSub_DollarName OIL_VERSION))
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cp>
              more_env: []
              words: [
                {<cp>}
                {<-v>}
                {<-r>}
                {<--force>}
                {<--no-target-directory>}
                {<'_release/VERSION/'>}
                {($ Id.VSub_DollarName release_dir) <'/'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <html-index>
              more_env: []
              words: [{<html-index>} {($ Id.VSub_DollarName release_root_dir)} {<'_tmp/releases.html'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cp>
              more_env: []
              words: [{<cp>} {<-v>} {<'_tmp/releases.html'>} {($ Id.VSub_DollarName deploy_repo)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <tree>
              more_env: []
              words: [{<tree>} {<-L>} {<3>} {($ Id.VSub_DollarName release_root_dir)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <ls>
              more_env: []
              words: [{<ls>} {<-l>} {($ Id.VSub_DollarName deploy_repo) <'/releases.html'>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <deploy-tar>
      name: deploy-tar
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'download_dir='> (SQ <'../oilshell.org__deploy/download/'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {($ Id.VSub_DollarName download_dir)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cp>
              more_env: []
              words: [
                {<cp>}
                {<-v>}
                {<'_release/oil-'> ($ Id.VSub_DollarName OIL_VERSION) <.tar.> <Id.Lit_Star '*'>}
                {($ Id.VSub_DollarName download_dir)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <ls>
              more_env: []
              words: [{<ls>} {<-l>} {($ Id.VSub_DollarName download_dir)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_release-files-html>
      name: _release-files-html
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'version='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(SQ <'<table class="file-table">'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (SQ 
                    <
'<tr><thead> <td>File</td> <td>Size</td> <td>SHA256 Checksum</td> </thead></tr>'
                    >
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [name]
              iterable: 
                (for_iter.Words
                  words: [
                    (word.BracedTree
                      parts: [
                        <oil->
                        ($ Id.VSub_DollarName version)
                        <.tar.>
                        (word_part.BracedTuple words:[{<xz>} {<gz>}])
                      ]
                    )
                  ]
                )
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'url='> (DQ <'download/'> ($ Id.VSub_DollarName name))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'path='> <'../oilshell.org__deploy/download/'> 
                          ($ Id.VSub_DollarName name)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'checksum='> 
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    blame_tok: <sha256sum>
                                    more_env: []
                                    words: [{<sha256sum>} {($ Id.VSub_DollarName path)}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <awk>
                                    more_env: []
                                    words: [{<awk>} {(SQ <'{print $1}'>)}]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _>]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'size='> 
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <stat>
                                more_env: []
                                words: [{<stat>} {<--format>} {(SQ <'%s'>)} {($ Id.VSub_DollarName path)}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(SQ <'<tr> <td class="filename"><a href="'>) ($ Id.VSub_DollarName url) 
                          (SQ <'">'>) ($ Id.VSub_DollarName name) (SQ <'</a></td>\n'> <'               <td class="size">'>) 
                          ($ Id.VSub_DollarName size) (SQ <'</td>\n'> <'               <td class="checksum">'>) ($ Id.VSub_DollarName checksum) 
                          (SQ <'</td>\n'> <'         </tr>'>)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(SQ <'</table>'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_html-index>
      name: _html-index
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'release_root_dir='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [entry]
              iterable: 
                (for_iter.Words
                  words: [{($ Id.VSub_DollarName release_root_dir) <'/'> <Id.Lit_Star '*'>}]
                )
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Pipeline
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [{<test>} {<-d>} {($ Id.VSub_DollarName entry)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)]
                          spids: [2801 2812]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [{<local>} {<Id.Lit_VarLike 'dir='> ($ Id.VSub_DollarName entry)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'version='> 
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <head>
                                more_env: []
                                words: [
                                  {<head>}
                                  {<-n>}
                                  {<1>}
                                  {($ Id.VSub_DollarName dir) <'/oil-version.txt'>}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'release_date='> 
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <head>
                                more_env: []
                                words: [
                                  {<head>}
                                  {<-n>}
                                  {<1>}
                                  {($ Id.VSub_DollarName dir) <'/release-date.txt'>}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <log>
                      more_env: []
                      words: [{<log>} {(DQ <'-- '> ($ Id.VSub_DollarName dir))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <log>
                      more_env: []
                      words: [{<log>} {(DQ <'Version: '> ($ Id.VSub_DollarName version))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <log>
                      more_env: []
                      words: [{<log>} {(DQ <'Release Date: '> ($ Id.VSub_DollarName release_date))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <log>
                      more_env: []
                      words: [{<log>} {(DQ )}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ ($ Id.VSub_DollarName release_date) <' '> ($ Id.VSub_DollarName version))
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_tmp/release-meta.txt'>}
                )
              ]
            )
            (command.Simple
              blame_tok: <sort>
              more_env: []
              words: [{<sort>} {<-r>} {<'_tmp/release-meta.txt'>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'_tmp/sorted-releases.txt'>}
                )
              ]
              do_fork: T
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<date>} {<Id.Lit_Underscore _>} {<version>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <log>
                      more_env: []
                      words: [{<log>} {(DQ <'Release Date: '> ($ Id.VSub_DollarName date))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <log>
                      more_env: []
                      words: [{<log>} {(DQ <'Version: '> ($ Id.VSub_DollarName version))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(SQ <'<a name="'>) ($ Id.VSub_DollarName version) (SQ <'"></a>'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'<h2>Version '> ($ Id.VSub_DollarName version) <'</h2>'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'<p class='>) <date> (DQ <'>'> ($ Id.VSub_DollarName date) <'</p>'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(SQ <'<p>                 <a href="release/'>) 
                          ($ Id.VSub_DollarName version) 
                          (SQ <'/announcement.html">Release Announcement</a>\n'> 
                            <'              &nbsp; | &nbsp; <a href="release/'>
                          ) ($ Id.VSub_DollarName version) 
                          (SQ <'/doc/INSTALL.html">INSTALL</a>\n'> 
                            <'              &nbsp; | &nbsp; <a href="release/'>
                          ) ($ Id.VSub_DollarName version) (SQ <'/">Docs and Details</a>\n'> <'          </p>'>)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <_release-files-html>
                      more_env: []
                      words: [{<_release-files-html>} {($ Id.VSub_DollarName version)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {<'_tmp/sorted-releases.txt'>}
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_releases-html-header>
      name: _releases-html-header
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'<!DOCTYPE html>\n'>
                        <'<html>\n'>
                        <'  <head>\n'>
                        <'    <title>Oil Releases</title>\n'>
                        <'    <style>\n'>
                        <'      /* Make it centered and skinny for readability */\n'>
                        <'      body {\n'>
                        <'        margin: 0 auto;\n'>
                        <'        width: 60em;\n'>
                        <'      }\n'>
                        <'      h1 {\n'>
                        <'        text-align: center;\n'>
                        <'      }\n'>
                        <'      thead {\n'>
                        <'        font-weight: bold;\n'>
                        <'      }\n'>
                        <'      /* Style for checksum, file size, etc. */\n'>
                        <'\n'>
                        <'      .file-table {\n'>
                        <'        width: 100%;\n'>
                        <'      }\n'>
                        <'\n'>
                        <'      .filename {\n'>
                        <'        font-family: monospace;\n'>
                        <'      }\n'>
                        <'\n'>
                        <'      .size {\n'>
                        <'      }\n'>
                        <'      .checksum {\n'>
                        <'        font-family: monospace;\n'>
                        <'        color: #555;\n'>
                        <'      }\n'>
                        <'\n'>
                        <'      /* Copied from oilshell.org bundle.css */\n'>
                        <'      .date {\n'>
                        <'        font-size: medium;\n'>
                        <'        color: #555;\n'>
                        <'        padding-left: 1em;\n'>
                        <'      }\n'>
                        <'      #home-link {\n'>
                        <'        text-align: right;\n'>
                        <'      }\n'>
                        <'    </style>\n'>
                        <'  </head>\n'>
                        <'  <body>\n'>
                        <'    <p id='>
                        <Id.Right_DoubleQuote '"'>
                        <home-link>
                        <Id.Right_DoubleQuote '"'>
                        <'>\n'>
                        <'      <a href='>
                        <Id.Right_DoubleQuote '"'>
                        <'/'>
                        <Id.Right_DoubleQuote '"'>
                        <'>oilshell.org</a>\n'>
                        <'    </p>\n'>
                        <'    <h1>Oil Releases</h1>\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_html-footer>
      name: _html-footer
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [<'  </body>\n'> <'</html>\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <html-index>
      name: html-index
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'release_root_dir='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'out='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 2>
                    var_name: 2
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonHyphen _>
                        arg_word: {<_tmp> <Id.Lit_Slash '/'> <releases.html>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (command.Simple
                  blame_tok: <_releases-html-header>
                  more_env: []
                  words: [{<_releases-html-header>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <_html-index>
                  more_env: []
                  words: [{<_html-index>} {($ Id.VSub_DollarName release_root_dir)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <_html-footer>
                  more_env: []
                  words: [{<_html-footer>}]
                  redirects: []
                  do_fork: T
                )
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName out)}
                )
              ]
              right: <Id.Lit_RBrace '}'>
            )
            (command.Simple
              blame_tok: <ls>
              more_env: []
              words: [{<ls>} {<-l>} {($ Id.VSub_DollarName out)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <Id.Left_DoubleQuote '"'>
      more_env: []
      words: [{(DQ ($ Id.VSub_At '@'))}]
      redirects: []
      do_fork: T
    )
  ]
)