60 lines
1.7 KiB
Bash
Executable File
60 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# release.sh - Deploys a new version of the Kantine Wrapper
|
|
|
|
# Ensure we're in the script directory
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
# Ensure tests have run and artifacts exist
|
|
if [ ! -d "$SCRIPT_DIR/dist" ]; then
|
|
echo "❌ Error: dist folder missing. Please run build-bookmarklet.sh first"
|
|
exit 1
|
|
fi
|
|
|
|
# Get current version
|
|
VERSION=$(cat "version.txt" | tr -d '\n\r ')
|
|
|
|
# Validate that version is set
|
|
if [ -z "$VERSION" ]; then
|
|
echo "❌ Error: Could not determine version from version.txt"
|
|
exit 1
|
|
fi
|
|
|
|
echo "=== Kantine Bookmarklet Releaser ($VERSION) ==="
|
|
|
|
# Check for uncommitted changes (excluding dist/)
|
|
if ! git diff-index --quiet HEAD -- ":(exclude)dist"; then
|
|
echo "⚠️ Warning: You have uncommitted changes in the working directory."
|
|
echo "Please commit your code changes before running the release script."
|
|
exit 1
|
|
fi
|
|
|
|
echo "=== Committing build artifacts ==="
|
|
git add "dist/"
|
|
git commit -m "chore: update build artifacts for $VERSION" --allow-empty
|
|
|
|
echo ""
|
|
echo "=== Tagging $VERSION ==="
|
|
if git rev-parse "$VERSION" >/dev/null 2>&1; then
|
|
git tag -f "$VERSION"
|
|
echo "🔄 Tag $VERSION moved to current commit."
|
|
else
|
|
git tag "$VERSION"
|
|
echo "✅ Created tag: $VERSION"
|
|
fi
|
|
|
|
echo ""
|
|
echo "=== Pushing to remotes ==="
|
|
# Determine remote targets: Assume 'origin' for primary, optionally 'github'
|
|
git push origin HEAD
|
|
git push origin --force tag "$VERSION"
|
|
|
|
# If a remote named 'github' exists, push branch and tags there too
|
|
if git remote | grep -q "^github$"; then
|
|
git push github HEAD
|
|
git push github --force tag "$VERSION"
|
|
fi
|
|
|
|
echo "🎉 Successfully released version $VERSION!"
|
|
exit 0
|