bollwerk/.github/skills/gh-tickets/set-board-status.ps1
Jens Reinemann 95e262d009 chore: Backlog-Status in Board-Skripten ergaenzen
- set-board-status.ps1: 'Backlog' (4ce6ee37) als gueltigen Status erganzt
- create-next-ticket.ps1: -Status Parameter (Todo|Backlog, Default: Todo)
  Todo: Order = min - 1 (naechstes Ticket)
  Backlog: Order = max + 10 (ans Ende gestellt)
  Explizite Status-Setzung via gh project item-edit nach Board-Add
2026-05-17 01:51:18 +02:00

61 lines
2 KiB
PowerShell

<#
.SYNOPSIS
Setzt den Board-Status eines Issues im GitHub Project Board.
.DESCRIPTION
Ermittelt die Item-ID des Issues im Board und setzt den Status
auf den angegebenen Wert.
Akzeptierte Werte: "Todo", "InProgress" (oder "In Progress"), "Done", "Backlog".
.PARAMETER IssueNumber
Die Issue-Nummer (z.B. 68).
.PARAMETER Status
Der Zielstatus: "Todo", "InProgress", "In Progress" oder "Done".
#>
param(
[Parameter(Mandatory)][int]$IssueNumber,
[Parameter(Mandatory)][string]$Status
)
$projectId = "PVT_kwHOCFqiJ84BXk9U"
$statusFieldId = "PVTSSF_lAHOCFqiJ84BXk9UzhSw4es"
# Normalisierung: "In Progress" → "InProgress" (robust gegen Agent-Varianten)
$normalizedStatus = $Status.Trim() -replace '\s+', ''
# "InProgress" nach Kleinschreibung angleichen an Map-Schlüssel
$statusMap = @{
"Todo" = "f75ad846"
"InProgress" = "47fc9ee4"
"Done" = "98236657"
"Backlog" = "4ce6ee37"
}
if (-not $statusMap.ContainsKey($normalizedStatus)) {
$valid = $statusMap.Keys -join ", "
Write-Error "Ungültiger Status '$Status'. Gültige Werte: $valid (auch 'In Progress' für InProgress, 'Backlog' für Backlog)."
exit 1
}
$optionId = $statusMap[$normalizedStatus]
# Item-ID im Board finden
$raw = gh project item-list 2 --owner jreinemann-euris --format json --limit 200 2>&1
if ($LASTEXITCODE -ne 0) {
Write-Error "Fehler beim Abrufen des Project Boards: $raw"
exit 1
}
$items = $raw | ConvertFrom-Json
$item = $items.items | Where-Object { $null -ne $_.content -and $_.content.number -eq $IssueNumber } | Select-Object -First 1
if (-not $item) {
Write-Error "Issue #$IssueNumber nicht im Project Board gefunden. Bitte zuerst mit 'gh project item-add' hinzufügen."
exit 1
}
$itemId = $item.id
$editOutput = gh project item-edit --project-id $projectId --id $itemId --field-id $statusFieldId --single-select-option-id $optionId 2>&1
if ($LASTEXITCODE -eq 0) {
Write-Host "Issue #$IssueNumber$normalizedStatus"
}
else {
Write-Error "Fehler beim Setzen des Status für Issue #${IssueNumber}: $editOutput"
exit 1
}