Add advanced Git and deployment workflows, secure backups and auditing, live Gitea integration, desktop notifications, connection validation, and the premium responsive UX refresh.
36 lines
1.6 KiB
PowerShell
36 lines
1.6 KiB
PowerShell
$ErrorActionPreference = "Stop"
|
|
Set-StrictMode -Version Latest
|
|
Set-Location $PSScriptRoot
|
|
|
|
function Assert-Command {
|
|
param([Parameter(Mandatory = $true)][string]$Name)
|
|
if (-not (Get-Command $Name -ErrorAction SilentlyContinue)) { throw "Required command '$Name' was not found on PATH." }
|
|
}
|
|
function Invoke-Step {
|
|
param([Parameter(Mandatory = $true)][string]$Title, [Parameter(Mandatory = $true)][scriptblock]$Action)
|
|
Write-Host "`n$Title" -ForegroundColor Yellow
|
|
& $Action
|
|
if ($LASTEXITCODE -ne 0) { throw "$Title failed with exit code $LASTEXITCODE." }
|
|
}
|
|
|
|
$package = Get-Content ".\package.json" -Raw | ConvertFrom-Json
|
|
$version = [string]$package.version
|
|
if ($package.name -ne "forgeflow" -or [string]::IsNullOrWhiteSpace($version)) { throw "This folder is not a valid ForgeFlow source release." }
|
|
|
|
Write-Host "ForgeFlow v$version source update" -ForegroundColor Cyan
|
|
Write-Host "Your Gitea token, repository mappings and deployment profiles are stored outside this source folder and are not reset." -ForegroundColor DarkGray
|
|
Assert-Command node
|
|
Assert-Command npm
|
|
Assert-Command git
|
|
|
|
Invoke-Step "Installing exact project dependencies..." {
|
|
if (-not (Test-Path ".\package-lock.json")) { throw "package-lock.json is required for a reproducible ForgeFlow update." }
|
|
npm ci --no-audit --no-fund
|
|
}
|
|
Invoke-Step "Running the environment doctor..." { npm run doctor }
|
|
Invoke-Step "Running source verification and automated tests..." { npm run check }
|
|
|
|
Write-Host "`nForgeFlow v$version is ready." -ForegroundColor Green
|
|
Write-Host "Starting ForgeFlow with your existing local configuration..." -ForegroundColor Green
|
|
npm start
|