SurfSense/scripts/bump-version.ps1
2026-04-08 02:20:20 -07:00

82 lines
2.6 KiB
PowerShell

$ErrorActionPreference = "Stop"
$RepoRoot = (Resolve-Path "$PSScriptRoot\..").Path
$VersionFile = Join-Path $RepoRoot "VERSION"
if (-not (Test-Path $VersionFile)) {
Write-Error "VERSION file not found at $VersionFile"
exit 1
}
$Version = (Get-Content $VersionFile -Raw).Trim()
if ($Version -notmatch '^\d+\.\d+\.\d+(-[a-zA-Z0-9.]+)?$') {
Write-Error "'$Version' is not valid semver (expected X.Y.Z)"
exit 1
}
Write-Host "Bumping all packages to $Version"
Write-Host "---------------------------------"
function Bump-Json {
param([string]$File)
if (-not (Test-Path $File)) {
Write-Host " SKIP $File (not found)"
return
}
$content = Get-Content $File -Raw
$match = [regex]::Match($content, '"version"\s*:\s*"([^"]*)"')
if (-not $match.Success) {
Write-Host " SKIP $File (no version field found)"
return
}
$old = $match.Groups[1].Value
if ($old -eq $Version) {
Write-Host " OK $File ($old -- already up to date)"
} else {
$content = $content -replace [regex]::Escape("`"version`": `"$old`""), "`"version`": `"$Version`""
Set-Content $File -Value $content -NoNewline
Write-Host " SET $File ($old -> $Version)"
}
}
function Bump-Toml {
param([string]$File)
if (-not (Test-Path $File)) {
Write-Host " SKIP $File (not found)"
return
}
$content = Get-Content $File -Raw
$match = [regex]::Match($content, '(?m)^version\s*=\s*"([^"]*)"')
if (-not $match.Success) {
Write-Host " SKIP $File (no version field found)"
return
}
$old = $match.Groups[1].Value
if ($old -eq $Version) {
Write-Host " OK $File ($old -- already up to date)"
} else {
$content = $content -replace ('(?m)^version\s*=\s*"' + [regex]::Escape($old) + '"'), "version = `"$Version`""
Set-Content $File -Value $content -NoNewline
Write-Host " SET $File ($old -> $Version)"
}
}
Bump-Json (Join-Path $RepoRoot "surfsense_web\package.json")
Bump-Json (Join-Path $RepoRoot "surfsense_browser_extension\package.json")
Bump-Json (Join-Path $RepoRoot "surfsense_desktop\package.json")
Bump-Toml (Join-Path $RepoRoot "surfsense_backend\pyproject.toml")
Write-Host ""
Write-Host "Syncing lock files..."
if (Get-Command uv -ErrorAction SilentlyContinue) {
Push-Location (Join-Path $RepoRoot "surfsense_backend")
uv lock
Pop-Location
Write-Host " OK surfsense_backend/uv.lock"
} else {
Write-Host " SKIP uv not found -- run 'uv lock' in surfsense_backend/ manually"
}
Write-Host "---------------------------------"
Write-Host "Done. All packages set to $Version"