lib/actions/base/ReleaseRemediationAction.ps1
|
############################################################################# # ReleaseRemediationAction.ps1 - Base Class for Release Actions ############################################################################# # This class provides common functionality for release-related actions. # It includes helpers for handling unfixable errors and issue status. ############################################################################# class ReleaseRemediationAction : RemediationAction { [string]$TagName ReleaseRemediationAction([string]$description, [string]$tagName) : base($description, $tagName) { $this.TagName = $tagName } # Helper method to check if an API result indicates unfixable error (422 - tag used by immutable release) hidden [bool] IsUnfixableError([hashtable]$result) { return $result.ContainsKey('Unfixable') -and $result.Unfixable -eq $true } # Helper method to mark an issue as unfixable hidden [void] MarkAsUnfixable([RepositoryState]$state, [string]$issueType, [string]$message) { Write-Host "✗ Unfixable: $message" # Find this issue in the state and mark it as unfixable $issue = $state.Issues | Where-Object { $_.Version -eq $this.TagName -and $_.Type -eq $issueType } | Select-Object -First 1 if ($issue) { $issue.Status = "unfixable" $issue.Message = $message } } # Helper method to mark an issue as requiring manual intervention hidden [void] MarkAsManualFixRequired([RepositoryState]$state, [string]$issueType, [string]$message) { Write-Host "⚠ Manual fix required: $message" # Find this issue in the state and mark it as manual_fix_required $issue = $state.Issues | Where-Object { $_.Version -eq $this.TagName -and $_.Type -eq $issueType } | Select-Object -First 1 if ($issue) { $issue.Status = "manual_fix_required" $issue.Message = $message } } # Helper method to check if issue is unfixable (for GetManualCommands) hidden [bool] IsIssueUnfixable([RepositoryState]$state, [string]$issueType) { $issue = $state.Issues | Where-Object { $_.Version -eq $this.TagName -and $_.Type -eq $issueType } | Select-Object -First 1 return $issue -and $issue.Status -eq "unfixable" } # Helper method to check if issue requires manual fix (for GetManualCommands) hidden [bool] IsIssueManualFixRequired([RepositoryState]$state, [string]$issueType) { $issue = $state.Issues | Where-Object { $_.Version -eq $this.TagName -and $_.Type -eq $issueType } | Select-Object -First 1 return $issue -and $issue.Status -eq "manual_fix_required" } } |