boost/libs/hana/util/release.sh

67 lines
2.5 KiB
Bash
Raw Permalink Normal View History

2021-10-05 21:37:46 +02:00
#!/usr/bin/env bash
set -e
PROGNAME="$(basename "${0}")"
function usage() {
cat <<EOF
Usage:
${PROGNAME} <next-version>
This script merges 'develop' to 'master' and tags a release on the 'master'
branch. It then bumps the version on 'develop' to the next planned version.
<next-version> must be of the form X.Y.Z, where X, Y and Z are numbers.
This script should be run from the root of the repository without any
uncommitted changes.
EOF
}
for arg in $@; do
if [[ "${arg}" == "-h" || "${arg}" == "--help" ]]; then
usage
exit 0
fi
done
if [[ $# -ne 1 ]]; then
echo "Missing the version"
usage
exit 1
fi
next_version="${1}"
next_major="$(echo ${next_version} | cut -d '.' -f 1)"
next_minor="$(echo ${next_version} | cut -d '.' -f 2)"
next_patch="$(echo ${next_version} | cut -d '.' -f 3)"
if [[ -z "${next_major}" || -z "${next_minor}" || -z "${next_patch}" ]]; then
echo "The version was specified incorrectly"
usage
exit 1
fi
current_major="$(sed -n -E 's/#define BOOST_HANA_MAJOR_VERSION ([0-9]+)/\1/p' include/boost/hana/version.hpp)"
current_minor="$(sed -n -E 's/#define BOOST_HANA_MINOR_VERSION ([0-9]+)/\1/p' include/boost/hana/version.hpp)"
current_patch="$(sed -n -E 's/#define BOOST_HANA_PATCH_VERSION ([0-9]+)/\1/p' include/boost/hana/version.hpp)"
current_version="${current_major}.${current_minor}.${current_patch}"
git checkout --quiet master
git merge --quiet develop -m "Merging 'develop' into 'master' for ${current_version}"
echo "Merged 'develop' into 'master' -- you should push 'master' when ready"
tag="v${current_major}.${current_minor}.${current_patch}"
git tag -a --file=RELEASE_NOTES.md "${tag}"
echo "Created tag ${tag} on 'master' -- you should push it when ready"
git checkout --quiet develop
sed -i '' -E "s/#define BOOST_HANA_MAJOR_VERSION [0-9]+/#define BOOST_HANA_MAJOR_VERSION ${next_major}/" include/boost/hana/version.hpp
sed -i '' -E "s/#define BOOST_HANA_MINOR_VERSION [0-9]+/#define BOOST_HANA_MINOR_VERSION ${next_minor}/" include/boost/hana/version.hpp
sed -i '' -E "s/#define BOOST_HANA_PATCH_VERSION [0-9]+/#define BOOST_HANA_PATCH_VERSION ${next_patch}/" include/boost/hana/version.hpp
cat <<EOF > RELEASE_NOTES.md
Release notes for Hana ${next_version}
============================
EOF
git add include/boost/hana/version.hpp RELEASE_NOTES.md
git commit --quiet -m "Bump version of Hana to ${next_version} and clear release notes"
echo "Bumped the version of Hana on 'develop' to ${next_version} -- you should push 'develop' when ready"