75 lines
2.5 KiB
PowerShell
75 lines
2.5 KiB
PowerShell
#requires -Version 7
|
|
<#
|
|
.SYNOPSIS
|
|
一键提交并推送到自建 Gitea 远程(jzy/my_wiki)。
|
|
|
|
.DESCRIPTION
|
|
固化推送流程:可选先运行 wiki-audit.ps1 审计门禁,然后
|
|
git add -A -> commit -> push gitea main,最后显示同步状态。
|
|
不修改任何知识正文,只负责版本控制操作。
|
|
|
|
.PARAMETER Message
|
|
提交信息。缺省时自动生成 "maintain | YYYY-MM-DD Wiki 增量更新"。
|
|
|
|
.PARAMETER Audit
|
|
推送前先运行 tools/wiki-audit.ps1;审计存在 ERROR 时中止推送。
|
|
|
|
.PARAMETER FailOnWarning
|
|
与 -Audit 配合使用:将审计 WARNING 也视为失败(严格门禁)。
|
|
|
|
.EXAMPLE
|
|
pwsh -File .\tools\wiki-push.ps1 -Message "ingest | 8 月焦煤日报登记"
|
|
pwsh -File .\tools\wiki-push.ps1 -Audit -Message "维护后推送"
|
|
#>
|
|
param(
|
|
[string]$Message = '',
|
|
[switch]$Audit,
|
|
[switch]$FailOnWarning
|
|
)
|
|
|
|
$ErrorActionPreference = 'Stop'
|
|
$root = Split-Path -Parent $PSScriptRoot
|
|
Set-Location $root
|
|
|
|
# 1) 可选审计门禁:ERROR 阻断,WARNING 默认放行(-FailOnWarning 时也阻断)
|
|
if ($Audit) {
|
|
$auditArgs = @('-NoProfile', '-File', (Join-Path $root 'tools\wiki-audit.ps1'))
|
|
if ($FailOnWarning) { $auditArgs += '-FailOnWarning' }
|
|
& pwsh @auditArgs
|
|
if ($LASTEXITCODE -ne 0) {
|
|
Write-Error "审计未通过(exit $LASTEXITCODE),已中止推送。"
|
|
exit 1
|
|
}
|
|
Write-Host '[1/4] 审计通过。' -ForegroundColor Green
|
|
} else {
|
|
Write-Host '[1/4] 跳过审计(使用 -Audit 可在推送前执行)。' -ForegroundColor DarkGray
|
|
}
|
|
|
|
# 2) 检查变更
|
|
$changes = git status --porcelain
|
|
if (-not $changes) {
|
|
Write-Host '[2/4] 没有待提交的变更,无需推送。' -ForegroundColor Yellow
|
|
exit 0
|
|
}
|
|
Write-Host "[2/4] 待提交变更 $((($changes | Measure-Object).Count)) 项。" -ForegroundColor Cyan
|
|
$changes | ForEach-Object { Write-Host " $_" -ForegroundColor DarkGray }
|
|
|
|
# 3) 提交
|
|
if (-not $Message) {
|
|
$Message = "maintain | $(Get-Date -Format 'yyyy-MM-dd') Wiki 增量更新"
|
|
}
|
|
git add -A
|
|
git commit -m $Message
|
|
if ($LASTEXITCODE -ne 0) { Write-Error 'git commit 失败。'; exit 1 }
|
|
Write-Host '[3/4] 提交完成。' -ForegroundColor Green
|
|
|
|
# 4) 推送(唯一远程 gitea,显式指定分支)
|
|
git push gitea main
|
|
if ($LASTEXITCODE -ne 0) { Write-Error 'git push 失败,请检查网络与凭据(.git/config 中的 token)。'; exit 1 }
|
|
Write-Host '[4/4] 推送完成。' -ForegroundColor Green
|
|
|
|
# 5) 结果
|
|
git status -sb | Select-Object -First 1
|
|
Write-Host "推送内容:$Message"
|
|
exit 0
|