Files
yovision/init.ps1
T
QiuSW a5f4cbed6f
Harness governance / validate (push) Has been cancelled
docs: adopt harness coding workflow
2026-08-03 22:18:02 +08:00

53 lines
2.2 KiB
PowerShell

#!/usr/bin/env pwsh
# 标准启动与验证入口(Windows PowerShell 版),与 init.sh 等价,二选一:
# - Windows 原生 PowerShell:用本文件 ./init.ps1
# - WSL / Git Bash / macOS / Linux:用 ./init.sh
# 一条命令完成:依赖安装 -> 基础验证 -> 打印启动命令。
# 复制到新项目后,必须先替换下面三个命令,让每轮会话用同一条路径启动,不靠记忆。
# 本文件不绑定任何技术栈;换技术栈时只替换这三个命令,脚本结构不用动。
$ErrorActionPreference = "Stop"
Set-Location -Path $PSScriptRoot
# 当前仍是文档/契约基线:没有业务依赖和可启动服务,标准入口先收敛治理验证。
# M1 创建 Sense 脚手架时必须把真实安装、验证、启动命令同步到本文档链路。
$InstallCmd = "Write-Host '当前无业务依赖需要安装'"
$VerifyCmd = "python scripts/validate_agent_context.py; if (`$LASTEXITCODE -ne 0) { exit `$LASTEXITCODE }; python -m unittest discover -s tests -p 'test_*.py'; if (`$LASTEXITCODE -ne 0) { exit `$LASTEXITCODE }; python scripts/validate_harness_governance.py; if (`$LASTEXITCODE -ne 0) { exit `$LASTEXITCODE }"
$StartCmd = "Write-Host '当前无生产服务;请从 Gitea 工单开始 M0/M1 工作'"
function Assert-Configured {
param(
[string]$Name,
[string]$Value
)
if ($Value -like "__REPLACE_*") {
Write-Error "请先在 init.ps1 中替换 $Name。同步更新 docs/03-tech-stack.md、docs/00-ai-start-here.md 和 docs/current-state.md 中的命令。"
exit 2
}
}
Assert-Configured -Name "InstallCmd" -Value $InstallCmd
Assert-Configured -Name "VerifyCmd" -Value $VerifyCmd
Assert-Configured -Name "StartCmd" -Value $StartCmd
Write-Host "==> 当前目录: $($PWD.Path)"
Write-Host "==> 同步依赖"
Invoke-Expression $InstallCmd
Write-Host "==> 运行基础验证"
Invoke-Expression $VerifyCmd
Write-Host "==> 启动命令"
Write-Host " $StartCmd"
if ($env:RUN_START_COMMAND -eq "1") {
Write-Host "==> 启动应用"
Invoke-Expression $StartCmd
} else {
Write-Host "如果希望 init.ps1 直接启动应用,请设置环境变量 RUN_START_COMMAND=1。"
Write-Host "如果基础验证失败,先修复基线状态,不要在坏的起点上继续叠新功能。"
}