mise-action/scripts/release-plz.sh

53 lines
1.5 KiB
Bash
Executable file

#!/usr/bin/env bash
# shellcheck shell=bash
set -euxo pipefail
# Get current version from package.json
cur_version="$(jq -r .version package.json)"
# Check if this version has already been released
released_versions="$(git tag --list | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+(-rc\.[0-9]+)?$')"
if echo "$released_versions" | grep -q "^v$cur_version$"; then
echo "Version v$cur_version already released"
exit 0
fi
# Get the next version and changelog from git-cliff
version="$(git cliff --bumped-version)"
changelog="$(git cliff --bump --unreleased | tail -n +2)"
if [ "${DRY_RUN:-1}" == 1 ]; then
echo "version: $version"
echo "changelog: $changelog"
exit 0
fi
# Configure git for automated commits
git config user.name mise-en-dev
git config user.email 123107610+mise-en-dev@users.noreply.github.com
# Update package.json version if it's different
if [ "$cur_version" != "${version#v}" ]; then
npm version "${version#v}" --no-git-tag-version
else
echo "Version $cur_version is already current, no changes to release"
exit 0
fi
git add package.json package-lock.json
git status
# Create release branch and commit
git checkout -B release
git commit -m "chore: release $version"
# Push to release branch
git push origin release --force
# Create or update PR
if gh pr create --title "chore: release $version" --body "$changelog" --label "release"; then
echo "Created new release PR"
else
gh pr edit --title "chore: release $version" --body "$changelog"
echo "Updated existing release PR"
fi