diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..6c6aa7c --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.1.0 \ No newline at end of file diff --git a/scripts/bump-version.sh b/scripts/bump-version.sh new file mode 100755 index 0000000..e989707 --- /dev/null +++ b/scripts/bump-version.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" +VERSION_FILE="$PROJECT_ROOT/VERSION" + +if [ $# -ge 1 ]; then + echo "$1" > "$VERSION_FILE" +fi + +if [ ! -f "$VERSION_FILE" ]; then + echo "ERROR: VERSION file not found at $VERSION_FILE" >&2 + exit 1 +fi + +VERSION=$(cat "$VERSION_FILE") + +# Sanitize: strip leading v/V, trim whitespace +VERSION=$(echo "$VERSION" | sed 's/^[vV]//' | tr -d '[:space:]') + +# Validate semver (X.Y.Z) +if ! echo "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then + echo "ERROR: '$VERSION' is not valid semver (expected X.Y.Z)" >&2 + exit 1 +fi + +echo "Bumping to version $VERSION" + +# 1. package.json +cd "$PROJECT_ROOT" +npm pkg set "version=$VERSION" --json 2>/dev/null || npm pkg set "version=$VERSION" +echo " ✓ package.json" + +# 2. src-tauri/Cargo.toml — update [package] version (first version = line) +sed -i '' "s/^version = \".*\"/version = \"$VERSION\"/" "$PROJECT_ROOT/src-tauri/Cargo.toml" +echo " ✓ src-tauri/Cargo.toml" + +# 3. src-tauri/tauri.conf.json +node -e " + const fs = require('fs'); + const path = '$PROJECT_ROOT/src-tauri/tauri.conf.json'; + const conf = JSON.parse(fs.readFileSync(path, 'utf8')); + conf.version = '$VERSION'; + fs.writeFileSync(path, JSON.stringify(conf, null, 2) + '\n'); +" +echo " ✓ src-tauri/tauri.conf.json" + +# 4. Sync Cargo.lock +cd "$PROJECT_ROOT/src-tauri" +cargo generate-lockfile 2>/dev/null +echo " ✓ src-tauri/Cargo.lock" + +echo "" +echo "Done — all manifests set to $VERSION"