(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (FuncDef
      name: publish-spec
      body: 
        (BraceGroup
          children: [(C {(test/publish.sh)} {(spec)} {(chubot)} {(chubot.org)} {(andy-home)})]
          spids: [36]
        )
      spids: [32 35]
    )
    (FuncDef
      name: publish-wild
      body: 
        (BraceGroup
          children: [(C {(test/publish.sh)} {(wild)} {(chubot)} {(chubot.org)} {(andy-home)})]
          spids: [56]
        )
      spids: [52 55]
    )
    (FuncDef
      name: git-merge-to-master
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:do_push)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(T)})
                        spids: [82 86]
                      )
                    }
                  spids: [81]
                )
              ]
              spids: [79]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:branch)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(git)} {(rev-parse)} {(--abbrev-ref)} {(HEAD)})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [96 104]
                      )
                    }
                  spids: [95]
                )
              ]
              spids: [93]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(test)} {(DQ ($ VSub_Name '$do_push'))} {(Lit_Other '=')} {(T)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (C {(git)} {(checkout)} {(master)})
                        (AndOr
                          children: [
                            (C {(git)} {(merge)} {($ VSub_Name '$branch')})
                            (AndOr
                              children: [
                                (C {(git)} {(push)})
                                (C {(git)} {(checkout)} {($ VSub_Name '$branch')})
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  spids: [-1 121]
                )
              ]
              else_action: [
                (AndOr
                  children: [
                    (C {(git)} {(checkout)} {(master)})
                    (AndOr
                      children: [
                        (C {(git)} {(merge)} {($ VSub_Name '$branch')})
                        (C {(git)} {(checkout)} {($ VSub_Name '$branch')})
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              spids: [156 184]
            )
          ]
          spids: [76]
        )
      spids: [72 75]
    )
    (FuncDef
      name: spec-out-of-vm
      body: 
        (BraceGroup
          children: [
            (TimeBlock
              pipeline: 
                (C {(cp)} {(-r)} {(--dereference)} {(_tmp/spec)} {(TildeSubPart prefix:'') (/vm-shared)})
            )
          ]
          spids: [193]
        )
      spids: [189 192]
    )
    (FuncDef
      name: make-release-dirs
      body: 
        (BraceGroup
          children: [
            (C {(ssh)} {(chubot) (Lit_Other '@') (chubot.org)} {(SQ <'mkdir -p oilshell.org/download'>)})
          ]
          spids: [216]
        )
      spids: [212 215]
    )
    (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: [235 243]
              )
            }
          spids: [234]
        )
      ]
      spids: [232]
    )
    (FuncDef
      name: make-symlinks
      body: 
        (BraceGroup
          children: [
            (C {(ssh)} {(chubot) (Lit_Other '@') (chubot.org)} 
              {
                (DQ ('ln -s -f --no-target-directory -v release/') ($ VSub_Name '$OIL_VERSION') 
                  ('/doc oilshell.org/doc')
                )
              }
            )
          ]
          spids: [256]
        )
      spids: [252 255]
    )
    (FuncDef
      name: publish-doc
      body: 
        (BraceGroup
          children: [(C {(scripts/release.sh)} {(publish-doc)} {(chubot)} {(chubot.org)})]
          spids: [280]
        )
      spids: [276 279]
    )
    (FuncDef
      name: publish-release
      body: 
        (BraceGroup
          children: [(C {(scripts/release.sh)} {(publish-release)} {(chubot)} {(chubot.org)})]
          spids: [298]
        )
      spids: [294 297]
    )
    (FuncDef
      name: test-release-tree
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:user) op:Equal rhs:{(chubot)} spids:[321])]
              spids: [319]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:host) op:Equal rhs:{(chubot.org)} spids:[327])]
              spids: [325]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest)
                  op: Equal
                  rhs: {(oilshell.org/tmp/VERSION/)}
                  spids: [333]
                )
              ]
              spids: [331]
            )
            (C {(ssh)} {($ VSub_Name '$user') (Lit_Other '@') ($ VSub_Name '$host')} {(mkdir)} {(-p)} 
              {($ VSub_Name '$dest')}
            )
            (C {(rsync)} {(--archive)} {(--verbose)} {(_release/VERSION/)} 
              {($ VSub_Name '$user') (Lit_Other '@') ($ VSub_Name '$host') (Lit_Other ':') 
                ($ VSub_Name '$dest')
              }
            )
          ]
          spids: [316]
        )
      spids: [312 315]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)