blob: f01ad9904ed2f49f14fcaba31e863aea13ca77dd [file] [log] [blame]
#!/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=41449802
function usageAndExit() {
echo "Usage: $0 <version> <passphrase>"
echo
echo "Stages a release for deployment into Maven central"
echo
echo "<version> is the current SVN revision number."
echo "svn info gives more info about the state of trunk."
echo
echo "<passphrase> 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"