#!/bin/bash

export V=$1
export DZIL_RELEASE=1

# Ensure release version is explicit
if [ ! -n "$V" ]; then
  echo 'No release version!' && exit 0;
fi

# Check the repo is in ready-state
if ! git diff-index --quiet HEAD --; then
  echo "Uncommitted changes!" && exit 0;
fi

# Test fake build before release
if ! dzil test; then
  echo "Build test failed!" && exit 0;
fi

# Cleanup the mess
dzil clean

# Delete existing release tag (if exists)
git tag -d latest $V 2> /dev/null
git push origin :refs/tags/latest :refs/tags/$V 2> /dev/null

# Persist Release VERSION
echo $V > VERSION

# Delete existing POD documents
find lib -type f -name \*.pod -exec rm {} \;

# Regenerate all necessary POD documents
testauto -o lib -t TEMPLATE

# Push generated POD changes
if ! git diff-index --quiet HEAD --; then
  git add . && git commit -m 'Added release updates'
fi

# Build, Tag, and Push Package Release
dzil release

# Tag as CPAN for releasing
git tag latest 2> /dev/null

# Re-push all tags (just in case)
git push --tags 2> /dev/null