56 lines
1.5 KiB
Bash
Executable File
56 lines
1.5 KiB
Bash
Executable File
#!/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"
|