Public Access
65 lines
1.9 KiB
Bash
Executable File
65 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
usage() {
|
|
echo "Usage: $0 VERSION (for example: 0.30)"
|
|
}
|
|
|
|
if [[ ${1:-} == "-h" || ${1:-} == "--help" ]]; then
|
|
usage
|
|
exit 0
|
|
fi
|
|
|
|
if [[ $# -ne 1 || ! $1 =~ ^[0-9]+\.[0-9]+(\.[0-9]+)?$ ]]; then
|
|
usage >&2
|
|
exit 2
|
|
fi
|
|
|
|
version=$1
|
|
tag="v$version"
|
|
root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
|
|
cd "$root"
|
|
|
|
if [[ -n $(git status --porcelain) ]]; then
|
|
echo "Release requires a clean working tree." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if git rev-parse -q --verify "refs/tags/$tag" >/dev/null; then
|
|
echo "Tag $tag already exists." >&2
|
|
exit 1
|
|
fi
|
|
|
|
command -v dch >/dev/null || { echo "Install devscripts to use dch." >&2; exit 1; }
|
|
command -v dpkg-parsechangelog >/dev/null || { echo "Install dpkg-dev to use dpkg-parsechangelog." >&2; exit 1; }
|
|
|
|
current_version=$(dpkg-parsechangelog --show-field Version)
|
|
if [[ $current_version == "$version" ]]; then
|
|
echo "debian/changelog already has version $version." >&2
|
|
exit 1
|
|
fi
|
|
|
|
dch --newversion "$version" --distribution stable --force-distribution
|
|
sed -i "s/^__version__ = .*/__version__ = \"$version\"/" src/damaris/__init__.py
|
|
|
|
if [[ $(dpkg-parsechangelog --show-field Version) != "$version" ]] ||
|
|
[[ $(sed -n 's/^__version__ = "\([^"]*\)"$/\1/p' src/damaris/__init__.py) != "$version" ]]; then
|
|
echo "Release version did not update consistently; inspect the changelog and package version." >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "About to commit the version bump and create tag $tag."
|
|
read -r -p "Continue? [y/N] " answer
|
|
if [[ ! $answer =~ ^[Yy]$ ]]; then
|
|
echo "Release preparation stopped; version and changelog edits were kept."
|
|
exit 1
|
|
fi
|
|
|
|
git add debian/changelog src/damaris/__init__.py
|
|
git commit -m "Release $tag"
|
|
git tag -a "$tag" -m "Release $tag"
|
|
|
|
echo "Created local release tag $tag. Push the commit and tag to start the package workflow."
|
|
echo " git push origin HEAD"
|
|
echo " git push origin $tag" |