68 lines
1.9 KiB
Makefile
68 lines
1.9 KiB
Makefile
|
towncrier_cmd := "pipx run towncrier==24.7.0"
|
||
|
|
||
|
_default:
|
||
|
@{{just_executable()}} --choose
|
||
|
|
||
|
# Add a new changelog entry using towncrier
|
||
|
add-changelog:
|
||
|
{{towncrier_cmd}} create --edit
|
||
|
git add changelog.d
|
||
|
|
||
|
# Create a new release
|
||
|
make-new-release:
|
||
|
#!/usr/bin/env bash
|
||
|
set -euo pipefail
|
||
|
|
||
|
get_next_version_number() {
|
||
|
DATEPART=$(date +%y.%-m)
|
||
|
ITERATION=0
|
||
|
|
||
|
while true; do
|
||
|
VERSION_STRING="${DATEPART}.${ITERATION}"
|
||
|
if git rev-list "v$VERSION_STRING" > /dev/null 2>&1; then
|
||
|
((ITERATION++))
|
||
|
else
|
||
|
echo "$VERSION_STRING"
|
||
|
return
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
git add .
|
||
|
if ! git diff-index --quiet HEAD; then
|
||
|
printf "Working directory is not clean. Please commit or stash your changes.\n"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
VERSION=$(get_next_version_number)
|
||
|
COMMITMSG=$(mktemp --tmpdir commitmsg.XXXXXXXXXX)
|
||
|
trap 'rm "$COMMITMSG"' EXIT
|
||
|
set -x
|
||
|
|
||
|
cargo set-version "${VERSION}"
|
||
|
|
||
|
# Construct a git commit message.
|
||
|
# This must be done before the next step so we can leverage the --draft
|
||
|
# flag here to get a list of changes being introduced by this release.
|
||
|
printf "Release v${VERSION}\n\n" > "$COMMITMSG"
|
||
|
{{towncrier_cmd}} build --draft --version "${VERSION}" >> "$COMMITMSG"
|
||
|
|
||
|
# Generate changelog and docs
|
||
|
{{towncrier_cmd}} build --version "${VERSION}"
|
||
|
docs/generate.sh
|
||
|
|
||
|
# Stage all the changes we've prepared
|
||
|
git add .
|
||
|
# There are likely trailing whitespace changes in the changelog, but a single
|
||
|
# run of pre-commit will fix these automatically.
|
||
|
pre-commit run || git add .
|
||
|
|
||
|
git commit --file "$COMMITMSG"
|
||
|
git tag "v${VERSION}"
|
||
|
|
||
|
set +x
|
||
|
printf "\n\nSuccessfully created release %s\n" "v${VERSION}"
|
||
|
printf "\nYou'll probably want to continue with:\n"
|
||
|
printf "\tgit push origin main\n"
|
||
|
printf "\tgit push origin %s\n" "v${VERSION}"
|