From 6011414300097bfe4f44de84d3ba13f0cd4b7a37 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 09:46:19 +0000 Subject: [PATCH 01/14] Initial plan From a022de517042953cc068b8d45330a0bc666e021d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 09:47:54 +0000 Subject: [PATCH 02/14] Remove Australia region from status functions Co-authored-by: MariusStorhaug <17722253+MariusStorhaug@users.noreply.github.com> --- .../public/Status/Get-GitHubScheduledMaintenance.ps1 | 2 +- src/functions/public/Status/Get-GitHubStatus.ps1 | 2 +- src/functions/public/Status/Get-GitHubStatusComponent.ps1 | 2 +- src/functions/public/Status/Get-GitHubStatusIncident.ps1 | 2 +- src/variables/private/StatusBaseURL.ps1 | 7 +++---- tests/GitHub.Tests.ps1 | 2 +- 6 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 b/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 index cdf08cde3..40f680301 100644 --- a/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 +++ b/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 @@ -54,7 +54,7 @@ # The stamp to check status for. [Parameter()] - [ValidateSet('Public', 'Europe', 'Australia', 'US')] + [ValidateSet('Public', 'Europe', 'US')] [string] $Stamp = 'Public' ) diff --git a/src/functions/public/Status/Get-GitHubStatus.ps1 b/src/functions/public/Status/Get-GitHubStatus.ps1 index 94ac1dec6..6d5943c13 100644 --- a/src/functions/public/Status/Get-GitHubStatus.ps1 +++ b/src/functions/public/Status/Get-GitHubStatus.ps1 @@ -42,7 +42,7 @@ # The stamp to check status for. [Parameter()] - [ValidateSet('Public', 'Europe', 'Australia', 'US')] + [ValidateSet('Public', 'Europe', 'US')] [string] $Stamp = 'Public' ) begin { diff --git a/src/functions/public/Status/Get-GitHubStatusComponent.ps1 b/src/functions/public/Status/Get-GitHubStatusComponent.ps1 index 10d341740..d5d63f02e 100644 --- a/src/functions/public/Status/Get-GitHubStatusComponent.ps1 +++ b/src/functions/public/Status/Get-GitHubStatusComponent.ps1 @@ -26,7 +26,7 @@ param( # The stamp to check status for. [Parameter()] - [ValidateSet('Public', 'Europe', 'Australia', 'US')] + [ValidateSet('Public', 'Europe', 'US')] [string] $Stamp = 'Public' ) diff --git a/src/functions/public/Status/Get-GitHubStatusIncident.ps1 b/src/functions/public/Status/Get-GitHubStatusIncident.ps1 index fc89706de..7efd91e3d 100644 --- a/src/functions/public/Status/Get-GitHubStatusIncident.ps1 +++ b/src/functions/public/Status/Get-GitHubStatusIncident.ps1 @@ -41,7 +41,7 @@ # The stamp to check status for. [Parameter()] - [ValidateSet('Public', 'Europe', 'Australia', 'US')] + [ValidateSet('Public', 'Europe', 'US')] [string] $Stamp = 'Public' ) diff --git a/src/variables/private/StatusBaseURL.ps1 b/src/variables/private/StatusBaseURL.ps1 index a5ddbabdd..bc7bf32ec 100644 --- a/src/variables/private/StatusBaseURL.ps1 +++ b/src/variables/private/StatusBaseURL.ps1 @@ -1,6 +1,5 @@ $script:StatusBaseURL = @{ - Public = 'https://www.githubstatus.com' - Europe = 'https://eu.githubstatus.com' - Australia = 'https://au.githubstatus.com' - US = 'https://us.githubstatus.com' + Public = 'https://www.githubstatus.com' + Europe = 'https://eu.githubstatus.com' + US = 'https://us.githubstatus.com' } diff --git a/tests/GitHub.Tests.ps1 b/tests/GitHub.Tests.ps1 index 177d53235..6641c7141 100644 --- a/tests/GitHub.Tests.ps1 +++ b/tests/GitHub.Tests.ps1 @@ -283,7 +283,7 @@ Describe 'GitHub' { $runnerData | Should -Not -BeNullOrEmpty } } - Context 'Status' -ForEach @('Public', 'Europe', 'Australia', 'US') { + Context 'Status' -ForEach @('Public', 'Europe', 'US') { It 'Get-GitHubScheduledMaintenance - Gets scheduled maintenance for <_>' { { Get-GitHubScheduledMaintenance -Stamp $_ } | Should -Not -Throw } From c6ae5b65617b4627fa827975d095868de1fbaac9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 10:25:20 +0000 Subject: [PATCH 03/14] Convert Stamp parameter ValidateSet to argument completers Co-authored-by: MariusStorhaug <17722253+MariusStorhaug@users.noreply.github.com> --- src/completers.ps1 | 26 +++++++++++++++++++ .../Status/Get-GitHubScheduledMaintenance.ps1 | 1 - .../public/Status/Get-GitHubStatus.ps1 | 1 - .../Status/Get-GitHubStatusComponent.ps1 | 1 - .../Status/Get-GitHubStatusIncident.ps1 | 1 - 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/completers.ps1 b/src/completers.ps1 index 9cc61195a..c43bd0e01 100644 --- a/src/completers.ps1 +++ b/src/completers.ps1 @@ -49,3 +49,29 @@ Register-ArgumentCompleter -CommandName Connect-GitHubApp -ParameterName Enterpr [System.Management.Automation.CompletionResult]::new($_.Target.Name, $_.Target.Name, 'ParameterValue', $_.Target.Name) } } + +# Status functions - Stamp parameter completer +$statusStampCompleter = { + param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) + $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters + + if (-not $script:StatusBaseURL) { + return $null + } + + $pattern = switch (Get-GitHubConfig -Name CompletionMode) { 'Contains' { "*$wordToComplete*" } default { "$wordToComplete*" } } + $filteredOptions = $script:StatusBaseURL.Keys | Where-Object { $_ -like $pattern } + + if (-not $filteredOptions) { + return $null + } + + $filteredOptions | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) + } +} + +Register-ArgumentCompleter -CommandName Get-GitHubStatus -ParameterName Stamp -ScriptBlock $statusStampCompleter +Register-ArgumentCompleter -CommandName Get-GitHubScheduledMaintenance -ParameterName Stamp -ScriptBlock $statusStampCompleter +Register-ArgumentCompleter -CommandName Get-GitHubStatusComponent -ParameterName Stamp -ScriptBlock $statusStampCompleter +Register-ArgumentCompleter -CommandName Get-GitHubStatusIncident -ParameterName Stamp -ScriptBlock $statusStampCompleter diff --git a/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 b/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 index 40f680301..e19ea0f41 100644 --- a/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 +++ b/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 @@ -54,7 +54,6 @@ # The stamp to check status for. [Parameter()] - [ValidateSet('Public', 'Europe', 'US')] [string] $Stamp = 'Public' ) diff --git a/src/functions/public/Status/Get-GitHubStatus.ps1 b/src/functions/public/Status/Get-GitHubStatus.ps1 index 6d5943c13..bd64a4fc1 100644 --- a/src/functions/public/Status/Get-GitHubStatus.ps1 +++ b/src/functions/public/Status/Get-GitHubStatus.ps1 @@ -42,7 +42,6 @@ # The stamp to check status for. [Parameter()] - [ValidateSet('Public', 'Europe', 'US')] [string] $Stamp = 'Public' ) begin { diff --git a/src/functions/public/Status/Get-GitHubStatusComponent.ps1 b/src/functions/public/Status/Get-GitHubStatusComponent.ps1 index d5d63f02e..bcf20db07 100644 --- a/src/functions/public/Status/Get-GitHubStatusComponent.ps1 +++ b/src/functions/public/Status/Get-GitHubStatusComponent.ps1 @@ -26,7 +26,6 @@ param( # The stamp to check status for. [Parameter()] - [ValidateSet('Public', 'Europe', 'US')] [string] $Stamp = 'Public' ) diff --git a/src/functions/public/Status/Get-GitHubStatusIncident.ps1 b/src/functions/public/Status/Get-GitHubStatusIncident.ps1 index 7efd91e3d..0131cb05d 100644 --- a/src/functions/public/Status/Get-GitHubStatusIncident.ps1 +++ b/src/functions/public/Status/Get-GitHubStatusIncident.ps1 @@ -41,7 +41,6 @@ # The stamp to check status for. [Parameter()] - [ValidateSet('Public', 'Europe', 'US')] [string] $Stamp = 'Public' ) From 74c8ef68061b0140ac1820b4c248c47e35564b8b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 10:40:17 +0000 Subject: [PATCH 04/14] Move Stamps from private variable to GitHub.Stamps property Co-authored-by: MariusStorhaug <17722253+MariusStorhaug@users.noreply.github.com> --- src/completers.ps1 | 4 ++-- .../public/Status/Get-GitHubScheduledMaintenance.ps1 | 2 +- src/functions/public/Status/Get-GitHubStatus.ps1 | 2 +- src/functions/public/Status/Get-GitHubStatusComponent.ps1 | 2 +- src/functions/public/Status/Get-GitHubStatusIncident.ps1 | 2 +- src/variables/private/GitHub.ps1 | 5 +++++ src/variables/private/StatusBaseURL.ps1 | 5 ----- 7 files changed, 11 insertions(+), 11 deletions(-) delete mode 100644 src/variables/private/StatusBaseURL.ps1 diff --git a/src/completers.ps1 b/src/completers.ps1 index c43bd0e01..1f17001d4 100644 --- a/src/completers.ps1 +++ b/src/completers.ps1 @@ -55,12 +55,12 @@ $statusStampCompleter = { param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters - if (-not $script:StatusBaseURL) { + if (-not $script:GitHub.Stamps) { return $null } $pattern = switch (Get-GitHubConfig -Name CompletionMode) { 'Contains' { "*$wordToComplete*" } default { "$wordToComplete*" } } - $filteredOptions = $script:StatusBaseURL.Keys | Where-Object { $_ -like $pattern } + $filteredOptions = $script:GitHub.Stamps.Keys | Where-Object { $_ -like $pattern } if (-not $filteredOptions) { return $null diff --git a/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 b/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 index e19ea0f41..78e3c7618 100644 --- a/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 +++ b/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 @@ -63,7 +63,7 @@ } process { - $baseURL = $script:StatusBaseURL[$Stamp] + $baseURL = $script:GitHub.Stamps[$Stamp] if ($Active) { $APIURI = "$baseURL/api/v2/scheduled-maintenances/active.json" diff --git a/src/functions/public/Status/Get-GitHubStatus.ps1 b/src/functions/public/Status/Get-GitHubStatus.ps1 index bd64a4fc1..19cba2c07 100644 --- a/src/functions/public/Status/Get-GitHubStatus.ps1 +++ b/src/functions/public/Status/Get-GitHubStatus.ps1 @@ -50,7 +50,7 @@ } process { - $baseURL = $script:StatusBaseURL[$Stamp] + $baseURL = $script:GitHub.Stamps[$Stamp] if ($Summary) { $APIURI = "$baseURL/api/v2/summary.json" diff --git a/src/functions/public/Status/Get-GitHubStatusComponent.ps1 b/src/functions/public/Status/Get-GitHubStatusComponent.ps1 index bcf20db07..c2ca19347 100644 --- a/src/functions/public/Status/Get-GitHubStatusComponent.ps1 +++ b/src/functions/public/Status/Get-GitHubStatusComponent.ps1 @@ -35,7 +35,7 @@ } process { - $baseURL = $script:StatusBaseURL[$Stamp] + $baseURL = $script:GitHub.Stamps[$Stamp] $APIURI = "$baseURL/api/v2/components.json" $response = Invoke-RestMethod -Uri $APIURI -Method Get diff --git a/src/functions/public/Status/Get-GitHubStatusIncident.ps1 b/src/functions/public/Status/Get-GitHubStatusIncident.ps1 index 0131cb05d..e3f7fb155 100644 --- a/src/functions/public/Status/Get-GitHubStatusIncident.ps1 +++ b/src/functions/public/Status/Get-GitHubStatusIncident.ps1 @@ -50,7 +50,7 @@ } process { - $baseURL = $script:StatusBaseURL[$Stamp] + $baseURL = $script:GitHub.Stamps[$Stamp] if ($Unresolved) { $APIURI = "$baseURL/api/v2/incidents/unresolved.json" diff --git a/src/variables/private/GitHub.ps1 b/src/variables/private/GitHub.ps1 index 67f82414e..3a3b7b6e7 100644 --- a/src/variables/private/GitHub.ps1 +++ b/src/variables/private/GitHub.ps1 @@ -23,4 +23,9 @@ $script:GitHub = [pscustomobject]@{ Config = $null Event = $null Runner = $null + Stamps = @{ + Public = 'https://www.githubstatus.com' + Europe = 'https://eu.githubstatus.com' + US = 'https://us.githubstatus.com' + } } diff --git a/src/variables/private/StatusBaseURL.ps1 b/src/variables/private/StatusBaseURL.ps1 deleted file mode 100644 index bc7bf32ec..000000000 --- a/src/variables/private/StatusBaseURL.ps1 +++ /dev/null @@ -1,5 +0,0 @@ -$script:StatusBaseURL = @{ - Public = 'https://www.githubstatus.com' - Europe = 'https://eu.githubstatus.com' - US = 'https://us.githubstatus.com' -} From a66743278fe0257d08c21fb1878c5272586598b2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 10:48:31 +0000 Subject: [PATCH 05/14] Use array syntax for Register-ArgumentCompleter CommandName Co-authored-by: MariusStorhaug <17722253+MariusStorhaug@users.noreply.github.com> --- src/completers.ps1 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/completers.ps1 b/src/completers.ps1 index 1f17001d4..aa190f885 100644 --- a/src/completers.ps1 +++ b/src/completers.ps1 @@ -71,7 +71,9 @@ $statusStampCompleter = { } } -Register-ArgumentCompleter -CommandName Get-GitHubStatus -ParameterName Stamp -ScriptBlock $statusStampCompleter -Register-ArgumentCompleter -CommandName Get-GitHubScheduledMaintenance -ParameterName Stamp -ScriptBlock $statusStampCompleter -Register-ArgumentCompleter -CommandName Get-GitHubStatusComponent -ParameterName Stamp -ScriptBlock $statusStampCompleter -Register-ArgumentCompleter -CommandName Get-GitHubStatusIncident -ParameterName Stamp -ScriptBlock $statusStampCompleter +Register-ArgumentCompleter -CommandName @( + 'Get-GitHubStatus' + 'Get-GitHubScheduledMaintenance' + 'Get-GitHubStatusComponent' + 'Get-GitHubStatusIncident' +) -ParameterName Stamp -ScriptBlock $statusStampCompleter From 282d8bd8e3f06bf42d90e16e2025f3974ed5ecec Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 11:23:14 +0000 Subject: [PATCH 06/14] Use dynamic reference to GitHub.Stamps.Keys in tests Co-authored-by: MariusStorhaug <17722253+MariusStorhaug@users.noreply.github.com> --- tests/GitHub.Tests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/GitHub.Tests.ps1 b/tests/GitHub.Tests.ps1 index 6641c7141..1abac0c34 100644 --- a/tests/GitHub.Tests.ps1 +++ b/tests/GitHub.Tests.ps1 @@ -283,7 +283,7 @@ Describe 'GitHub' { $runnerData | Should -Not -BeNullOrEmpty } } - Context 'Status' -ForEach @('Public', 'Europe', 'US') { + Context 'Status' -ForEach @($script:GitHub.Stamps.Keys) { It 'Get-GitHubScheduledMaintenance - Gets scheduled maintenance for <_>' { { Get-GitHubScheduledMaintenance -Stamp $_ } | Should -Not -Throw } From f75a8197181b5520e9eb154264ad38ae624bdc96 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Feb 2026 08:19:51 +0000 Subject: [PATCH 07/14] Remove trailing whitespace from completers.ps1 Co-authored-by: MariusStorhaug <17722253+MariusStorhaug@users.noreply.github.com> --- src/completers.ps1 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/completers.ps1 b/src/completers.ps1 index aa190f885..96379da55 100644 --- a/src/completers.ps1 +++ b/src/completers.ps1 @@ -54,18 +54,18 @@ Register-ArgumentCompleter -CommandName Connect-GitHubApp -ParameterName Enterpr $statusStampCompleter = { param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters - + if (-not $script:GitHub.Stamps) { return $null } - + $pattern = switch (Get-GitHubConfig -Name CompletionMode) { 'Contains' { "*$wordToComplete*" } default { "$wordToComplete*" } } $filteredOptions = $script:GitHub.Stamps.Keys | Where-Object { $_ -like $pattern } - + if (-not $filteredOptions) { return $null } - + $filteredOptions | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) } From 006ece37a143fb4394c1f0a69d0de06f7fec093a Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Wed, 11 Feb 2026 09:53:13 +0100 Subject: [PATCH 08/14] =?UTF-8?q?=F0=9F=A9=B9=20[Refactor]:=20Remove=20Aus?= =?UTF-8?q?tralia=20region=20from=20status=20functions=20and=20update=20pa?= =?UTF-8?q?rameter=20names=20for=20consistency?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/classes/public/GitHubStamp.ps1 | 20 +++++++ src/completers.ps1 | 30 +++++----- .../Status/Get-GitHubScheduledMaintenance.ps1 | 6 +- .../public/Status/Get-GitHubStamp.ps1 | 60 +++++++++++++++++++ .../public/Status/Get-GitHubStatus.ps1 | 5 +- .../Status/Get-GitHubStatusComponent.ps1 | 5 +- .../Status/Get-GitHubStatusIncident.ps1 | 5 +- src/variables/private/GitHub.ps1 | 10 ++-- tests/GitHub.Tests.ps1 | 34 +++++------ 9 files changed, 129 insertions(+), 46 deletions(-) create mode 100644 src/classes/public/GitHubStamp.ps1 create mode 100644 src/functions/public/Status/Get-GitHubStamp.ps1 diff --git a/src/classes/public/GitHubStamp.ps1 b/src/classes/public/GitHubStamp.ps1 new file mode 100644 index 000000000..e7ddb514e --- /dev/null +++ b/src/classes/public/GitHubStamp.ps1 @@ -0,0 +1,20 @@ +class GitHubStamp { + # The name of the stamp (region). + # Example: 'Public' + [string] $Name + + # The base URL of the status page for this stamp. + # Example: 'https://www.githubstatus.com' + [string] $BaseUrl + + GitHubStamp() {} + + GitHubStamp([string]$Name, [string]$BaseUrl) { + $this.Name = $Name + $this.BaseUrl = $BaseUrl + } + + [string] ToString() { + return $this.Name + } +} diff --git a/src/completers.ps1 b/src/completers.ps1 index aa190f885..730602ac4 100644 --- a/src/completers.ps1 +++ b/src/completers.ps1 @@ -50,30 +50,28 @@ Register-ArgumentCompleter -CommandName Connect-GitHubApp -ParameterName Enterpr } } -# Status functions - Stamp parameter completer -$statusStampCompleter = { +Register-ArgumentCompleter -CommandName @( + 'Get-GitHubStatus' + 'Get-GitHubScheduledMaintenance' + 'Get-GitHubStatusComponent' + 'Get-GitHubStatusIncident' +) -ParameterName Name -ScriptBlock { param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters - - if (-not $script:GitHub.Stamps) { + + $stamps = Get-GitHubStamp + if (-not $stamps) { return $null } - + $pattern = switch (Get-GitHubConfig -Name CompletionMode) { 'Contains' { "*$wordToComplete*" } default { "$wordToComplete*" } } - $filteredOptions = $script:GitHub.Stamps.Keys | Where-Object { $_ -like $pattern } - + $filteredOptions = $stamps | Where-Object { $_.Name -like $pattern } + if (-not $filteredOptions) { return $null } - + $filteredOptions | ForEach-Object { - [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) + [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ParameterValue', $_.Name) } } - -Register-ArgumentCompleter -CommandName @( - 'Get-GitHubStatus' - 'Get-GitHubScheduledMaintenance' - 'Get-GitHubStatusComponent' - 'Get-GitHubStatusIncident' -) -ParameterName Stamp -ScriptBlock $statusStampCompleter diff --git a/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 b/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 index 78e3c7618..230452fdb 100644 --- a/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 +++ b/src/functions/public/Status/Get-GitHubScheduledMaintenance.ps1 @@ -54,7 +54,8 @@ # The stamp to check status for. [Parameter()] - [string] $Stamp = 'Public' + [Alias('Stamp')] + [string] $Name = 'Public' ) begin { @@ -63,7 +64,8 @@ } process { - $baseURL = $script:GitHub.Stamps[$Stamp] + $stamp = Get-GitHubStamp -Name $Name + $baseURL = $stamp.BaseUrl if ($Active) { $APIURI = "$baseURL/api/v2/scheduled-maintenances/active.json" diff --git a/src/functions/public/Status/Get-GitHubStamp.ps1 b/src/functions/public/Status/Get-GitHubStamp.ps1 new file mode 100644 index 000000000..7c553da9c --- /dev/null +++ b/src/functions/public/Status/Get-GitHubStamp.ps1 @@ -0,0 +1,60 @@ +function Get-GitHubStamp { + <# + .SYNOPSIS + Gets the available GitHub Status page stamps (regions). + + .DESCRIPTION + Returns the available GitHub Status page stamps, which represent different regional status pages. + Each stamp includes the name and base URL of the status page. + + .EXAMPLE + ```powershell + Get-GitHubStamp + ``` + + Gets all available GitHub Status page stamps. + + .EXAMPLE + ```powershell + Get-GitHubStamp -Name 'Europe' + ``` + + Gets the GitHub Status page stamp for 'Europe'. + + .NOTES + [GitHub Status API](https://www.githubstatus.com/api) + + .LINK + https://psmodule.io/GitHub/Functions/Status/Get-GitHubStamp + #> + [OutputType([GitHubStamp])] + [CmdletBinding()] + param( + # The name of the stamp to get. If not specified, all stamps are returned. + [Parameter()] + [string] $Name + ) + + begin { + $stackPath = Get-PSCallStackPath + Write-Debug "[$stackPath] - Start" + } + + process { + if ($Name) { + $stamp = $script:GitHub.Stamps | Where-Object { $_.Name -eq $Name } + if (-not $stamp) { + $available = $script:GitHub.Stamps.Name -join ', ' + throw "Stamp '$Name' not found. Available stamps: $available" + } + $stamp + return + } + + $script:GitHub.Stamps + } + + end { + Write-Debug "[$stackPath] - End" + } +} diff --git a/src/functions/public/Status/Get-GitHubStatus.ps1 b/src/functions/public/Status/Get-GitHubStatus.ps1 index 19cba2c07..96dbe2d62 100644 --- a/src/functions/public/Status/Get-GitHubStatus.ps1 +++ b/src/functions/public/Status/Get-GitHubStatus.ps1 @@ -42,7 +42,8 @@ # The stamp to check status for. [Parameter()] - [string] $Stamp = 'Public' + [Alias('Stamp')] + [string] $Name = 'Public' ) begin { $stackPath = Get-PSCallStackPath @@ -50,7 +51,7 @@ } process { - $baseURL = $script:GitHub.Stamps[$Stamp] + $baseURL = (Get-GitHubStamp -Name $Name).BaseUrl if ($Summary) { $APIURI = "$baseURL/api/v2/summary.json" diff --git a/src/functions/public/Status/Get-GitHubStatusComponent.ps1 b/src/functions/public/Status/Get-GitHubStatusComponent.ps1 index c2ca19347..1365160f8 100644 --- a/src/functions/public/Status/Get-GitHubStatusComponent.ps1 +++ b/src/functions/public/Status/Get-GitHubStatusComponent.ps1 @@ -26,7 +26,8 @@ param( # The stamp to check status for. [Parameter()] - [string] $Stamp = 'Public' + [Alias('Stamp')] + [string] $Name = 'Public' ) begin { @@ -35,7 +36,7 @@ } process { - $baseURL = $script:GitHub.Stamps[$Stamp] + $baseURL = (Get-GitHubStamp -Name $Name).BaseUrl $APIURI = "$baseURL/api/v2/components.json" $response = Invoke-RestMethod -Uri $APIURI -Method Get diff --git a/src/functions/public/Status/Get-GitHubStatusIncident.ps1 b/src/functions/public/Status/Get-GitHubStatusIncident.ps1 index e3f7fb155..8789b5b93 100644 --- a/src/functions/public/Status/Get-GitHubStatusIncident.ps1 +++ b/src/functions/public/Status/Get-GitHubStatusIncident.ps1 @@ -41,7 +41,8 @@ # The stamp to check status for. [Parameter()] - [string] $Stamp = 'Public' + [Alias('Stamp')] + [string] $Name = 'Public' ) begin { @@ -50,7 +51,7 @@ } process { - $baseURL = $script:GitHub.Stamps[$Stamp] + $baseURL = (Get-GitHubStamp -Name $Name).BaseUrl if ($Unresolved) { $APIURI = "$baseURL/api/v2/incidents/unresolved.json" diff --git a/src/variables/private/GitHub.ps1 b/src/variables/private/GitHub.ps1 index 3a3b7b6e7..67e103c8b 100644 --- a/src/variables/private/GitHub.ps1 +++ b/src/variables/private/GitHub.ps1 @@ -23,9 +23,9 @@ $script:GitHub = [pscustomobject]@{ Config = $null Event = $null Runner = $null - Stamps = @{ - Public = 'https://www.githubstatus.com' - Europe = 'https://eu.githubstatus.com' - US = 'https://us.githubstatus.com' - } + Stamps = @( + [GitHubStamp]::new('Public', 'https://www.githubstatus.com') + [GitHubStamp]::new('Europe', 'https://eu.githubstatus.com') + [GitHubStamp]::new('US', 'https://us.githubstatus.com') + ) } diff --git a/tests/GitHub.Tests.ps1 b/tests/GitHub.Tests.ps1 index 1abac0c34..2d7aae013 100644 --- a/tests/GitHub.Tests.ps1 +++ b/tests/GitHub.Tests.ps1 @@ -283,30 +283,30 @@ Describe 'GitHub' { $runnerData | Should -Not -BeNullOrEmpty } } - Context 'Status' -ForEach @($script:GitHub.Stamps.Keys) { - It 'Get-GitHubScheduledMaintenance - Gets scheduled maintenance for <_>' { - { Get-GitHubScheduledMaintenance -Stamp $_ } | Should -Not -Throw + Context 'Status - ' -ForEach (Get-GitHubStamp) { + It 'Get-GitHubScheduledMaintenance - Gets scheduled maintenance for ' { + { Get-GitHubScheduledMaintenance -Name $Name } | Should -Not -Throw } - It 'Get-GitHubScheduledMaintenance - Gets active maintenance for <_>' { - { Get-GitHubScheduledMaintenance -Stamp $_ -Active } | Should -Not -Throw + It 'Get-GitHubScheduledMaintenance - Gets active maintenance for ' { + { Get-GitHubScheduledMaintenance -Name $Name -Active } | Should -Not -Throw } - It 'Get-GitHubScheduledMaintenance - Gets upcoming maintenance for <_>' { - { Get-GitHubScheduledMaintenance -Stamp $_ -Upcoming } | Should -Not -Throw + It 'Get-GitHubScheduledMaintenance - Gets upcoming maintenance for ' { + { Get-GitHubScheduledMaintenance -Name $Name -Upcoming } | Should -Not -Throw } - It 'Get-GitHubStatus - Gets all status for <_>' { - { Get-GitHubStatus -Stamp $_ } | Should -Not -Throw + It 'Get-GitHubStatus - Gets all status for ' { + { Get-GitHubStatus -Name $Name } | Should -Not -Throw } - It 'Get-GitHubStatus - Gets summary status for <_>' { - { Get-GitHubStatus -Stamp $_ -Summary } | Should -Not -Throw + It 'Get-GitHubStatus - Gets summary status for ' { + { Get-GitHubStatus -Name $Name -Summary } | Should -Not -Throw } - It 'Get-GitHubStatusComponent - Gets the status of GitHub components for <_>' { - { Get-GitHubStatusComponent -Stamp $_ } | Should -Not -Throw + It 'Get-GitHubStatusComponent - Gets the status of GitHub components for ' { + { Get-GitHubStatusComponent -Name $Name } | Should -Not -Throw } - It 'Get-GitHubStatusIncident - Gets the status of all GitHub incidents for <_>' { - { Get-GitHubStatusIncident -Stamp $_ } | Should -Not -Throw + It 'Get-GitHubStatusIncident - Gets the status of all GitHub incidents for ' { + { Get-GitHubStatusIncident -Name $Name } | Should -Not -Throw } - It 'Get-GitHubStatusIncident - Gets the status of unresolved GitHub incidents for <_>' { - { Get-GitHubStatusIncident -Stamp $_ -Unresolved } | Should -Not -Throw + It 'Get-GitHubStatusIncident - Gets the status of unresolved GitHub incidents for ' { + { Get-GitHubStatusIncident -Name $Name -Unresolved } | Should -Not -Throw } } Context 'Commands' { From 6cdbd620b4d5edee6b371f2cd70e5a44c4ad31a3 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Wed, 11 Feb 2026 17:21:00 +0100 Subject: [PATCH 09/14] =?UTF-8?q?=F0=9F=A9=B9=20[Refactor]:=20Improve=20Ge?= =?UTF-8?q?t-GitHubStamp=20function=20logic=20and=20enhance=20test=20outpu?= =?UTF-8?q?t=20formatting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../public/Status/Get-GitHubStamp.ps1 | 16 ++++++++-------- tests/GitHub.Tests.ps1 | 18 +++++++++++++----- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/functions/public/Status/Get-GitHubStamp.ps1 b/src/functions/public/Status/Get-GitHubStamp.ps1 index 7c553da9c..26685612c 100644 --- a/src/functions/public/Status/Get-GitHubStamp.ps1 +++ b/src/functions/public/Status/Get-GitHubStamp.ps1 @@ -41,17 +41,17 @@ } process { - if ($Name) { - $stamp = $script:GitHub.Stamps | Where-Object { $_.Name -eq $Name } - if (-not $stamp) { - $available = $script:GitHub.Stamps.Name -join ', ' - throw "Stamp '$Name' not found. Available stamps: $available" - } - $stamp + if ([string]::IsNullOrEmpty($Name)) { + $script:GitHub.Stamps return } - $script:GitHub.Stamps + $stamp = $script:GitHub.Stamps | Where-Object { $_.Name -eq $Name } + if (-not $stamp) { + $available = $script:GitHub.Stamps.Name -join ', ' + throw "Stamp '$Name' not found. Available stamps: $available" + } + $stamp } end { diff --git a/tests/GitHub.Tests.ps1 b/tests/GitHub.Tests.ps1 index 93058d7a6..fb16e1c3c 100644 --- a/tests/GitHub.Tests.ps1 +++ b/tests/GitHub.Tests.ps1 @@ -286,18 +286,26 @@ Describe 'GitHub' { Context 'Stamps' { It 'Get-GitHubStamp - Gets all available stamps' { $stamps = Get-GitHubStamp + LogGroup 'All Stamps' { + Write-Host ($stamps | Format-Table -AutoSize | Out-String) + } $stamps | Should -Not -BeNullOrEmpty $stamps.Count | Should -BeGreaterThan 0 } It 'Get-GitHubStamp - Each stamp has Name and BaseUrl properties' { - $stamps = Get-GitHubStamp - $stamps | ForEach-Object { - $_.Name | Should -Not -BeNullOrEmpty - $_.BaseUrl | Should -Not -BeNullOrEmpty + LogGroup "Stamps - Details" { + Get-GitHubStamp | ForEach-Object { + Write-Host ($_ | Format-List | Out-String) + $_.Name | Should -Not -BeNullOrEmpty + $_.BaseUrl | Should -Not -BeNullOrEmpty + } } } It 'Get-GitHubStamp - Gets a specific stamp by name' { $stamp = Get-GitHubStamp -Name 'Public' + LogGroup 'Stamp - Public' { + Write-Host ($stamp | Format-List | Out-String) + } $stamp | Should -Not -BeNullOrEmpty $stamp.Name | Should -Be 'Public' } @@ -305,7 +313,7 @@ Describe 'GitHub' { { Get-GitHubStamp -Name 'InvalidStampName' } | Should -Throw } } - Context 'Status - ' -ForEach (Get-GitHubStamp) { + Context 'Status - ' -ForEach @(Get-GitHubStamp | ForEach-Object { @{ Name = $_.Name } }) { It 'Get-GitHubScheduledMaintenance - Gets scheduled maintenance for ' { { Get-GitHubScheduledMaintenance -Name $Name } | Should -Not -Throw } From 0e0d7840a3e5b2b201028d87fb2085044f6519f1 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Fri, 13 Feb 2026 11:53:57 +0100 Subject: [PATCH 10/14] =?UTF-8?q?=F0=9F=A9=B9=20[Refactor]:=20Update=20PSM?= =?UTF-8?q?odule.yml=20to=20enable=20skipping=20of=20tests=20and=20documen?= =?UTF-8?q?tation;=20remove=20deprecated=20status=20functions=20for=20Aust?= =?UTF-8?q?ralia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/PSModule.yml | 28 +++++++++---------- src/completers.ps1 | 26 ----------------- .../public/Config/Get-GitHubConfig.ps1 | 2 -- .../public/Status/Get-GitHubStamp.ps1 | 4 ++- src/functions/public/Status/completers.ps1 | 26 +++++++++++++++++ 5 files changed, 43 insertions(+), 43 deletions(-) create mode 100644 src/functions/public/Status/completers.ps1 diff --git a/.github/PSModule.yml b/.github/PSModule.yml index 0d130b7e0..30396b970 100644 --- a/.github/PSModule.yml +++ b/.github/PSModule.yml @@ -5,20 +5,20 @@ Test: CodeCoverage: PercentTarget: 50 -# TestResults: -# Skip: true -# SourceCode: -# Skip: true -# PSModule: -# Skip: true -# Module: -# Windows: -# Skip: true -# MacOS: -# Skip: true -# Build: -# Docs: -# Skip: true + TestResults: + Skip: true + SourceCode: + Skip: true + PSModule: + Skip: true + Module: + Windows: + Skip: true + MacOS: + Skip: true +Build: + Docs: + Skip: true Linter: env: diff --git a/src/completers.ps1 b/src/completers.ps1 index 730602ac4..9cc61195a 100644 --- a/src/completers.ps1 +++ b/src/completers.ps1 @@ -49,29 +49,3 @@ Register-ArgumentCompleter -CommandName Connect-GitHubApp -ParameterName Enterpr [System.Management.Automation.CompletionResult]::new($_.Target.Name, $_.Target.Name, 'ParameterValue', $_.Target.Name) } } - -Register-ArgumentCompleter -CommandName @( - 'Get-GitHubStatus' - 'Get-GitHubScheduledMaintenance' - 'Get-GitHubStatusComponent' - 'Get-GitHubStatusIncident' -) -ParameterName Name -ScriptBlock { - param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) - $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters - - $stamps = Get-GitHubStamp - if (-not $stamps) { - return $null - } - - $pattern = switch (Get-GitHubConfig -Name CompletionMode) { 'Contains' { "*$wordToComplete*" } default { "$wordToComplete*" } } - $filteredOptions = $stamps | Where-Object { $_.Name -like $pattern } - - if (-not $filteredOptions) { - return $null - } - - $filteredOptions | ForEach-Object { - [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ParameterValue', $_.Name) - } -} diff --git a/src/functions/public/Config/Get-GitHubConfig.ps1 b/src/functions/public/Config/Get-GitHubConfig.ps1 index aa7248b2e..3f943efab 100644 --- a/src/functions/public/Config/Get-GitHubConfig.ps1 +++ b/src/functions/public/Config/Get-GitHubConfig.ps1 @@ -13,8 +13,6 @@ Get the DefaultContext value from the GitHub module configuration. - - .LINK https://psmodule.io/GitHub/Functions/Config/Get-GitHubConfig #> diff --git a/src/functions/public/Status/Get-GitHubStamp.ps1 b/src/functions/public/Status/Get-GitHubStamp.ps1 index 26685612c..bd4d04419 100644 --- a/src/functions/public/Status/Get-GitHubStamp.ps1 +++ b/src/functions/public/Status/Get-GitHubStamp.ps1 @@ -27,11 +27,13 @@ .LINK https://psmodule.io/GitHub/Functions/Status/Get-GitHubStamp #> - [OutputType([GitHubStamp])] + [OutputType([GitHubStamp[]])] [CmdletBinding()] param( # The name of the stamp to get. If not specified, all stamps are returned. [Parameter()] + [ValidateNotNullOrEmpty()] + [Alias('Stamp')] [string] $Name ) diff --git a/src/functions/public/Status/completers.ps1 b/src/functions/public/Status/completers.ps1 new file mode 100644 index 000000000..9d7543cc6 --- /dev/null +++ b/src/functions/public/Status/completers.ps1 @@ -0,0 +1,26 @@ +Register-ArgumentCompleter -CommandName @( + 'Get-GitHubScheduledMaintenance' + 'Get-GitHubStamp' + 'Get-GitHubStatus' + 'Get-GitHubStatusComponent' + 'Get-GitHubStatusIncident' +) -ParameterName Name -ScriptBlock { + param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) + $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters + + $stamps = Get-GitHubStamp + if (-not $stamps) { + return $null + } + + $pattern = switch (Get-GitHubConfig -Name CompletionMode) { 'Contains' { "*$wordToComplete*" } default { "$wordToComplete*" } } + $filteredOptions = $stamps | Where-Object { $_.Name -like $pattern } + + if (-not $filteredOptions) { + return $null + } + + $filteredOptions | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_.Name, $_.Name, 'ParameterValue', $_.Name) + } +} From 352ae484aa4ecfb59524339c80dfc3fb1fa7c034 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Fri, 13 Feb 2026 11:56:05 +0100 Subject: [PATCH 11/14] =?UTF-8?q?=F0=9F=A9=B9=20[Refactor]:=20Add=20skip?= =?UTF-8?q?=20option=20for=20CodeCoverage=20in=20PSModule.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/PSModule.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/PSModule.yml b/.github/PSModule.yml index 30396b970..977380dd8 100644 --- a/.github/PSModule.yml +++ b/.github/PSModule.yml @@ -5,6 +5,7 @@ Test: CodeCoverage: PercentTarget: 50 + Skip: true TestResults: Skip: true SourceCode: From 647587142d93613406b3b0949ca71a472a916d2c Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Fri, 13 Feb 2026 13:47:25 +0100 Subject: [PATCH 12/14] =?UTF-8?q?=F0=9F=A9=B9=20[Refactor]:=20Ensure=20'Sk?= =?UTF-8?q?ip'=20option=20is=20set=20for=20Module=20tests=20in=20PSModule.?= =?UTF-8?q?yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/PSModule.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/PSModule.yml b/.github/PSModule.yml index 977380dd8..c16ecea2a 100644 --- a/.github/PSModule.yml +++ b/.github/PSModule.yml @@ -13,6 +13,7 @@ Test: PSModule: Skip: true Module: + Skip: true Windows: Skip: true MacOS: From 4a6e7846748d0cbbd3d1e4ae70a92acc2935bab3 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Fri, 13 Feb 2026 15:30:18 +0100 Subject: [PATCH 13/14] =?UTF-8?q?=F0=9F=A9=B9=20[Refactor]:=20Comment=20ou?= =?UTF-8?q?t=20deprecated=20skip=20options=20for=20various=20test=20catego?= =?UTF-8?q?ries=20in=20PSModule.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/PSModule.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/PSModule.yml b/.github/PSModule.yml index c16ecea2a..bf741a2f2 100644 --- a/.github/PSModule.yml +++ b/.github/PSModule.yml @@ -5,19 +5,19 @@ Test: CodeCoverage: PercentTarget: 50 - Skip: true - TestResults: - Skip: true - SourceCode: - Skip: true - PSModule: - Skip: true - Module: - Skip: true - Windows: - Skip: true - MacOS: - Skip: true + # Skip: true + # TestResults: + # Skip: true + # SourceCode: + # Skip: true + # PSModule: + # Skip: true + # Module: + # Skip: true + # Windows: + # Skip: true + # MacOS: + # Skip: true Build: Docs: Skip: true From 5a8335befdedd800baeacdd8161ae288d2cb372b Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Sat, 14 Feb 2026 17:31:51 +0100 Subject: [PATCH 14/14] [Refactor]: Comment out Build section in PSModule.yml to remove deprecated skip options --- .github/PSModule.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/PSModule.yml b/.github/PSModule.yml index bf741a2f2..a76dd4845 100644 --- a/.github/PSModule.yml +++ b/.github/PSModule.yml @@ -18,9 +18,9 @@ Test: # Skip: true # MacOS: # Skip: true -Build: - Docs: - Skip: true +# Build: +# Docs: +# Skip: true Linter: env: