cmd/completions_powershell.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
`))