(command.CommandList children: [ (C {<set>} {<-e>}) (C {<.>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {(${ Id.VSub_Number 0)}) ) <'/atexit.sh'> } ) (C {<.>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {(${ Id.VSub_Number 0)}) ) <'/colors.sh'> } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {(${ Id.VSub_Pound '#')} {<-eq>} {<2>}) (BraceGroup children: [ (command.Sentence child: (C {<echo>} { (DQ <'Usage: '> (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<basename>} {(${ Id.VSub_Number 0)}) ) <' [version] [candidate]'> ) } ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) terminator: <Id.Op_Semi _> ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VERSION) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [90] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CANDIDATE) op: assign_op.Equal rhs: {(${ Id.VSub_Number 2)} spids: [95] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TAG) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name VERSION) <-rc> (${ Id.VSub_Name CANDIDATE))} spids: [100] ) ] ) (C {<echo>} { (DQ (${ Id.VSub_Name GREEN) <'Voting for mesos-'> (${ Id.VSub_Name VERSION) <' candidate '> (${ Id.VSub_Name CANDIDATE) (${ Id.VSub_Name NORMAL) ) } ) (C {<read>} {<-p>} {(DQ <'Hit enter to continue ... '>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MESOS_GIT_URL) op: assign_op.Equal rhs: {(DQ <'https://git-wip-us.apache.org/repos/asf/mesos.git'>)} spids: [141] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WORK_DIR) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<mktemp>} {<-d>} {<'/tmp/mesos-vote-XXXX'>}) ) } spids: [147] ) ] ) (C {<atexit>} {(DQ <'rm -rf '> (${ Id.VSub_Name WORK_DIR))}) (C {<pushd>} {(${ Id.VSub_Name WORK_DIR)}) (C {<echo>} {(DQ (${ Id.VSub_Name GREEN) <'Checking out '> (${ Id.VSub_Name TAG) (${ Id.VSub_Name NORMAL))} ) (C {<git>} {<clone>} {<--depth>} {<1>} {<--branch>} {(${ Id.VSub_Name TAG)} {(${ Id.VSub_Name MESOS_GIT_URL)} ) (C {<pushd>} {<mesos>}) (C {<grep>} { (DQ <Id.Lit_BadBackslash '\\'> <'[mesos'> <Id.Lit_BadBackslash '\\'> <'], '> <Id.Lit_BadBackslash '\\'> <'['> (${ Id.VSub_Name VERSION) <Id.Lit_BadBackslash '\\'> <']'> ) } {<configure.ac>} ) (C {<'./bootstrap'>}) (C {<mkdir>} {<build>}) (C {<pushd>} {<build>}) (C {<'../configure'>} {<--disable-optimize>}) (C {<pushd>} {<3rdparty>}) (C {<make>} {<-j3>}) (C {<popd>}) (C {<make>} {<-j3>} {<maven-install>}) (C {<mvn>} {<deploy>} {<-f>} {<'src/java/mesos.pom'>}) (C {<echo>} { (DQ (${ Id.VSub_Name GREEN) <'Successfully deployed the jar to staging maven repository ...'> (${ Id.VSub_Name NORMAL) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MAVEN_REPO) op: assign_op.Equal rhs: {(DQ )} spids: [309] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name MAVEN_REPO)} {<Id.Lit_RBracket ']'>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<read>} {<-p>} {(DQ <'Please *close* the staging repository and provide its URL here: '>)} {<MAVEN_REPO>} ) ] ) ) (C {<echo>} {(DQ (${ Id.VSub_Name GREEN) <'Building the distribution ...'> (${ Id.VSub_Name NORMAL))} ) (C {<make>} {<-j3>} {<dist>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARBALL) op: assign_op.Equal rhs: {<mesos-> (${ Id.VSub_Name VERSION) <.tar.gz>} spids: [364] ) ] ) (C {<echo>} {(DQ (${ Id.VSub_Name GREEN) <'Signing the distribution ...'> (${ Id.VSub_Name NORMAL))}) (C {<gpg>} {<--armor>} {<--output>} {(${ Id.VSub_Name TARBALL) <.asc>} {<--detach-sig>} {(${ Id.VSub_Name TARBALL)} ) (C {<echo>} {(DQ (${ Id.VSub_Name GREEN) <'Creating a MD5 checksum...'> (${ Id.VSub_Name NORMAL))}) (command.Simple words: [{<gpg>} {<--print-md>} {<MD5>} {(${ Id.VSub_Name TARBALL)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TARBALL) <.md5>} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SVN_DEV_REPO) op: assign_op.Equal rhs: {(DQ <'https://dist.apache.org/repos/dist/dev/mesos'>)} spids: [440] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SVN_DEV_LOCAL) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name WORK_DIR) <'/dev'>)} spids: [445] ) ] ) (C {<echo>} {(DQ (${ Id.VSub_Name GREEN) <'Checking out svn dev repo ...'> (${ Id.VSub_Name NORMAL))} ) (C {<svn>} {<co>} {<--depth> <Id.Lit_Equals '='> <empty>} {(${ Id.VSub_Name SVN_DEV_REPO)} {(${ Id.VSub_Name SVN_DEV_LOCAL)} ) (C {<echo>} {(DQ (${ Id.VSub_Name GREEN) <'Uploading the artifacts (the distribution,'>)} {(DQ <'signature, and MD5) ...'> (${ Id.VSub_Name NORMAL))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RELEASE_DIRECTORY) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name SVN_DEV_LOCAL) <'/'> (${ Id.VSub_Name TAG))} spids: [509] ) ] ) (C {<mkdir>} {(${ Id.VSub_Name RELEASE_DIRECTORY)}) (C {<mv>} {(${ Id.VSub_Name TARBALL)} {(${ Id.VSub_Name TARBALL) <.asc>} {(${ Id.VSub_Name TARBALL) <.md5>} {(${ Id.VSub_Name RELEASE_DIRECTORY)} ) (C {<popd>}) (C {<popd>}) (C {<pushd>} {(${ Id.VSub_Name SVN_DEV_LOCAL)}) (C {<svn>} {<add>} {(${ Id.VSub_Name TAG)}) (C {<svn>} {<commit>} {<-m>} {(DQ <'Adding mesos-'> (${ Id.VSub_Name TAG) <.>)}) (C {<popd>}) (C {<popd>}) (C {<echo>} { (DQ (${ Id.VSub_Name GREEN) <'Success! Now send the following VOTE email ...'> (${ Id.VSub_Name NORMAL) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MESSAGE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<__EOF__>} here_end_span_id: 752 stdin_parts: [ <'To: dev@mesos.apache.org, user@mesos.apache.org\n'> <'Subject: [VOTE] Release Apache Mesos '> (${ Id.VSub_Name VERSION) <' (rc'> (${ Id.VSub_Name CANDIDATE) <')\n'> <'\n'> <'Hi all,\n'> <'\n'> <'Please vote on releasing the following candidate as Apache Mesos '> (${ Id.VSub_Name VERSION) <'.\n'> <'\n'> <'\n'> (${ Id.VSub_Name VERSION) <' includes the following:\n'> < '--------------------------------------------------------------------------------\n' > <'*****Announce major features here*****\n'> <'*****Announce major bug fixes here*****\n'> <'\n'> <'The CHANGELOG for the release is available at:\n'> < 'https://git-wip-us.apache.org/repos/asf?p=mesos.git;a=blob_plain;f=CHANGELOG;hb=' > (${ Id.VSub_Name TAG) <'\n'> < '--------------------------------------------------------------------------------\n' > <'\n'> <'The candidate for Mesos '> (${ Id.VSub_Name VERSION) <' release is available at:\n'> (${ Id.VSub_Name SVN_DEV_REPO) <'/'> (${ Id.VSub_Name TAG) <'/'> (${ Id.VSub_Name TARBALL) <'\n'> <'\n'> <'The tag to be voted on is '> (${ Id.VSub_Name TAG) <':\n'> <'https://git-wip-us.apache.org/repos/asf?p=mesos.git;a=commit;h='> (${ Id.VSub_Name TAG) <'\n'> <'\n'> <'The MD5 checksum of the tarball can be found at:\n'> (${ Id.VSub_Name SVN_DEV_REPO) <'/'> (${ Id.VSub_Name TAG) <'/'> (${ Id.VSub_Name TARBALL) <'.md5\n'> <'\n'> <'The signature of the tarball can be found at:\n'> (${ Id.VSub_Name SVN_DEV_REPO) <'/'> (${ Id.VSub_Name TAG) <'/'> (${ Id.VSub_Name TARBALL) <'.asc\n'> <'\n'> <'The PGP key used to sign the release is here:\n'> <'https://dist.apache.org/repos/dist/release/mesos/KEYS\n'> <'\n'> <'The JAR is up in Maven in a staging repository here:\n'> (${ Id.VSub_Name MAVEN_REPO) <'\n'> <'\n'> <'Please vote on releasing this package as Apache Mesos '> (${ Id.VSub_Name VERSION) <'!\n'> <'\n'> <'The vote is open until '> (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<date>} {<-v> <Id.Lit_Other '+'> <3d>}) ) <' and passes if a majority of at least 3 +1 PMC votes are cast.\n'> <'\n'> <'[ ] +1 Release this package as Apache Mesos '> (${ Id.VSub_Name VERSION) <'\n'> <'[ ] -1 Do not release this package because ...\n'> <'\n'> <'Thanks,\n'> ] ) ) ] do_fork: T ) ) } spids: [616] ) ] ) (C {<echo>} {(DQ (${ Id.VSub_Name MESSAGE))}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )