Files
gdown/scripts/version-bump.sh

55 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT_DIR"
TAURI_CONF="src-tauri/tauri.conf.json"
PKG_JSON="package.json"
CARGO_TOML="src-tauri/Cargo.toml"
if [ ! -f "$TAURI_CONF" ] || [ ! -f "$PKG_JSON" ] || [ ! -f "$CARGO_TOML" ]; then
echo "[version-bump] required files are missing"
exit 1
fi
CURRENT_VERSION="$(node -e "const fs=require('fs');const j=JSON.parse(fs.readFileSync('$TAURI_CONF','utf8'));process.stdout.write(String(j.version||''));")"
if ! echo "$CURRENT_VERSION" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "[version-bump] invalid version format in $TAURI_CONF: $CURRENT_VERSION"
exit 1
fi
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION"
NEW_VERSION="${MAJOR}.${MINOR}.$((PATCH + 1))"
echo "[version-bump] $CURRENT_VERSION -> $NEW_VERSION"
node -e "
const fs = require('fs');
const files = ['$PKG_JSON', '$TAURI_CONF'];
for (const file of files) {
const json = JSON.parse(fs.readFileSync(file, 'utf8'));
json.version = '$NEW_VERSION';
fs.writeFileSync(file, JSON.stringify(json, null, 2) + '\n');
}
"
awk -v new_ver="$NEW_VERSION" '
BEGIN { in_package=0; done=0 }
/^\[package\]/ { in_package=1; print; next }
/^\[/ {
if ($0 != "[package]") in_package=0
}
{
if (in_package && !done && $1 == "version") {
sub(/"[^"]+"/, "\"" new_ver "\"")
done=1
}
print
}
' "$CARGO_TOML" > "$CARGO_TOML.tmp"
mv "$CARGO_TOML.tmp" "$CARGO_TOML"
echo "[version-bump] updated package.json / tauri.conf.json / Cargo.toml"