147d6569a26edc3914fd39100a57fa294a9d8732amikesamuel#!/bin/bash 247d6569a26edc3914fd39100a57fa294a9d8732amikesamuel 33a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuelfunction requireLocalRepoUpToDate() { 43a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel local LOCAL_CHANGES="$(svn status -u | egrep -v '^Status against revision:')" 53a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel # -u causes status differences from head to be reported. 63a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel if [[ -n "$LOCAL_CHANGES" ]]; then 73a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel echo "Repo is not up-to-date or not committed." 83a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel echo ======================================== 93a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel echo "$LOCAL_CHANGES" 103a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel echo ======================================== 113a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel 123a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel echo "Aborting." 133a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel echo 143a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel exit -1 153a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel fi 163a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel} 173a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel 183a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuelrequireLocalRepoUpToDate 193a7234c895e586dcbd9fa3b1a464f025a8cd9617mikesamuel 2047d6569a26edc3914fd39100a57fa294a9d8732amikesamuelPROJECT_DIR="$(pushd "$(dirname "$0")/../.." >& /dev/null; pwd -P; popd >& /dev/null)" 2147d6569a26edc3914fd39100a57fa294a9d8732amikesamuel 2247d6569a26edc3914fd39100a57fa294a9d8732amikesamuelVERSION="$1" 2347d6569a26edc3914fd39100a57fa294a9d8732amikesamuel 2447d6569a26edc3914fd39100a57fa294a9d8732amikesamuelPASSPHRASE="$2" 2547d6569a26edc3914fd39100a57fa294a9d8732amikesamuel 26c8c80c512a678b9f18c7897de28b7f13db149cc1mikesamuelKEYNAME=41449802 2747d6569a26edc3914fd39100a57fa294a9d8732amikesamuel 2847d6569a26edc3914fd39100a57fa294a9d8732amikesamuelfunction usageAndExit() { 2947d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo "Usage: $0 <version> <passphrase>" 3047d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo 3147d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo "Stages a release for deployment into Maven central" 3247d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo 3347d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo "<version> is the current SVN revision number." 3447d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo "svn info gives more info about the state of trunk." 3547d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo 3647d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo "<passphrase> is the passphrase for the GPG key $KEYNAME." 3747d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo "gpg --list-keys for more details on the key." 3847d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo 3947d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo "For example: $0 r123 ELIDED" 4047d6569a26edc3914fd39100a57fa294a9d8732amikesamuel exit -1 4147d6569a26edc3914fd39100a57fa294a9d8732amikesamuel} 4247d6569a26edc3914fd39100a57fa294a9d8732amikesamuel 4347d6569a26edc3914fd39100a57fa294a9d8732amikesamuelif ! [ -d "$PROJECT_DIR/maven" ]; then 4447d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo "Cannot determine script directory. $PROJECT_DIR" 4547d6569a26edc3914fd39100a57fa294a9d8732amikesamuel usageAndExit 4647d6569a26edc3914fd39100a57fa294a9d8732amikesamuelfi 4747d6569a26edc3914fd39100a57fa294a9d8732amikesamuel 4847d6569a26edc3914fd39100a57fa294a9d8732amikesamuelif ! [[ "$VERSION" =~ r[0-9]+ ]]; then 4947d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo "Bad version $VERSION" 5047d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo 5147d6569a26edc3914fd39100a57fa294a9d8732amikesamuel usageAndExit 5247d6569a26edc3914fd39100a57fa294a9d8732amikesamuelfi 5347d6569a26edc3914fd39100a57fa294a9d8732amikesamuel 5447d6569a26edc3914fd39100a57fa294a9d8732amikesamuelif [ -z "$PASSPHRASE" ]; then 5547d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo "Missing passphrase" 5647d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo 5747d6569a26edc3914fd39100a57fa294a9d8732amikesamuel usageAndExit 5847d6569a26edc3914fd39100a57fa294a9d8732amikesamuelfi 5947d6569a26edc3914fd39100a57fa294a9d8732amikesamuel 6047d6569a26edc3914fd39100a57fa294a9d8732amikesamuelPOMFILE="$PROJECT_DIR/maven/owasp-java-html-sanitizer/owasp-java-html-sanitizer/$VERSION/owasp-java-html-sanitizer-$VERSION.pom" 6147d6569a26edc3914fd39100a57fa294a9d8732amikesamuel 6247d6569a26edc3914fd39100a57fa294a9d8732amikesamuelJAR_NO_EXT="$PROJECT_DIR/maven/owasp-java-html-sanitizer/owasp-java-html-sanitizer/$VERSION/owasp-java-html-sanitizer-$VERSION" 6347d6569a26edc3914fd39100a57fa294a9d8732amikesamuel 6447d6569a26edc3914fd39100a57fa294a9d8732amikesamuelfunction requireFile() { 6547d6569a26edc3914fd39100a57fa294a9d8732amikesamuel local FILE="$1" 6647d6569a26edc3914fd39100a57fa294a9d8732amikesamuel if ! [ -e "$FILE" ]; then 6747d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo "Missing file : $FILE" 6847d6569a26edc3914fd39100a57fa294a9d8732amikesamuel echo 6947d6569a26edc3914fd39100a57fa294a9d8732amikesamuel usageAndExit 7047d6569a26edc3914fd39100a57fa294a9d8732amikesamuel fi 7147d6569a26edc3914fd39100a57fa294a9d8732amikesamuel} 7247d6569a26edc3914fd39100a57fa294a9d8732amikesamuel 7347d6569a26edc3914fd39100a57fa294a9d8732amikesamuelrequireFile "$POMFILE" 7447d6569a26edc3914fd39100a57fa294a9d8732amikesamuelrequireFile "$JAR_NO_EXT".jar 7547d6569a26edc3914fd39100a57fa294a9d8732amikesamuelrequireFile "$JAR_NO_EXT"-sources.jar 7647d6569a26edc3914fd39100a57fa294a9d8732amikesamuelrequireFile "$JAR_NO_EXT"-javadoc.jar 7747d6569a26edc3914fd39100a57fa294a9d8732amikesamuel 7847d6569a26edc3914fd39100a57fa294a9d8732amikesamuelmvn -X -e \ 7947d6569a26edc3914fd39100a57fa294a9d8732amikesamuel gpg:sign-and-deploy-file \ 8047d6569a26edc3914fd39100a57fa294a9d8732amikesamuel -Dgpg.keyname="$KEYNAME" \ 8147d6569a26edc3914fd39100a57fa294a9d8732amikesamuel -Dgpg.passphrase="$PASSPHRASE" \ 8247d6569a26edc3914fd39100a57fa294a9d8732amikesamuel -DgeneratePom=false \ 8347d6569a26edc3914fd39100a57fa294a9d8732amikesamuel -DpomFile="$POMFILE" \ 8447d6569a26edc3914fd39100a57fa294a9d8732amikesamuel -Dfile="$JAR_NO_EXT".jar \ 8547d6569a26edc3914fd39100a57fa294a9d8732amikesamuel -Dfiles="$JAR_NO_EXT"-sources.jar,"$JAR_NO_EXT"-javadoc.jar \ 8647d6569a26edc3914fd39100a57fa294a9d8732amikesamuel -Dtypes=jar,jar \ 8747d6569a26edc3914fd39100a57fa294a9d8732amikesamuel -Dclassifiers=sources,javadoc \ 8847d6569a26edc3914fd39100a57fa294a9d8732amikesamuel -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ \ 8947d6569a26edc3914fd39100a57fa294a9d8732amikesamuel -DrepositoryId=sonatype-nexus-staging \ 9047d6569a26edc3914fd39100a57fa294a9d8732amikesamuel&& \ 9147d6569a26edc3914fd39100a57fa294a9d8732amikesamuelecho "Follow instructions at https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-8a.ReleaseIt" 92