From a6a563d6568e4c52623973fd7db48572d2aa973b Mon Sep 17 00:00:00 2001
From: Mavaddat Javid <5055400+mavaddat@users.noreply.github.com>
Date: Mon, 12 Jun 2023 10:46:19 -0400
Subject: [PATCH 1/8] =?UTF-8?q?completers=20=E2=88=80x=E2=88=88=20{cmds,?=
 =?UTF-8?q?=20aliases}=20in=20powershell=5Fcompletions.go?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

pwsh completers ∀x∈ {cmds, aliases}
---
 powershell_completions.go | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/powershell_completions.go b/powershell_completions.go
index 177d2755..94efa4a5 100644
--- a/powershell_completions.go
+++ b/powershell_completions.go
@@ -278,8 +278,16 @@ filter __%[1]s_escapeStringWithSpecialChars {
 
     }
 }
+# Enumerate the cmds for %[1]s (set by System.Environment)
+$available%[2]s = Get-Command -Name '%[1]s' -All -ErrorAction SilentlyContinue
 
-Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock $__%[2]sCompleterBlock
+# Enumerate set aliases for %[1]s (set by user)
+$__%[2]sAliases = @()
+foreach($__%[2]sCmd in $available%[2]s){
+    $__%[2]sAliases += Get-Alias | Where-Object { $_.Definition -eq ($__%[2]sCmd | Resolve-Path) }
+}
+# Register args completer for all cmds and aliases
+Register-ArgumentCompleter -CommandName ([array]$available%[2]s.Name + [array]$__%[2]sAliases.Name) -ScriptBlock $__%[2]sCompleterBlock
 `, name, nameForVar, compCmd,
 		ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp,
 		ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, ShellCompDirectiveKeepOrder, activeHelpEnvVar(name)))

From cc6f7e0edd38f6efa53c49953660417d227afe72 Mon Sep 17 00:00:00 2001
From: Mavaddat Javid <5055400+mavaddat@users.noreply.github.com>
Date: Wed, 14 Jun 2023 11:58:34 -0400
Subject: [PATCH 2/8] Forgot about the original alias!

In my exuberance to include all the other aliases, I accidentally removed the original alias that was previously the only one being registered for autocompletion. I have restored this `'%[1]s'`.
---
 powershell_completions.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/powershell_completions.go b/powershell_completions.go
index 94efa4a5..6ae8a37c 100644
--- a/powershell_completions.go
+++ b/powershell_completions.go
@@ -281,13 +281,13 @@ filter __%[1]s_escapeStringWithSpecialChars {
 # Enumerate the cmds for %[1]s (set by System.Environment)
 $available%[2]s = Get-Command -Name '%[1]s' -All -ErrorAction SilentlyContinue
 
-# Enumerate set aliases for %[1]s (set by user)
+# Enumerate extant aliases for %[1]s (already set by user)
 $__%[2]sAliases = @()
 foreach($__%[2]sCmd in $available%[2]s){
     $__%[2]sAliases += Get-Alias | Where-Object { $_.Definition -eq ($__%[2]sCmd | Resolve-Path) }
 }
 # Register args completer for all cmds and aliases
-Register-ArgumentCompleter -CommandName ([array]$available%[2]s.Name + [array]$__%[2]sAliases.Name) -ScriptBlock $__%[2]sCompleterBlock
+Register-ArgumentCompleter -CommandName ([array]$available%[2]s.Name + [array]$__%[2]sAliases.Name + @('%[1]s')) -ScriptBlock $__%[2]sCompleterBlock
 `, name, nameForVar, compCmd,
 		ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp,
 		ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, ShellCompDirectiveKeepOrder, activeHelpEnvVar(name)))

From 0676e2612e395234f3d9bc079b4623d6b07966d4 Mon Sep 17 00:00:00 2001
From: Mavaddat Javid <5055400+mavaddat@users.noreply.github.com>
Date: Mon, 19 Jun 2023 16:44:38 -0400
Subject: [PATCH 3/8] Update powershell_completions.go

Implement curly bracket technique like https://github.com/spf13/cobra/pull/1960
---
 powershell_completions.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/powershell_completions.go b/powershell_completions.go
