(command.CommandList
  children: [
    (C {<set>} {<-o>} {<nounset>})
    (C {<set>} {<-o>} {<pipefail>})
    (C {<set>} {<-o>} {<errexit>})
    (command.ShFunction
      name: log
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<echo>} {(DQ ($ Id.VSub_At '$@'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: versioned-dest
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'branch='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<git>} {<rev-parse>} {<--abbrev-ref>} {<HEAD>})
                )
              }
            )
            (C {<log>} {(DQ <'branch '> ($ Id.VSub_DollarName '$branch'))})
            (C {<local>} 
              {<Id.Lit_VarLike 'hash='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<git>} {<rev-parse>} {($ Id.VSub_DollarName '$branch')})
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'short_hash='> 
                (braced_var_sub
                  token: <Id.VSub_Name hash>
                  suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 0>} length:{<Id.Lit_Digits 8>})
                )
              }
            )
            (C {<log>} {(DQ <'hash '> ($ Id.VSub_DollarName '$short_hash'))})
            (C {<local>} 
              {<Id.Lit_VarLike 'dest='> 
                (DQ <'oilshell.org/git-branch/'> ($ Id.VSub_DollarName '$branch') <'/'> 
                  ($ Id.VSub_DollarName '$short_hash')
                )
              }
            )
            (C {<echo>} {($ Id.VSub_DollarName '$dest')})
          ]
        )
    )
    (command.ShFunction
      name: spec
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'user='> ($ Id.VSub_Number '$1')})
            (C {<local>} {<Id.Lit_VarLike 'host='> ($ Id.VSub_Number '$2')})
            (C {<local>} {<dest>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dest)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<versioned-dest>})
                        ) <'/'> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<hostname>})) <'/spec'>
                      )
                    }
                  spids: [160]
                )
              ]
            )
            (C {<ssh>} {($ Id.VSub_DollarName '$user') <Id.Lit_At '@'> ($ Id.VSub_DollarName '$host')} 
              {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$dest')}
            )
            (C {<rsync>} {<--archive>} {<--verbose>} {<--copy-links>} {<'_tmp/spec/'>} 
              {($ Id.VSub_DollarName '$user') <Id.Lit_At '@'> ($ Id.VSub_DollarName '$host') 
                <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$dest') <'/'>
              }
            )
            (C {<echo>} {(DQ <'Visit http://'> ($ Id.VSub_DollarName '$dest') <'/RESULTS.html'>)})
          ]
        )
    )
    (command.ShFunction
      name: unit
      body: (BraceGroup children:[(C {<echo>} {(SQ <'Hello from publish.sh'>)})])
    )
    (command.ShFunction
      name: wild
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'user='> ($ Id.VSub_Number '$1')})
            (C {<local>} {<Id.Lit_VarLike 'host='> ($ Id.VSub_Number '$2')})
            (C {<local>} {<dest>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dest)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<versioned-dest>})
                        )
                      )
                    }
                  spids: [282]
                )
              ]
            )
            (C {<ssh>} {($ Id.VSub_DollarName '$user') <Id.Lit_At '@'> ($ Id.VSub_DollarName '$host')} 
              {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$dest')}
            )
            (C {<rsync>} {<--archive>} {<--verbose>} {<'_release/VERSION/test/wild.wwz'>} 
              {($ Id.VSub_DollarName '$user') <Id.Lit_At '@'> ($ Id.VSub_DollarName '$host') 
                <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$dest') <'/'>
              }
            )
            (C {<echo>} {(DQ <'Visit http://'> ($ Id.VSub_DollarName '$dest') <'/wild.wwz/'>)})
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)