45 lines
1.3 KiB
PowerShell
45 lines
1.3 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 (Todo, In Progress, Done).
|
|
.PARAMETER IssueNumber
|
|
Die Issue-Nummer (z.B. 68).
|
|
.PARAMETER Status
|
|
Der Zielstatus: "Todo", "InProgress" oder "Done".
|
|
#>
|
|
param(
|
|
[Parameter(Mandatory)][int]$IssueNumber,
|
|
[Parameter(Mandatory)][ValidateSet("Todo","InProgress","Done")][string]$Status
|
|
)
|
|
|
|
$projectId = "PVT_kwHOCFqiJ84BWFbQ"
|
|
$statusFieldId = "PVTSSF_lAHOCFqiJ84BWFbQzhRcfAE"
|
|
|
|
$statusMap = @{
|
|
"Todo" = "f75ad846"
|
|
"InProgress" = "47fc9ee4"
|
|
"Done" = "98236657"
|
|
}
|
|
|
|
$optionId = $statusMap[$Status]
|
|
|
|
# Item-ID im Board finden
|
|
$items = gh project item-list 1 --owner jreinemann-euris --format json --limit 200 | ConvertFrom-Json
|
|
$item = $items.items | Where-Object { $_.content.number -eq $IssueNumber } | Select-Object -First 1
|
|
|
|
if (-not $item) {
|
|
Write-Error "Issue #$IssueNumber nicht im Project Board gefunden."
|
|
exit 1
|
|
}
|
|
|
|
$itemId = $item.id
|
|
|
|
gh project item-edit --project-id $projectId --id $itemId --field-id $statusFieldId --single-select-option-id $optionId 2>&1 | Out-Null
|
|
if ($LASTEXITCODE -eq 0) {
|
|
Write-Host "Issue #$IssueNumber → $Status"
|
|
} else {
|
|
Write-Error "Fehler beim Setzen des Status für Issue #$IssueNumber."
|
|
exit 1
|
|
}
|