Files
ForgeFlow/setup-windows.ps1
T
NuklearRabbit 4ad698c4eb Release ForgeFlow 0.8.1
Add advanced Git and deployment workflows, secure backups and auditing, live Gitea integration, desktop notifications, connection validation, and the premium responsive UX refresh.
2026-07-26 00:42:17 +02:00

48 lines
2.0 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. Read START_HERE.md for prerequisites."
}
}
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 self-service setup" -ForegroundColor Cyan
Write-Host "No Gitea token, SSH key or server password is requested by this script." -ForegroundColor DarkGray
Assert-Command node
Assert-Command npm
Assert-Command git
$nodeVersionText = (node --version).Trim()
$nodeMajor = [int]($nodeVersionText.TrimStart('v').Split('.')[0])
if ($nodeMajor -lt 22) { throw "Node.js 22 or newer is required. Detected: $nodeVersionText" }
Write-Host "Node: $nodeVersionText" -ForegroundColor DarkGray
Write-Host "npm: $((npm --version).Trim())" -ForegroundColor DarkGray
Write-Host "Git: $((git --version).Trim())" -ForegroundColor DarkGray
Invoke-Step "Installing exact project dependencies..." {
if (-not (Test-Path ".\package-lock.json")) { throw "package-lock.json is required for a reproducible ForgeFlow installation." }
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