fix: enforce alpha versioning (0.0.x), delete erroneous 0.1.x releases
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>
This commit is contained in:
69
scripts/version-bump.sh
Executable file
69
scripts/version-bump.sh
Executable file
@@ -0,0 +1,69 @@
|
||||
#!/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."
|
||||
Reference in New Issue
Block a user