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')