32 lines
699 B
Go
32 lines
699 B
Go
package cmd
|
|
|
|
import (
|
|
"io"
|
|
"text/template"
|
|
|
|
"go.fifitido.net/cmd/opt"
|
|
)
|
|
|
|
func WritePowerShellCompletions(out io.Writer, rootCmd *Command) error {
|
|
return powerShellTpl.Execute(out, map[string]any{
|
|
"RootCmd": rootCmd,
|
|
"GlobalOpts": opt.Globals(),
|
|
})
|
|
}
|
|
|
|
var powerShellTpl = template.Must(template.New("PowerShell").Funcs(tplFuncs).Parse(`
|
|
{{- $rootCmd := .RootCmd -}}
|
|
{{- $progName := $rootCmd.Name -}}
|
|
{{- $varName := $rootCmd.Name | camel -}}
|
|
|
|
[scriptblock]$__{{ $varName }}CompleterBlock = {
|
|
param(
|
|
$WordToComplete,
|
|
$CommandAst,
|
|
$CursorPosition
|
|
)
|
|
}
|
|
|
|
Register-ArgumentCompleter -CommandName {{ $progName }} -ScriptBlock $__{{ $varName }}CompleterBlock
|
|
`))
|