gcli2api / start.ps1
a3216's picture
chore: 同步到上游 1.12.0-panel + 凭证同步/独立启动器/保活
6d60378 verified
Raw History Blame Contribute Delete
2.44 kB
<#
.SYNOPSIS
WorkBuddy2API 引导脚本(Windows)。
.DESCRIPTION
只做一件事:**没有二进制就编译,然后把控制权交给 wb2api-launcher.exe**。
真正的启动逻辑(先同步凭证 → 再拉起网关 → 后台定时对账 → 转发中断信号)
只有一份,在 cmd/launcher 里,不在脚本里重复一遍——两套实现迟早会漂移。
不想依赖 Go?直接从发布页下载 `wb2api-launcher-windows-amd64.exe` 与
`wb2api.exe` 放进同一目录,把启动器重命名为 wb2api-launcher.exe,然后双击即可。
本脚本检测到二进制已存在时会自动跳过编译。
.EXAMPLE
.\start.ps1 # 同步 + 启动网关 + 后台对账
.\start.ps1 -status # 只看两边差异,不启动网关
.\start.ps1 -no-sync # 离线启动
.\start.ps1 -h # 看启动器全部选项
#>
[CmdletBinding()]
param(
# 其余参数原样透传给 wb2api-launcher.exe
[Parameter(ValueFromRemainingArguments = $true)]
[string[]]$Args
)
$ErrorActionPreference = 'Stop'
$root = if ($PSScriptRoot) { $PSScriptRoot } else { (Get-Location).Path }
Set-Location $root
# Windows 控制台默认代码页会把中文写成乱码(尤其在重定向日志时),显式切 UTF-8。
try {
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
} catch {
# 某些宿主不允许改编码,忽略即可,不影响功能。
}
$serverBin = Join-Path $root 'wb2api.exe'
$launcherBin = Join-Path $root 'wb2api-launcher.exe'
function Need-Go([string]$what) {
if (-not (Get-Command go -ErrorAction SilentlyContinue)) {
throw "找不到 go,无法编译 $what。请安装 Go,或直接下载预编译二进制放到 $root"
}
}
if (-not (Test-Path $serverBin)) {
Need-Go 'wb2api'
Write-Host '[start] 编译网关 wb2api.exe ...' -ForegroundColor Cyan
& go build -o $serverBin ./cmd/server
if ($LASTEXITCODE -ne 0) { throw '编译 wb2api 失败' }
}
if (-not (Test-Path $launcherBin)) {
Need-Go 'wb2api-launcher'
Write-Host '[start] 编译启动器 wb2api-launcher.exe ...' -ForegroundColor Cyan
& go build -o $launcherBin ./cmd/launcher
if ($LASTEXITCODE -ne 0) { throw '编译 wb2api-launcher 失败' }
}
# 把控制权完全交给启动器;它的退出码原样透出。
& $launcherBin @Args
exit $LASTEXITCODE