index 6ae8a37c..8585d845 100644
--- a/powershell_completions.go
+++ b/powershell_completions.go
@@ -282,12 +282,12 @@ filter __%[1]s_escapeStringWithSpecialChars {
 $available%[2]s = Get-Command -Name '%[1]s' -All -ErrorAction SilentlyContinue
 
 # Enumerate extant aliases for %[1]s (already set by user)
-$__%[2]sAliases = @()
+${__%[2]sAliases} = @()
 foreach($__%[2]sCmd in $available%[2]s){
     $__%[2]sAliases += Get-Alias | Where-Object { $_.Definition -eq ($__%[2]sCmd | Resolve-Path) }
 }
 # Register args completer for all cmds and aliases
-Register-ArgumentCompleter -CommandName ([array]$available%[2]s.Name + [array]$__%[2]sAliases.Name + @('%[1]s')) -ScriptBlock $__%[2]sCompleterBlock
+Register-ArgumentCompleter -CommandName ([array]$available%[2]s.Name + [array]${__%[2]sAliases}.Name + @('%[1]s')) -ScriptBlock ${__%[2]sCompleterBlock}
 `, name, nameForVar, compCmd,
 		ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp,
 		ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, ShellCompDirectiveKeepOrder, activeHelpEnvVar(name)))

From f43b653d17548a1b8f81034fc4a63034950e0da3 Mon Sep 17 00:00:00 2001
From: Mavaddat Javid <5055400+mavaddat@users.noreply.github.com>
Date: Mon, 19 Jun 2023 16:56:55 -0400
Subject: [PATCH 4/8] Update powershell_completions.go

Preliminary assignment before use
---
 powershell_completions.go | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/powershell_completions.go b/powershell_completions.go
index 6929dbaa..1dad2039 100644
--- a/powershell_completions.go
+++ b/powershell_completions.go
@@ -287,7 +287,8 @@ foreach($__%[2]sCmd in $available%[2]s){
     $__%[2]sAliases += Get-Alias | Where-Object { $_.Definition -eq ($__%[2]sCmd | Resolve-Path) }
 }
 # Register args completer for all cmds and aliases
-Register-ArgumentCompleter -CommandName ([array]$available%[2]s.Name + [array]${__%[2]sAliases}.Name + @('%[1]s')) -ScriptBlock ${__%[2]sCompleterBlock}
+[string[]]$joint%[2]snames = [array]$available%[2]s.Name + [array]${__%[2]sAliases}.Name + @('%[1]s')
+Register-ArgumentCompleter -CommandName $joint%[2]snames -ScriptBlock ${__%[2]sCompleterBlock}
 `, name, nameForVar, compCmd,
 		ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp,
 		ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, ShellCompDirectiveKeepOrder, activeHelpEnvVar(name)))

From caeed9f2a4c9e344e616a345ea6cca7ebf77409d Mon Sep 17 00:00:00 2001
From: Mavaddat Javid <5055400+mavaddat@users.noreply.github.com>
Date: Sun, 29 Oct 2023 17:00:24 -0400
Subject: [PATCH 5/8] Update powershell_completions.go

Incorporate @bartoncasey insight about typical alias usage in https://github.com/spf13/cobra/pull/2049
---
 powershell_completions.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/powershell_completions.go b/powershell_completions.go
index 1dad2039..d4c75980 100644
--- a/powershell_completions.go
+++ b/powershell_completions.go
@@ -279,12 +279,12 @@ filter __%[1]s_escapeStringWithSpecialChars {
     }
 }
 # Enumerate the cmds for %[1]s (set by System.Environment)
-$available%[2]s = Get-Command -Name '%[1]s' -All -ErrorAction SilentlyContinue
+$available%[2]s = Get-Command -Name '%[1]s' -All -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Definition -ErrorAction SilentlyContinue
 
 # Enumerate extant aliases for %[1]s (already set by user)
 ${__%[2]sAliases} = @()
 foreach($__%[2]sCmd in $available%[2]s){
-    $__%[2]sAliases += Get-Alias | Where-Object { $_.Definition -eq ($__%[2]sCmd | Resolve-Path) }
+    $__%[2]sAliases += Get-Alias | Where-Object { $_ -eq ($__%[2]sCmd | Resolve-Path) -or $_ -eq (Get-Command -Name $_ -ErrorAction SilentlyContinue).Definition}
 }
 # Register args completer for all cmds and aliases
 [string[]]$joint%[2]snames = [array]$available%[2]s.Name + [array]${__%[2]sAliases}.Name + @('%[1]s')

From c901861b5027c6ea236c355e3210da7369e2cf77 Mon Sep 17 00:00:00 2001
From: Mavaddat Javid <5055400+mavaddat@users.noreply.github.com>
Date: Sun, 29 Oct 2023 18:47:11 -0400
Subject: [PATCH 6/8] Update powershell_completions.go

