diff --git a/tools/build-zip.sh b/tools/build-zip.sh new file mode 100755 index 00000000..b5ddea62 --- /dev/null +++ b/tools/build-zip.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -e + +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 ) +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/(\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 +git_tag=$( git tag --points-at HEAD ) +if [ -z "${git_tag}" ]; then + echo "Unable to extract git tag" + exit 1 +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:run.sh > ${build_dir}/run.sh + +printf "{\n}\n" > ${build_dir}/settings.json + +touch -d ${commit_ts%%+??:??} ${build_dir} ${build_dir}/* + +rm -f ${saved_pwd}/${project}.zip +(cd ${build_dir}/..; 7z a -r -tzip ${saved_pwd}/${project}-${git_tag#v}.zip ${project}/)