Deleted v0.1.0, v0.1.1, v0.1.3 tags and Gitea releases — project is alpha and should never have crossed 0.1.0. All package.json files synced to 0.0.20. Added version-bump.sh script that hard-rejects any version >= 0.1.0. Added versioning hard gate to AGENTS.md so agents cannot repeat the mistake. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
70 lines
1.9 KiB
Bash
Executable File
70 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# version-bump.sh — Bump version across all workspace packages
|
|
#
|
|
# Usage:
|
|
# scripts/version-bump.sh <new-version>
|
|
# scripts/version-bump.sh 0.0.21
|
|
#
|
|
# Enforces:
|
|
# - Version MUST be 0.0.x (alpha constraint)
|
|
# - All package.json files are updated atomically
|
|
# - Rejects 0.1.0+ until explicitly unlocked
|
|
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
|
|
if [[ $# -ne 1 ]]; then
|
|
echo "Usage: $0 <version>"
|
|
echo "Example: $0 0.0.21"
|
|
exit 1
|
|
fi
|
|
|
|
NEW_VERSION="$1"
|
|
|
|
# Hard gate: alpha constraint (0.0.x only)
|
|
if [[ ! "$NEW_VERSION" =~ ^0\.0\.[0-9]+$ ]]; then
|
|
echo "ERROR: Version must be 0.0.x (alpha). Got: $NEW_VERSION"
|
|
echo ""
|
|
echo "This project is in ALPHA. Versions >= 0.1.0 are not allowed."
|
|
echo "If this constraint needs to change, update AGENTS.md and this script."
|
|
exit 1
|
|
fi
|
|
|
|
# Patch number must be > 0
|
|
PATCH="${NEW_VERSION##0.0.}"
|
|
if [[ "$PATCH" -lt 1 ]]; then
|
|
echo "ERROR: Patch version must be >= 1. Got: $NEW_VERSION"
|
|
exit 1
|
|
fi
|
|
|
|
# Find all package.json files in the monorepo
|
|
PACKAGE_FILES=(
|
|
"$REPO_ROOT/package.json"
|
|
)
|
|
|
|
for dir in "$REPO_ROOT"/apps/*/package.json "$REPO_ROOT"/packages/*/package.json; do
|
|
[[ -f "$dir" ]] && PACKAGE_FILES+=("$dir")
|
|
done
|
|
|
|
echo "Bumping all packages to $NEW_VERSION"
|
|
echo ""
|
|
|
|
for pkg in "${PACKAGE_FILES[@]}"; do
|
|
REL_PATH="${pkg#"$REPO_ROOT"/}"
|
|
OLD_VERSION=$(grep -o '"version": "[^"]*"' "$pkg" | head -1 | cut -d'"' -f4)
|
|
# Use node for reliable JSON editing (preserves formatting better than sed)
|
|
node -e "
|
|
const fs = require('fs');
|
|
const path = '$pkg';
|
|
const raw = fs.readFileSync(path, 'utf8');
|
|
const updated = raw.replace(/\"version\": \"[^\"]*\"/, '\"version\": \"$NEW_VERSION\"');
|
|
fs.writeFileSync(path, updated);
|
|
"
|
|
echo " $REL_PATH: $OLD_VERSION -> $NEW_VERSION"
|
|
done
|
|
|
|
echo ""
|
|
echo "Done. $NEW_VERSION applied to ${#PACKAGE_FILES[@]} packages."
|
|
echo "Next steps: commit, tag (v$NEW_VERSION), push."
|