#!/bin/sh

if [ $# -lt 1 ] || [ $# -gt 2 ]; then
  echo 'Usage: ./publish.sh TAG [MESSAGE]' >&2
  exit 1
fi

if [ "$(git diff --stat)" != '' ]; then
  echo 'ERROR: repository is dirty.' >&2
  exit 1
fi

TAG="$1"
MESSAGE="$2"

if [ "$(git tag -l | grep -e "^$TAG$")" != '' ]; then
  echo "ERROR: tag $TAG already exists." >&2
  exit 1
fi

if [ "$MESSAGE" != '' ]; then
  git tag -a -s -m "$MESSAGE" "$TAG"
else
  git tag -a -s "$TAG"
fi

git push --tags

./gradlew publishListing
./gradlew publish
