Files
artemis-kit/scripts/release.sh
T
warkanum e01f38ab39 RELEASING: Releasing 1 package(s)
Releases:
  @warkypublic/artemis-kit@1.1.1

[skip ci]
2026-09-23 22:21:22 +02:00

55 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Creates a changeset from commits since the last one, versions the
# package, tags the result, and pushes the tag to the git remote.
set -euo pipefail
BUMP="${BUMP:-patch}"
case "$BUMP" in
patch|minor|major) ;;
*) echo "BUMP must be patch, minor, or major (got: $BUMP)" >&2; exit 1 ;;
esac
PACKAGE_NAME=$(node -p "require('./package.json').name")
LAST_CHANGESET_COMMIT=$(git log -1 --format=%H -- '.changeset/*.md' || true)
if [ -n "$LAST_CHANGESET_COMMIT" ]; then
RANGE="${LAST_CHANGESET_COMMIT}..HEAD"
else
RANGE="HEAD"
fi
COMMITS=$(git log --format='- %s' "$RANGE" -- . ':!.changeset')
if [ -z "$COMMITS" ]; then
echo "No commits found since the last changeset ($RANGE); nothing to release." >&2
exit 1
fi
CHANGESET_FILE=".changeset/release-$(date +%Y%m%d%H%M%S).md"
{
echo "---"
echo "\"$PACKAGE_NAME\": $BUMP"
echo "---"
echo
echo "$COMMITS"
} > "$CHANGESET_FILE"
echo "Created $CHANGESET_FILE:"
cat "$CHANGESET_FILE"
pnpm changeset version
NEW_VERSION=$(node -p "require('./package.json').version")
TAG="v${NEW_VERSION}"
if git rev-parse "$TAG" >/dev/null 2>&1; then
echo "Tag $TAG already exists" >&2
exit 1
fi
git add -A
git commit -m "RELEASING: Releasing 1 package(s)"
git tag "$TAG"
git push origin HEAD "$TAG"
echo "Released and pushed $TAG"