(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (FuncDef
      name: log
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)} {(DQ ($ VSub_At '$@'))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[45])]
            )
          ]
          spids: [36]
        )
      spids: [32 35]
    )
    (FuncDef
      name: versioned-dest
      body: 
        (BraceGroup
          children: [
            (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: [61 69]
                      )
                    }
                  spids: [60]
                )
              ]
              spids: [58]
            )
            (C {(log)} {(DQ ('branch ') ($ VSub_Name '$branch'))})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:hash)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(git)} {(rev-parse)} {($ VSub_Name '$branch')})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [83 89]
                      )
                    }
                  spids: [82]
                )
              ]
              spids: [80]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:short_hash)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name hash>
                        suffix_op: 
                          (Slice
                            begin: (ArithWord w:{(Lit_Digits 0)})
                            length: (ArithWord w:{(Lit_Digits 8)})
                          )
                        spids: [95 101]
                      )
                    }
                  spids: [94]
                )
              ]
              spids: [92]
            )
            (C {(log)} {(DQ ('hash ') ($ VSub_Name '$short_hash'))})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest)
                  op: Equal
                  rhs: 
                    {
                      (DQ (oilshell.org/git-branch/) ($ VSub_Name '$branch') (/) 
                        ($ VSub_Name '$short_hash')
                      )
                    }
                  spids: [115]
                )
              ]
              spids: [113]
            )
            (C {(echo)} {($ VSub_Name '$dest')})
          ]
          spids: [55]
        )
      spids: [51 54]
    )
    (FuncDef
      name: spec
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:user)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [140]
                )
              ]
              spids: [138]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:host)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [146]
                )
              ]
              spids: [144]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:dest) op:Equal spids:[157])]
              spids: [155]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(versioned-dest)})])
                          left_token: <Left_CommandSub '$('>
                          spids: [162 164]
                        ) (/) 
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(hostname)})])
                          left_token: <Left_CommandSub '$('>
                          spids: [166 168]
                        ) (/spec)
                      )
                    }
                  spids: [160]
                )
              ]
              spids: [160]
            )
            (C {(ssh)} {($ VSub_Name '$user') (Lit_Other '@') ($ VSub_Name '$host')} {(mkdir)} {(-p)} 
              {($ VSub_Name '$dest')}
            )
            (C {(rsync)} {(--archive)} {(--verbose)} {(--copy-links)} {(_tmp/spec/)} 
              {($ VSub_Name '$user') (Lit_Other '@') ($ VSub_Name '$host') (Lit_Other ':') 
                ($ VSub_Name '$dest') (/)
              }
            )
            (C {(echo)} {(DQ ('Visit http://') ($ VSub_Name '$dest') (/RESULTS.html))})
          ]
          spids: [135]
        )
      spids: [131 134]
    )
    (FuncDef
      name: unit
      body: (BraceGroup children:[(C {(echo)} {(SQ <'Hello from publish.sh'>)})] spids:[239])
      spids: [235 238]
    )
    (FuncDef
      name: wild
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:user)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [266]
                )
              ]
              spids: [264]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:host)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [272]
                )
              ]
              spids: [270]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:dest) op:Equal spids:[279])]
              spids: [277]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(versioned-dest)})])
                          left_token: <Left_CommandSub '$('>
                          spids: [284 286]
                        )
                      )
                    }
                  spids: [282]
                )
              ]
              spids: [282]
            )
            (C {(ssh)} {($ VSub_Name '$user') (Lit_Other '@') ($ VSub_Name '$host')} {(mkdir)} {(-p)} 
              {($ VSub_Name '$dest')}
            )
            (C {(rsync)} {(--archive)} {(--verbose)} {(_release/VERSION/test/wild.wwz)} 
              {($ VSub_Name '$user') (Lit_Other '@') ($ VSub_Name '$host') (Lit_Other ':') 
                ($ VSub_Name '$dest') (/)
              }
            )
            (C {(echo)} {(DQ ('Visit http://') ($ VSub_Name '$dest') (/wild.wwz/))})
          ]
          spids: [261]
        )
      spids: [257 260]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)