set -e
next_version="$1"
if [[ -z "${next_version}" ]]; then
echo "Next version missing; aborting"
exit 1
fi
changes="$(git status --porcelain)"
if [[ -n "${changes}" ]]; then
git status
echo "Working directory not clean; aborting"
exit 1
fi
if [[ "$(git symbolic-ref --short HEAD)" != "main" ]]; then
echo "Not on main branch; aborting"
exit 1
fi
ci_status="$(hub ci-status HEAD || true)"
if [[ "${ci_status}" != "success" ]]; then
echo "CI for HEAD pending or failed (${ci_status}); aborting"
exit 1
fi
latest_version="$(git tag --sort '-v:refname' | grep '^mdcat-' | head -n1 | cut -d'-' -f2)"
release_date="$(date +%Y-%m-%d)"
sed -i'' "1,/^version =/ s/^version = .*$/version = \"${next_version}\"/" Cargo.toml
cargo metadata --format-version 1 >/dev/null
git add Cargo.toml Cargo.lock
sed -i'' "1,/^:revnumber:/ s/^:revnumber: .*$/:revnumber: ${next_version}/" mdcat.1.adoc
sed -i'' "1,/^:revdate:/ s/^:revdate: .*$/:revdate: ${release_date}/" mdcat.1.adoc
git add mdcat.1.adoc
sed -e "/^## \[Unreleased\]\$/ a\\
\\
## [${next_version}] – ${release_date}" \
-e "\$a\\
[${next_version}]: https://github.com/lunaryorn/mdcat/compare/mdcat-${latest_version}...mdcat-${next_version}\\
[Unreleased]: https://github.com/lunaryorn/mdcat/compare/mdcat-${next_version}...HEAD" \
-e '/^\[Unreleased\]:/ D' \
-i'' CHANGELOG.md
git add CHANGELOG.md
git commit -m "Release ${next_version}"
git tag -m "mdcat ${next_version}" "mdcat-${next_version}"
cargo publish --no-verify
git push --follow-tags origin main