(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:OIL_VERSION spids:[107])
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(head)} {(-n)} {(1)} {(oil-version.txt)})])
                left_token: <Left_CommandSub '$('>
                spids: [108 116]
              )
            }
          spids: [107]
        )
      ]
      spids: [105]
    )
    (C {(export)} {(OIL_VERSION)})
    (FuncDef
      name: log
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)} {(DQ ($ VSub_At '$@'))}]
              redirects: [(Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})]
            )
          ]
          spids: [130]
        )
      spids: [126 129]
    )
    (FuncDef
      name: _build-timestamp
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(SQ <'<hr/>'>)})
            (C {(echo)} 
              {
                (DQ ('<i>Generated on ') 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(date)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [163 165]
                  ) ('</i>')
                )
              }
            )
          ]
          spids: [149]
        )
      spids: [145 148]
    )
    (FuncDef
      name: _quick-ref
      body: (BraceGroup children:[(C {(build/quick_ref.py)} {(DQ ($ VSub_At '$@'))})] spids:[198])
      spids: [194 197]
    )
    (FuncDef
      name: x-quick-ref
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:prog spids:[219])
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [219]
                )
              ]
              spids: [217]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out_dir spids:[225])
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [225]
                )
              ]
              spids: [223]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:html_out spids:[232])
                  op: Equal
                  rhs: {($ VSub_Name '$out_dir') (/doc/) ($ VSub_Name '$prog') (-quick-ref.html)}
                  spids: [232]
                )
              ]
              spids: [230]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:text_out_dir spids:[241])
                  op: Equal
                  rhs: {(_devbuild/) ($ VSub_Name '$prog') (-quick-ref)}
                  spids: [241]
                )
              ]
              spids: [239]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:py_out spids:[249])
                  op: Equal
                  rhs: {(_devbuild/gen/) (${ VSub_Name prog) (_help.py)}
                  spids: [249]
                )
              ]
              spids: [247]
            )
            (C {(mkdir)} {(-p)} {(_build/doc)} {($ VSub_Name '$text_out_dir')})
            (BraceGroup
              children: [
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (HereDoc
                      op: <Redir_DLess '<<'>
                      fd: 16777215
                      here_begin: {(EOF)}
                      here_end_span_id: 326
                      stdin_parts: [
                        ('<!DOCTYPE html>\n')
                        ('<html>\n')
                        ('  <head>\n')
                        ('    <style>\n')
                        ('      a:link {\n')
                        ('        text-decoration: none;\n')
                        ('      }\n')
                        ('      a:hover {\n')
                        ('        text-decoration: underline;\n')
                        ('      }\n')
                        ('      body {\n')
                        ('        margin: 0 auto;\n')
                        ('        width: 40em;\n')
                        ('      }\n')
                        ("      /* different color because they're links but not topics */\n")
                        ('      .level1 {\n')
                        ('        /* color: green; */\n')
                        ('        color: black;\n')
                        ('      }\n')
                        ('      .level2 {\n')
                        ('        color: #555;\n')
                        ('      }\n')
                        ('      h1,h2,h3,h4 {\n')
                        ('      /* color: darkcyan; */\n')
                        ('      }\n')
                        ('      #home-link {\n')
                        ('        text-align: right;\n')
                        ('      }\n')
                        ('    </style>\n')
                        ('  </head>\n')
                        ('  <body>\n')
                        ('    <p id=')
                        (Right_DoubleQuote '"')
                        (home-link)
                        (Right_DoubleQuote '"')
                        ('>\n')
                        ('      <a href=')
                        (Right_DoubleQuote '"')
                        (/)
                        (Right_DoubleQuote '"')
                        ('>oilshell.org</a>\n')
                        ('    </p>\n')
                        ('    <p style=')
                        (Right_DoubleQuote '"')
                        ('color: darkred; font-size: x-large;')
                        (Right_DoubleQuote '"')
                        ('>\n')
                        ('      NOTE: This document is a work in progress!\n')
                        ('    </p>\n')
                      ]
                    )
                  ]
                )
                (C {(_quick-ref)} {(toc)} {(doc/) (${ VSub_Name prog) (-quick-ref-toc.txt)})
                (C {(_quick-ref)} {(pages)} {(doc/) (${ VSub_Name prog) (-quick-ref-pages.txt)} 
                  {($ VSub_Name '$text_out_dir')} {($ VSub_Name '$py_out')}
                )
                (C {(_build-timestamp)})
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (HereDoc
                      op: <Redir_DLess '<<'>
                      fd: 16777215
                      here_begin: {(EOF)}
                      here_end_span_id: 372
                      stdin_parts: [('  </body>\n') ('</html>\n')]
                    )
                  ]
                )
              ]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{($ VSub_Name '$html_out')})]
              spids: [268]
            )
            (C {(log)} {(DQ ('Wrote ') ($ VSub_Name '$html_out'))})
          ]
          spids: [214]
        )
      spids: [210 213]
    )
    (FuncDef
      name: osh-quick-ref
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out_dir spids:[400])
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(_build)})
                        spids: [401 405]
                      )
                    }
                  spids: [400]
                )
              ]
              spids: [398]
            )
            (C {(x-quick-ref)} {(osh)} {($ VSub_Name '$out_dir')})
          ]
          spids: [395]
        )
      spids: [391 394]
    )
    (FuncDef
      name: markdown2html
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src spids:[426])
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [426]
                )
              ]
              spids: [424]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out spids:[432])
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [432]
                )
              ]
              spids: [430]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:monospace spids:[438])
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 3>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{})
                        spids: [439 442]
                      )
                    }
                  spids: [438]
                )
              ]
              spids: [436]
            )
            (C {(mkdir)} {(-p)} {(_build/doc)})
            (BraceGroup
              children: [
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (HereDoc
                      op: <Redir_DLess '<<'>
                      fd: 16777215
                      here_begin: {(EOF)}
                      here_end_span_id: 493
                      stdin_parts: [
                        ('<!DOCTYPE html>\n')
                        ('<html>\n')
                        ('  <head>\n')
                        ('    <style>\n')
                        ('      body {\n')
                        ('        margin: 0 auto;\n')
                        ('        width: 40em;\n')
                        ('        ')
                        ($ VSub_Name '$monospace')
                        ('\n')
                        ('      }\n')
                        ('      pre {\n')
                        ('        color: green;\n')
                        ('        margin-left: 4em;\n')
                        ('      }\n')
                        ('      #home-link {\n')
                        ('        text-align: right;\n')
                        ('      }\n')
                        ('    </style>\n')
                        ('  </head>\n')
                        ('  <body>\n')
                        ('    <p id=')
                        (Right_DoubleQuote '"')
                        (home-link)
                        (Right_DoubleQuote '"')
                        ('>\n')
                        ('      <a href=')
                        (Right_DoubleQuote '"')
                        (/)
                        (Right_DoubleQuote '"')
                        ('>oilshell.org</a>\n')
                        ('    </p>\n')
                      ]
                    )
                  ]
                )
                (SimpleCommand
                  words: [{(markdown)}]
                  redirects: [(Redir op:<Redir_Less '<'> fd:16777215 arg_word:{($ VSub_Name '$src')})]
                )
                (C {(_build-timestamp)})
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (HereDoc
                      op: <Redir_DLess '<<'>
                      fd: 16777215
                      here_begin: {(EOF)}
                      here_end_span_id: 519
                      stdin_parts: [('  </body>\n') ('</html>\n')]
                    )
                  ]
                )
              ]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{($ VSub_Name '$out')})]
              spids: [453]
            )
          ]
          spids: [421]
        )
      spids: [417 420]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:MONOSPACE spids:[532])
          op: Equal
          rhs: {(SQ <'font-family: monospace;'>)}
          spids: [532]
        )
      ]
      spids: [530]
    )
    (FuncDef
      name: install
      body: 
        (BraceGroup
          children: [
            (C {(markdown2html)} {(INSTALL.txt)} {(_release/VERSION/doc/INSTALL.html)} 
              {(DQ ($ VSub_Name '$MONOSPACE'))}
            )
          ]
          spids: [542]
        )
      spids: [538 541]
    )
    (FuncDef
      name: release-index
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out spids:[567])
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: 
                              {(_build) (Lit_Slash /) (doc) (Lit_Slash /) (release-index.html)}
                          )
                        spids: [568 576]
                      )
                    }
                  spids: [567]
                )
              ]
              spids: [565]
            )
            (C {(markdown2html)} {(doc/release-index.md)} {($ VSub_Name '$out')} {(SQ )})
          ]
          spids: [562]
        )
      spids: [558 561]
    )
    (FuncDef
      name: _sed-ext
      body: 
        (BraceGroup
          children: [(C {(sed)} {(--regexp-extended)} {(-i)} {(DQ ($ VSub_At '$@'))})]
          spids: [602]
        )
      spids: [598 601]
    )
    (FuncDef
      name: update-src-versions
      body: 
        (BraceGroup
          children: [
            (C {(_sed-ext)} 
              {(DQ ('s/Version [0-9]+.[0-9]+.[a-z0-9]+/Version ') ($ VSub_Name '$OIL_VERSION') (/g))} {(doc/release-index.md)}
            )
            (C {(_sed-ext)} 
              {(DQ ('s/oil-[0-9]+.[0-9]+.[a-z0-9]+/oil-') ($ VSub_Name '$OIL_VERSION') (/g))} {(INSTALL.txt)}
            )
            (C {(_sed-ext)} 
              {
                (DQ ('s;/release/[0-9]+.[0-9]+.[a-z0-9]+/;/release/') ($ VSub_Name '$OIL_VERSION') 
                  ('/;g')
                )
              } {(doc/osh-quick-ref-toc.txt)}
            )
          ]
          spids: [622]
        )
      spids: [618 621]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)