Add advanced Git and deployment workflows, secure backups and auditing, live Gitea integration, desktop notifications, connection validation, and the premium responsive UX refresh.
48 lines
2.0 KiB
PowerShell
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
|