2026-07-16 14:33:43 +08:00
#!/usr/bin/env pwsh
# 标准启动与验证入口(Windows PowerShell 版),与 init.sh 等价,二选一:
# - Windows 原生 PowerShell:用本文件 ./init.ps1
# - WSL / Git Bash / macOS / Linux:用 ./init.sh
# 一条命令完成:依赖安装 -> 基础验证 -> 打印启动命令。
2026-07-16 15:28:13 +08:00
# 三个命令是仓库统一入口;换工具链时同步更新文档与这里。
2026-07-16 14:33:43 +08:00
$ErrorActionPreference = "Stop"
2026-07-16 15:51:34 +08:00
$Utf8 = [ System.Text.UTF8Encoding ]:: new ( $false )
[ Console ]:: OutputEncoding = $Utf8
$OutputEncoding = $Utf8
2026-07-16 14:33:43 +08:00
Set-Location -Path $PSScriptRoot
2026-07-16 21:27:52 +08:00
$InstallCmd = '$env:GOTOOLCHAIN="go1.25.0"; $env:GOWORK=(Resolve-Path "go.work").Path; go work sync; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; $env:GOWORK=(Resolve-Path "app-win7/go.work").Path; go work sync'
2026-07-16 15:51:34 +08:00
$VerifyCmd = "./scripts/verify_phase0.ps1"
2026-07-16 21:27:52 +08:00
$StartCmd = '$env:CGO_ENABLED="0"; $env:GOOS="windows"; $env:GOARCH="amd64"; $env:GOTOOLCHAIN="go1.25.0"; $env:GOWORK=(Resolve-Path "go.work").Path; go build -C app-modern -trimpath "-ldflags=-H=windowsgui" -o ../dist/SoftBox.exe ./cmd/softbox; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; $env:GOTOOLCHAIN="go1.20.14"; $env:GOWORK=(Resolve-Path "app-win7/go.work").Path; go build -C app-win7 -trimpath "-ldflags=-H=windowsgui" -o ../dist/SoftBox-win7.exe ./cmd/softbox'
2026-07-16 14:33:43 +08:00
Write-Host "==> 当前目录: $( $PWD . Path ) "
Write-Host "==> 同步依赖"
Invoke-Expression $InstallCmd
2026-07-16 21:27:52 +08:00
if ( $LASTEXITCODE -ne 0 ) {
exit $LASTEXITCODE
}
2026-07-16 14:33:43 +08:00
Write-Host "==> 运行基础验证"
Invoke-Expression $VerifyCmd
2026-07-16 21:27:52 +08:00
if ( $LASTEXITCODE -ne 0 ) {
exit $LASTEXITCODE
}
2026-07-16 14:33:43 +08:00
Write-Host "==> 启动命令"
Write-Host " $StartCmd "
if ( $env:RUN_START_COMMAND -eq "1" ) {
Write-Host "==> 启动应用"
Invoke-Expression $StartCmd
2026-07-16 21:27:52 +08:00
if ( $LASTEXITCODE -ne 0 ) {
exit $LASTEXITCODE
}
2026-07-16 14:33:43 +08:00
} else {
Write-Host "如果希望 init.ps1 直接启动应用,请设置环境变量 RUN_START_COMMAND=1。"
Write-Host "如果基础验证失败,先修复基线状态,不要在坏的起点上继续叠新功能。"
}