Files
soft_quay/scripts/gitea-mcp.ps1
T
ilaandClaude Fable 5 0184595ccc
Harness governance / validate (push) Has been cancelled
Add harness coding docs for SoftBox (Go + Gio dual-build)
Initialize the full harness coding document set from the
harness_coding_docs template, customized for the SoftBox project:

- Vision, requirements, tech stack (modern Go 1.25 + Gio v0.10.1;
  Win7 legacy Go 1.20.14 + Gio v0.6.0), architecture, coding rules
- Protocol contracts (signed catalog, package protocol v1, Ed25519
  license, events, CLI) and Gio view structure
- Roadmap Phase 0-6 with 20 suggested tasks; T-001 (monorepo
  skeleton) filed and ready to claim
- Agent entry points (AGENTS.md, docs/00-ai-start-here.md),
  context manifest, governance scripts and tests
- Merge Go gitignore with harness rules; keep go.work tracked

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 14:33:54 +08:00

95 lines
2.7 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env pwsh
[CmdletBinding()]
param(
[string]$EnvFile = $(
if ($env:GITEA_ENV_FILE) {
$env:GITEA_ENV_FILE
} else {
Join-Path $HOME ".codex/gitea.env"
}
),
[string]$Version = "0.5.1",
[switch]$CheckConfig,
[Parameter(ValueFromRemainingArguments = $true)]
[string[]]$ServerArgs
)
$ErrorActionPreference = "Stop"
$utf8 = [System.Text.UTF8Encoding]::new($false)
[Console]::OutputEncoding = $utf8
$OutputEncoding = $utf8
if (-not (Test-Path -LiteralPath $EnvFile -PathType Leaf)) {
throw "Gitea MCP 配置文件不存在:$EnvFile"
}
$values = @{}
foreach ($rawLine in Get-Content -LiteralPath $EnvFile) {
$line = $rawLine.Trim()
if (-not $line -or $line.StartsWith("#")) {
continue
}
$pair = $line -split "=", 2
if ($pair.Count -ne 2) {
throw "Gitea MCP 配置行必须使用 KEY=VALUE 格式。"
}
$values[$pair[0].Trim()] = $pair[1].Trim()
}
foreach ($name in @("GITEA_URL", "GITEA_TOKEN")) {
if (-not $values.ContainsKey($name) -or [string]::IsNullOrWhiteSpace($values[$name])) {
throw "$name 未配置或为空。"
}
}
try {
$giteaUri = [Uri]$values["GITEA_URL"]
} catch {
throw "GITEA_URL 不是有效 URL。"
}
if ($giteaUri.Scheme -notin @("http", "https")) {
throw "GITEA_URL 只支持 http 或 https。"
}
if ($giteaUri.AbsolutePath.Trim("/") -ne "") {
throw "GITEA_URL 必须填写实例根地址,不要包含 /api/v1;gitea-mcp 会自动追加 API 路径。"
}
if ($giteaUri.Scheme -eq "http" -and $values["GITEA_ALLOW_INSECURE_HTTP"] -ne "1") {
throw "当前使用 HTTP。确认接受 Token 明文传输风险后,在私有配置中设置 GITEA_ALLOW_INSECURE_HTTP=1。"
}
foreach ($entry in $values.GetEnumerator()) {
if ($entry.Key -like "GITEA_*") {
Set-Item -Path "Env:$($entry.Key)" -Value $entry.Value
}
}
$noProxyEntries = @($env:NO_PROXY -split "," | ForEach-Object { $_.Trim() } | Where-Object { $_ })
if ($noProxyEntries -notcontains $giteaUri.Host) {
$noProxyEntries += $giteaUri.Host
}
$env:NO_PROXY = $noProxyEntries -join ","
$env:no_proxy = $env:NO_PROXY
if ($values["GITEA_DIRECT"] -eq "1") {
foreach ($proxyVariable in @("ALL_PROXY", "all_proxy", "HTTP_PROXY", "http_proxy", "HTTPS_PROXY", "https_proxy")) {
Remove-Item -Path "Env:$proxyVariable" -ErrorAction SilentlyContinue
}
}
if ($CheckConfig) {
Write-Output "Gitea MCP 配置有效:URL=$($giteaUri.GetLeftPart([UriPartial]::Authority)),Token 已设置,版本=$Version。"
exit 0
}
$uvx = Get-Command uvx -ErrorAction Stop
$stderrLog = Join-Path ([IO.Path]::GetTempPath()) "gitea-mcp-$PID.stderr.log"
& $uvx.Source --from "gitea-mcp==$Version" gitea-mcp @ServerArgs 2>> $stderrLog
exit $LASTEXITCODE