(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)
          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_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[139])]
            )
          ]
          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)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [219]
                )
              ]
              spids: [217]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out_dir)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [225]
                )
              ]
              spids: [223]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:html_out)
                  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)
                  op: Equal
                  rhs: {(_build/) ($ VSub_Name '$prog') (-quick-ref)}
                  spids: [241]
                )
              ]
              spids: [239]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:py_out)
                  op: Equal
                  rhs: {(_devbuild/) (${ VSub_Name prog) (_help.py)}
                  spids: [249]
                )
              ]
              spids: [247]
            )
            (C {(mkdir)} {(-p)} {(_build/doc)} {($ VSub_Name '$text_out_dir')} {(_devbuild)})
            (C {(touch)} {(_devbuild/__init__.py)})
            (BraceGroup
              children: [
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (HereDoc
                      op_id: Redir_DLess
                      fd: -1
                      body: 
                        {
                          (DQ ('<!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')
                          )
                        }
                      do_expansion: True
                      here_end: EOF
                      was_filled: True
                      spids: [283]
                    )
                  ]
                )
                (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_id: Redir_DLess
                      fd: -1
                      body: {(DQ ('  </body>\n') ('</html>\n'))}
                      do_expansion: True
                      here_end: EOF
                      was_filled: True
                      spids: [375]
                    )
                  ]
                )
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {($ VSub_Name '$html_out')}
                  spids: [384]
                )
              ]
              spids: [278]
            )
            (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)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(_build)})
                        spids: [409 413]
                      )
                    }
                  spids: [408]
                )
              ]
              spids: [406]
            )
            (C {(x-quick-ref)} {(osh)} {($ VSub_Name '$out_dir')})
          ]
          spids: [403]
        )
      spids: [399 402]
    )
    (FuncDef
      name: oil-quick-ref
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(_build)})
                        spids: [435 439]
                      )
                    }
                  spids: [434]
                )
              ]
              spids: [432]
            )
            (C {(x-quick-ref)} {(oil)} {($ VSub_Name '$out_dir')})
          ]
          spids: [429]
        )
      spids: [425 428]
    )
    (FuncDef
      name: markdown2html
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [460]
                )
              ]
              spids: [458]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [466]
                )
              ]
              spids: [464]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:monospace)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 3>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{})
                        spids: [473 476]
                      )
                    }
                  spids: [472]
                )
              ]
              spids: [470]
            )
            (C {(mkdir)} {(-p)} {(_build/doc)})
            (BraceGroup
              children: [
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (HereDoc
                      op_id: Redir_DLess
                      fd: -1
                      body: 
                        {
                          (DQ ('<!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')
                          )
                        }
                      do_expansion: True
                      here_end: EOF
                      was_filled: True
                      spids: [491]
                    )
                  ]
                )
                (SimpleCommand
                  words: [{(markdown)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Less
                      fd: -1
                      arg_word: {($ VSub_Name '$src')}
                      spids: [532]
                    )
                  ]
                )
                (C {(_build-timestamp)})
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (HereDoc
                      op_id: Redir_DLess
                      fd: -1
                      body: {(DQ ('  </body>\n') ('</html>\n'))}
                      do_expansion: True
                      here_end: EOF
                      was_filled: True
                      spids: [546]
                    )
                  ]
                )
              ]
              redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{($ VSub_Name '$out')} spids:[555])]
              spids: [487]
            )
          ]
          spids: [455]
        )
      spids: [451 454]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:MONOSPACE)
          op: Equal
          rhs: {(SQ <'font-family: monospace;'>)}
          spids: [564]
        )
      ]
      spids: [562]
    )
    (FuncDef
      name: install
      body: 
        (BraceGroup
          children: [
            (C {(markdown2html)} {(INSTALL.txt)} {(_release/VERSION/doc/INSTALL.html)} 
              {(DQ ($ VSub_Name '$MONOSPACE'))}
            )
          ]
          spids: [574]
        )
      spids: [570 573]
    )
    (FuncDef
      name: release-index
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out)
                  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: [600 608]
                      )
                    }
                  spids: [599]
                )
              ]
              spids: [597]
            )
            (C {(markdown2html)} {(doc/release-index.md)} {($ VSub_Name '$out')} {(SQ )})
          ]
          spids: [594]
        )
      spids: [590 593]
    )
    (FuncDef
      name: _sed-ext
      body: 
        (BraceGroup
          children: [(C {(sed)} {(--regexp-extended)} {(-i)} {(DQ ($ VSub_At '$@'))})]
          spids: [634]
        )
      spids: [630 633]
    )
    (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)}
            )
          ]
          spids: [654]
        )
      spids: [650 653]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)