199a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel#!/bin/bash
299a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
399a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelfunction help_and_exit() {
499a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo "Usage: $0 [-go] [-verbose] [-force]"
599a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo
699a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo "Moves minified CSS and JS to distribution directories and"
799a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo "creates a branch in SVN."
899a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo
999a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo "  -go:       Run commands instead of just echoing them."
1099a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo "  -verbose:  More verbose logging."
1199a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo "  -force:    Ignore sanity checks for testing."
1299a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo "             Incompatible with -go."
1399a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo "  -nobranch: Don't create a new release branch."
1499a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    exit "$1"
1599a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel}
1699a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
1799a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel# 1 for verbose logging
1899a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelexport VERBOSE="0"
1999a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel# 1 if commands that have side-effects should actually be run instead of logged
2099a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelexport EFFECT="0"
2199a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
2299a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelfor var in "$@"; do
2399a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel  case "$var" in
2499a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel      -verbose)
2599a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel          VERBOSE="1"
2699a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel          ;;
2799a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel      -go)
2899a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel          EFFECT="1"
2999a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel          ;;
3099a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel      -h)
3199a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel          help_and_exit 0
3299a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel          ;;
3399a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel      *)
3499a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel          echo "Unrecognized argument $var"
3599a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel          help_and_exit -1
3699a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel          ;;
3799a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel  esac
3899a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamueldone
3999a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
4099a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
4199a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelfunction panic() {
4299a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo "PANIC: $*"
4399a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
4499a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    if ! (( $NO_PANIC )); then
4599a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel        exit -1
4699a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    fi
4799a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel}
4899a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
4999a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelfunction command() {
5099a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    if (( $VERBOSE )) || ! (( $EFFECT )); then
5199a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel        echo '$' "$*"
5299a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    fi
5399a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    if (( $EFFECT )); then
5499a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel        "$@" || panic "command failed: $@"
5599a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    fi
5699a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel}
5799a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
5899a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelexport VERSION_BASE="$(
5999a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel  pushd "$(dirname "$0")/../.." > /dev/null; pwd; popd > /dev/null)"
6099a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
6199a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelif ! [ -d "$VERSION_BASE/trunk/tools" ]; then
6299a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    panic "missing trunk/tools in $VERSION_BASE"
6399a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelfi
6499a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
6599a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelVERSION="$(svn info | perl -ne 'print $1 if m/^Revision: (\d+)$/')"
6699a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
6799a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelDOWNLOADS_ZIP="$VERSION_BASE/trunk/out/owasp-java-html-sanitizer.zip"
6899a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelVERSIONED_ZIP="$VERSION_BASE/trunk/out/owasp-java-html-sanitizer-r$VERSION.zip"
6999a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
7099a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelpushd "$VERSION_BASE/trunk" > /dev/null
7199a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelcommand make download
7299a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelpopd > /dev/null
7399a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
7499a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelif ! [ -f "$DOWNLOADS_ZIP" ]; then
7599a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    panic "$DOWNLOADS_ZIP is not up-to-date"
7699a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelfi
7799a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
7899a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelcommand cp "$DOWNLOADS_ZIP" "$VERSIONED_ZIP"
7999a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
8099a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelcommand "$VERSION_BASE/trunk/tools/googlecode_upload.py" \
8199a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    --summary="JARs, source JAR, and documentation for version $VERSION." \
8299a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    -p owasp-java-html-sanitizer -u mikesamuel \
8399a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    --labels='Type-Archive,OpSys-All,Featured' \
8499a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    "$VERSIONED_ZIP"
8599a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel
8699a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelif (( $EFFECT )); then
8799a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo "Don't forget to mark any old ones deprecated at"
8899a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo "https://code.google.com/p/owasp-java-html-sanitizer/downloads/list"
8999a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelelse
9099a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo
9199a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuel    echo "Rerun with -go to actually run these commands."
9299a0c4cf9d0def45624a8edcd36297acd89d06cdmikesamuelfi
93