#!/usr/bin/env bash
set -e
# Optional git tag?
if [ $# -ge 1 ] ; then
git_tag = " $1 "
shift
fi
saved_pwd = $PWD
# Check we are within a git repo
git_dir = $( git rev-parse --show-toplevel )
if [ -z " ${ git_dir } " ] ; then
echo "Cannot determine top-level directory for git repo"
exit 1
fi
# Change to git top-level
cd ${ git_dir }
# Check we are in 'master' branch
# branch_name=$( git symbolic-ref -q HEAD ) || echo "Cannot determine branch name" && exit 1
# branch_name=${branch_name##refs/heads/}
# echo "Current git branch: ${branch_name}"
# if [ "${branch_name}" != "master" ]; then
# echo "Unexpected current branch '${branch_name}' - expecting 'master'"
# exit 1
# fi
# Determine project name
project = $( perl -n -e 'if (m/<artifactId>(\w+)<.artifactId>/) { print $1; exit }' pom.xml $)
if [ -z " ${ project } " ] ; then
echo "Unable to determine project name from pom.xml?"
exit 1
fi
# Extract git tag
if [ -z " ${ git_tag } " ] ; then
git_tag = $( git tag --points-at HEAD )
if [ -z " ${ git_tag } " ] ; then
echo "Unable to extract git tag"
exit 1
fi
fi
build_dir = /tmp/${ project }
commit_ts = $( git show --no-patch --format= %cI )
/bin/rm -fr ${ build_dir }
mkdir -p ${ build_dir }
cp target/${ project } *.jar ${ build_dir } /${ project } .jar
git show HEAD:log4j2.properties > ${ build_dir } /log4j2.properties
git show HEAD:start.sh > ${ build_dir } /start.sh
git show HEAD:stop.sh > ${ build_dir } /stop.sh
printf "{\n}\n" > ${ build_dir } /settings.json
gtouch -d ${ commit_ts %%+?? : ?? } ${ build_dir } ${ build_dir } /*
rm -f ${ saved_pwd } /${ project } .zip
( cd ${ build_dir } /..; 7z a -r -tzip ${ saved_pwd } /${ project } .zip ${ project } /)