commands: Add PowerShell completion support
authorAnthony Fok <foka@debian.org>
Tue, 9 Feb 2021 20:37:36 +0000 (13:37 -0700)
committerAnthony Fok <foka@debian.org>
Tue, 9 Feb 2021 20:37:36 +0000 (13:37 -0700)
Revert "Refactor: Remove powershell support" with fixes

Thanks to Ben Mezger (@benmezger) for the original code.
See #8122

This reverts commit a7c515e1b56e8cab34ca2647b4116904df9c8250.

commands/genautocomplete.go

index 3f3bf9c8784cf87120149a92e1ba53b29aabbbd3..9806ca44710e75ade746121822e5369c3c69d3eb 100644 (file)
@@ -25,8 +25,10 @@ var _ cmder = (*genautocompleteCmd)(nil)
 
 type genautocompleteCmd struct {
        autocompleteTarget string
-       // bash, zsh or fish
+
+       // bash, zsh, fish or powershell
        autocompleteType string
+
        *baseCmd
 }
 
@@ -46,7 +48,7 @@ for convenience, and the command may need superuser rights, e.g.:
 Add ` + "`--completionfile=/path/to/file`" + ` flag to set alternative
 file-path and name.
 
-Add ` + "`--type={bash, zsh or fish}`" + ` flag to set alternative
+Add ` + "`--type={bash, zsh, fish or powershell}`" + ` flag to set alternative
 shell type.
 
 Logout and in again to reload the completion scripts,
@@ -65,12 +67,14 @@ or just source them in directly:
                        }
 
                        switch cc.autocompleteType {
-                       case "zsh":
-                               err = cmd.Root().GenZshCompletion(target)
                        case "bash":
                                err = cmd.Root().GenBashCompletion(target)
+                       case "zsh":
+                               err = cmd.Root().GenZshCompletion(target)
                        case "fish":
                                err = cmd.Root().GenFishCompletion(target, true)
+                       case "powershell":
+                               err = cmd.Root().GenPowerShellCompletion(target)
                        default:
                                return newUserError("Unsupported completion type")
                        }
@@ -87,7 +91,7 @@ or just source them in directly:
        })
 
        cc.cmd.PersistentFlags().StringVarP(&cc.autocompleteTarget, "completionfile", "f", "", "autocompletion file, defaults to stdout")
-       cc.cmd.PersistentFlags().StringVarP(&cc.autocompleteType, "type", "t", "bash", "autocompletion type (zsh, bash or fish)")
+       cc.cmd.PersistentFlags().StringVarP(&cc.autocompleteType, "type", "t", "bash", "autocompletion type (bash, zsh, fish, or powershell)")
 
        return cc
 }