Add simple release script to automate tag generation

This commit is contained in:
Gwilym Kuiper 2021-06-20 23:03:10 +01:00
parent 75490dedc0
commit 6c1b2786ec

66
release.sh Executable file
View file

@ -0,0 +1,66 @@
#!/usr/bin/env bash
# Fail if any command fails
set -e
PROJECT=$1
VERSION=$2
# Sanity check that we actually have a version
if [ "$VERSION" = "" ]; then
echo "Usage $0 <project> <version>"
exit 1
fi
# Set up $DIRECTORY and $TAGNAME
case "$PROJECT" in
agb)
DIRECTORY="agb"
TAGNAME="v$VERSION"
;;
agb-image-converter)
DIRECTORY="agb-image-converter"
TAGNAME="agb-image-converter/v$VERSION"
;;
mgba-test-runner)
DIRECTORY="mgba-test-runner"
TAGNAME="mgba-test-runner/v$VERSION"
;;
*)
echo "Unknown project name $PROJECT"
exit 1
;;
esac
# Check that no out-standing changes in git
if [ ! -z "$(git status --porcelain)" ]; then
echo "Uncommitted changes, please commit first"
exit 1
fi
# Sanity check to make sure the build works
(cd agb && cargo test)
(cd agb-image-converter && cargo test)
# Update the version in Cargo.toml
sed -i -e "s/^version = .*/version = $VERSION/" "$DIRECTORY/Cargo.toml"
# Also update the lock file
(cd "$DIRECTORY" && cargo update)
git add "$DIRECTIORY/Cargo.toml"
if [ "$PROJECT" = "agb" ]; then
# also update the agb version in the template
sed -i -e "s/agb = \"\(.*\)\"/$VERSION/" template/Cargo.toml
git add template/Cargo.toml
fi
# Commit the Cargo.toml changes
git commit -m "Release $PROJECT v$VERSION"
# Tag the version
git tag -a $TAGNAME -m "$PROJECT - v$VERSION"
echo "Done! Push with"
echo "git push origin $TAGNAME"