#!/bin/bash function requireLocalRepoUpToDate() { local LOCAL_CHANGES="$(svn status -u | egrep -v '^Status against revision:')" # -u causes status differences from head to be reported. if [[ -n "$LOCAL_CHANGES" ]]; then echo "Repo is not up-to-date or not committed." echo ======================================== echo "$LOCAL_CHANGES" echo ======================================== echo "Aborting." echo exit -1 fi } requireLocalRepoUpToDate PROJECT_DIR="$(pushd "$(dirname "$0")/../.." >& /dev/null; pwd -P; popd >& /dev/null)" VERSION="$1" PASSPHRASE="$2" KEYNAME=04074996 function usageAndExit() { echo "Usage: $0 " echo echo "Stages a release for deployment into Maven central" echo echo " is the current SVN revision number." echo "svn info gives more info about the state of trunk." echo echo " is the passphrase for the GPG key $KEYNAME." echo "gpg --list-keys for more details on the key." echo echo "For example: $0 r123 ELIDED" exit -1 } if ! [ -d "$PROJECT_DIR/maven" ]; then echo "Cannot determine script directory. $PROJECT_DIR" usageAndExit fi if ! [[ "$VERSION" =~ r[0-9]+ ]]; then echo "Bad version $VERSION" echo usageAndExit fi if [ -z "$PASSPHRASE" ]; then echo "Missing passphrase" echo usageAndExit fi POMFILE="$PROJECT_DIR/maven/owasp-java-html-sanitizer/owasp-java-html-sanitizer/$VERSION/owasp-java-html-sanitizer-$VERSION.pom" JAR_NO_EXT="$PROJECT_DIR/maven/owasp-java-html-sanitizer/owasp-java-html-sanitizer/$VERSION/owasp-java-html-sanitizer-$VERSION" function requireFile() { local FILE="$1" if ! [ -e "$FILE" ]; then echo "Missing file : $FILE" echo usageAndExit fi } requireFile "$POMFILE" requireFile "$JAR_NO_EXT".jar requireFile "$JAR_NO_EXT"-sources.jar requireFile "$JAR_NO_EXT"-javadoc.jar mvn -X -e \ gpg:sign-and-deploy-file \ -Dgpg.keyname="$KEYNAME" \ -Dgpg.passphrase="$PASSPHRASE" \ -DgeneratePom=false \ -DpomFile="$POMFILE" \ -Dfile="$JAR_NO_EXT".jar \ -Dfiles="$JAR_NO_EXT"-sources.jar,"$JAR_NO_EXT"-javadoc.jar \ -Dtypes=jar,jar \ -Dclassifiers=sources,javadoc \ -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ \ -DrepositoryId=sonatype-nexus-staging \ && \ echo "Follow instructions at https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-8a.ReleaseIt"