# docs/ ins Gitea-Wiki schieben. # # Aufruf: pwsh -File tools\wiki.ps1 # # WARUM DIE DATEIEN IM REPO LIEGEN UND NICHT NUR IM WIKI. Ein Wiki hat keinen # Zusammenhang mit dem Code: niemand sieht, ob die Anleitung noch zu dem passt, # was der Dienst tut. Unter docs/ wandert sie im selben Commit mit der # Aenderung, die sie beschreibt — und dieses Skript traegt sie danach hinaus. # # Die Richtung ist bewusst EINSEITIG: docs/ ist die Quelle, das Wiki die Kopie. # Wer im Wiki tippt, verliert es beim naechsten Lauf. Das ist unschoen, aber # ehrlicher als zwei Quellen, die auseinanderlaufen. # # DAS WIKI MUSS EINMAL EXISTIEREN. Gitea legt das Wiki-Repo erst mit der ersten # Seite an; ein Klon davor antwortet mit 500. Angelegt wurde es ueber die API # (POST /api/v1/repos///wiki/new) — danach ist es ein # gewoehnliches Git-Repo. [CmdletBinding()] param( [string]$Wiki = 'https://git.d4rkst3r.de/D4rkst3r/d4rk_media.wiki.git', [string]$Quelle = 'docs' ) $ErrorActionPreference = 'Stop' function Gut($t) { Write-Host " $t" -ForegroundColor Green } $dateien = Get-ChildItem $Quelle -Filter '*.md' if (-not $dateien) { Write-Host " Nichts in $Quelle" -ForegroundColor Yellow; exit 0 } $tmp = Join-Path $env:TEMP ("wiki-" + [guid]::NewGuid().ToString('N').Substring(0, 8)) git clone --quiet $Wiki $tmp if ($LASTEXITCODE -ne 0) { Write-Host ' Klon fehlgeschlagen. Gibt es das Wiki schon? (Erste Seite ueber die Oberflaeche anlegen.)' -ForegroundColor Red exit 1 } foreach ($d in $dateien) { Copy-Item $d.FullName (Join-Path $tmp $d.Name) -Force Gut $d.Name } Push-Location $tmp git add -A # Nichts geaendert ist kein Fehler: dann steht das Wiki schon richtig da. $status = git status --porcelain if (-not $status) { Pop-Location Remove-Item $tmp -Recurse -Force Gut 'Das Wiki ist bereits aktuell.' exit 0 } git commit --quiet -m ("Anleitung aus docs/ — " + (Get-Date -Format 'yyyy-MM-dd HH:mm')) git push --quiet $ok = $LASTEXITCODE -eq 0 Pop-Location Remove-Item $tmp -Recurse -Force if ($ok) { Gut 'Ins Wiki geschoben.' } else { Write-Host ' Push fehlgeschlagen.' -ForegroundColor Red; exit 1 }