Typo in previous. Change `$_` PSItem to `$__%[2]sCmd`
---
 powershell_completions.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/powershell_completions.go b/powershell_completions.go
index d4c75980..4203bfca 100644
--- a/powershell_completions.go
+++ b/powershell_completions.go
@@ -284,7 +284,7 @@ $available%[2]s = Get-Command -Name '%[1]s' -All -ErrorAction SilentlyContinue |
 # Enumerate extant aliases for %[1]s (already set by user)
 ${__%[2]sAliases} = @()
 foreach($__%[2]sCmd in $available%[2]s){
-    $__%[2]sAliases += Get-Alias | Where-Object { $_ -eq ($__%[2]sCmd | Resolve-Path) -or $_ -eq (Get-Command -Name $_ -ErrorAction SilentlyContinue).Definition}
+    $__%[2]sAliases += Get-Alias | Where-Object { $_ -eq ($__%[2]sCmd | Resolve-Path) -or $_ -eq (Get-Command -Name $__%[2]sCmd -ErrorAction SilentlyContinue).Definition}
 }
 # Register args completer for all cmds and aliases
 [string[]]$joint%[2]snames = [array]$available%[2]s.Name + [array]${__%[2]sAliases}.Name + @('%[1]s')

From 94243fef090f23b111328e605bf3346bf157004b Mon Sep 17 00:00:00 2001
From: Mavaddat Javid <5055400+mavaddat@users.noreply.github.com>
Date: Mon, 30 Oct 2023 11:44:11 -0400
Subject: [PATCH 7/8] need description property

---
 powershell_completions.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/powershell_completions.go b/powershell_completions.go
index 4203bfca..d4a3c373 100644
--- a/powershell_completions.go
+++ b/powershell_completions.go
@@ -284,7 +284,7 @@ $available%[2]s = Get-Command -Name '%[1]s' -All -ErrorAction SilentlyContinue |
 # Enumerate extant aliases for %[1]s (already set by user)
 ${__%[2]sAliases} = @()
 foreach($__%[2]sCmd in $available%[2]s){
-    $__%[2]sAliases += Get-Alias | Where-Object { $_ -eq ($__%[2]sCmd | Resolve-Path) -or $_ -eq (Get-Command -Name $__%[2]sCmd -ErrorAction SilentlyContinue).Definition}
+	$__%[2]sAliases += Get-Alias | Where-Object { $_.Definition -eq ($__%[2]sCmd | Resolve-Path) -or $_.Definition -eq (Get-Command -Name $__%[2]sCmd -ErrorAction SilentlyContinue).Definition } 
 }
 # Register args completer for all cmds and aliases
 [string[]]$joint%[2]snames = [array]$available%[2]s.Name + [array]${__%[2]sAliases}.Name + @('%[1]s')

From 955cac7eb936e0b26d8f358086c2cc0f12d265ec Mon Sep 17 00:00:00 2001
From: Mavaddat Javid <5055400+mavaddat@users.noreply.github.com>
Date: Mon, 30 Oct 2023 11:48:03 -0400
Subject: [PATCH 8/8] ignore resolve errors

---
 powershell_completions.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/powershell_completions.go b/powershell_completions.go
index d4a3c373..092912ed 100644
--- a/powershell_completions.go
+++ b/powershell_completions.go
@@ -284,7 +284,7 @@ $available%[2]s = Get-Command -Name '%[1]s' -All -ErrorAction SilentlyContinue |
 # Enumerate extant aliases for %[1]s (already set by user)
 ${__%[2]sAliases} = @()
 foreach($__%[2]sCmd in $available%[2]s){
-	$__%[2]sAliases += Get-Alias | Where-Object { $_.Definition -eq ($__%[2]sCmd | Resolve-Path) -or $_.Definition -eq (Get-Command -Name $__%[2]sCmd -ErrorAction SilentlyContinue).Definition } 
+	$__%[2]sAliases += Get-Alias | Where-Object { $_.Definition -eq ($__%[2]sCmd | Resolve-Path -ErrorAction SilentlyContinue) -or $_.Definition -eq (Get-Command -Name $__%[2]sCmd -ErrorAction SilentlyContinue).Definition } 
 }
 # Register args completer for all cmds and aliases
 [string[]]$joint%[2]snames = [array]$available%[2]s.Name + [array]${__%[2]sAliases}.Name + @('%[1]s')