(CommandList
  children: [
    (C {(set)} {(-e)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SOURCE_DIR)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (AndOr
                          children: [
                            (C {(cd)} 
                              {
                                (DQ 
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (C {(dirname)} 
                                            {
                                              (DQ 
                                                (BracedVarSub
                                                  token: <VSub_Name BASH_SOURCE>
                                                  bracket_op: 
                                                    (ArrayIndex
                                                      expr: (ArithWord w:{(Lit_Digits 0)})
                                                    )
                                                  spids: [74 79]
                                                )
                                              )
                                            }
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [69 82]
                                  )
                                )
                              }
                            )
                            (C {(pwd)})
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [64 89]
                )
              )
            }
          spids: [62]
        )
      ]
      spids: [62]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(DQ ($ VSub_Pound '$#'))} {(-ne)} {(2)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Usage: ') ($ VSub_Number '$0') (' <version> <rc-num>'))})
            (C {(exit)})
          ]
          spids: [16777215 108]
        )
      ]
      spids: [16777215 122]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:version)
          op: Equal
          rhs: {($ VSub_Number '$1')}
          spids: [125]
        )
      ]
      spids: [125]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:rc) op:Equal rhs:{($ VSub_Number '$2')} spids:[128])]
      spids: [128]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(-d)} {(tmp/)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(echo)} {(DQ ('Cannot run: tmp/ exists'))}) (C {(exit)})]
          spids: [16777215 143]
        )
      ]
      spids: [16777215 155]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tag)
          op: Equal
          rhs: {(apache-arrow-) (${ VSub_Name version)}
          spids: [158]
        )
      ]
      spids: [158]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tagrc)
          op: Equal
          rhs: {(${ VSub_Name tag) (-rc) (${ VSub_Name rc)}
          spids: [164]
        )
      ]
      spids: [164]
    )
    (C {(echo)} {(DQ ('Preparing source for tag ') (${ VSub_Name tag))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:release_hash)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (SimpleCommand
                            words: [{(git)} {(rev-list)} {($ VSub_Name '$tag')}]
                            redirects: [
                              (Redir
                                op_id: Redir_Great
                                fd: 2
                                arg_word: {(/dev/null)}
                                spids: [192]
                              )
                            ]
                          )
                          (C {(head)} {(-n)} {(1)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [185 204]
              )
            }
          spids: [184]
        )
      ]
      spids: [184]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$release_hash'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Cannot continue: unknown git tag: ') ($ VSub_Name '$tag'))})
            (C {(exit)})
          ]
          spids: [16777215 220]
        )
      ]
      spids: [16777215 233]
    )
    (C {(echo)} {(DQ ('Using commit ') ($ VSub_Name '$release_hash'))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tarball)
          op: Equal
          rhs: {(${ VSub_Name tag) (.tar.gz)}
          spids: [244]
        )
      ]
      spids: [244]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:extract_dir)
          op: Equal
          rhs: {(tmp-apache-arrow)}
          spids: [251]
        )
      ]
      spids: [251]
    )
    (C {(rm)} {(-rf)} {(${ VSub_Name extract_dir)})
    (Pipeline
      children: [
        (C {(git)} {(archive)} {(${ VSub_Name release_hash)} {(--prefix)} {(${ VSub_Name extract_dir) (/)})
        (C {(tar)} {(xf)} {(-)})
      ]
      negated: False
    )
    (C {(mkdir)} {(-p)} {(${ VSub_Name extract_dir) (/cpp/build)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:cpp_install_dir)
          op: Equal
          rhs: {(${ VSub_Name PWD) (/) (${ VSub_Name extract_dir) (/cpp/install)}
          spids: [307]
        )
      ]
      spids: [307]
    )
    (C {(cd)} {(${ VSub_Name extract_dir) (/cpp/build)})
    (C {(cmake)} {(..)} {(-DCMAKE_INSTALL_PREFIX) (Lit_Other '=') (${ VSub_Name cpp_install_dir)} 
      {(-DARROW_BUILD_TESTS) (Lit_Other '=') (no)}
    )
    (C {(make)} {(-j8)})
    (C {(make)} {(install)})
    (C {(cd)} {(-)})
    (C {(cd)} {(${ VSub_Name extract_dir) (/c_glib)})
    (C {(./autogen.sh)})
    (C {(./configure)} 
      {(Lit_VarLike 'PKG_CONFIG_PATH=') ($ VSub_Name '$cpp_install_dir') (/lib/pkgconfig)} {(--enable-gtk-doc)}
    )
    (SimpleCommand
      words: [{(make)} {(-j8)}]
      more_env: [
        (env_pair
          name: LD_LIBRARY_PATH
          val: 
            {($ VSub_Name '$cpp_install_dir') (/lib) (Lit_Other ':') ($ VSub_Name '$LD_LIBRARY_PATH')}
          spids: [379]
        )
      ]
    )
    (C {(make)} {(dist)})
    (C {(tar)} {(xzf)} {(Lit_Other '*') (.tar.gz)})
    (C {(rm)} {(Lit_Other '*') (.tar.gz)})
    (C {(cd)} {(-)})
    (C {(rm)} {(-rf)} {(tmp-c_glib/)})
    (C {(mv)} {(${ VSub_Name extract_dir) (/c_glib/apache-arrow-glib-) (Lit_Other '*')} {(tmp-c_glib/)})
    (C {(rm)} {(-rf)} {(${ VSub_Name extract_dir)})
    (C {(rm)} {(-rf)} {(${ VSub_Name tag)})
    (Pipeline
      children: [
        (C {(git)} {(archive)} {($ VSub_Name '$release_hash')} {(--prefix)} {(${ VSub_Name tag) (/)})
        (C {(tar)} {(xf)} {(-)})
      ]
      negated: False
    )
    (C {(rm)} {(-rf)} {(${ VSub_Name tag) (/c_glib)})
    (C {(mv)} {(tmp-c_glib)} {(${ VSub_Name tag) (/c_glib)})
    (C {(tar)} {(czf)} {(${ VSub_Name tarball)} {(${ VSub_Name tag)})
    (C {(rm)} {(-rf)} {(${ VSub_Name tag)})
    (C {(${ VSub_Name SOURCE_DIR) (/run-rat.sh)} {(${ VSub_Name tarball)})
    (C {(gpg)} {(--armor)} {(--output)} {(${ VSub_Name tarball) (.asc)} {(--detach-sig)} 
      {(${ VSub_Name tarball)}
    )
    (SimpleCommand
      words: [{(gpg)} {(--print-md)} {(MD5)} {(${ VSub_Name tarball)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {(${ VSub_Name tarball) (.md5)}
          spids: [549]
        )
      ]
    )
    (SimpleCommand
      words: [{(sha1sum)} {($ VSub_Name '$tarball')}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {(${ VSub_Name tarball) (.sha1)}
          spids: [560]
        )
      ]
    )
    (SimpleCommand
      words: [{(sha256sum)} {($ VSub_Name '$tarball')}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {(${ VSub_Name tarball) (.sha256)}
          spids: [571]
        )
      ]
    )
    (SimpleCommand
      words: [{(sha512sum)} {($ VSub_Name '$tarball')}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {(${ VSub_Name tarball) (.sha512)}
          spids: [582]
        )
      ]
    )
    (C {(svn)} {(co)} {(--depth) (Lit_Other '=') (empty)} 
      {(https) (Lit_Other ':') (//dist.apache.org/repos/dist/dev/arrow)} {(tmp)}
    )
    (C {(mkdir)} {(-p)} {(tmp/) (${ VSub_Name tagrc)})
    (C {(cp)} {(${ VSub_Name tarball) (Lit_Other '*')} {(tmp/) (${ VSub_Name tagrc)})
    (C {(svn)} {(add)} {(tmp/) (${ VSub_Name tagrc)})
    (C {(svn)} {(ci)} {(-m)} {(SQ <'Apache Arrow ${version} RC${rc}'>)} {(tmp/) (${ VSub_Name tagrc)})
    (C {(rm)} {(-rf)} {(tmp)})
    (C {(echo)} {(DQ ('Success! The release candidate is available here:'))})
    (C {(echo)} {(DQ ('  https://dist.apache.org/repos/dist/dev/arrow/') (${ VSub_Name tagrc))})
    (C {(echo)} {(DQ )})
    (C {(echo)} {(DQ ('Commit SHA1: ') (${ VSub_Name release_hash))})
  ]
)