mirror of https://github.com/knative/func.git
49 lines
955 B
Go
49 lines
955 B
Go
package cmd
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
func NewCompletionCmd() *cobra.Command {
|
|
return &cobra.Command{
|
|
Use: "completion <bash|zsh|fish>",
|
|
Short: "Output functions shell completion code",
|
|
Long: `To load completion run
|
|
|
|
For zsh:
|
|
source <(func completion zsh)
|
|
|
|
If you would like to use alias:
|
|
alias f=func
|
|
compdef _func f
|
|
|
|
For bash:
|
|
source <(func completion bash)
|
|
|
|
`,
|
|
ValidArgs: []string{"bash", "zsh", "fish"},
|
|
Args: cobra.ExactArgs(1),
|
|
RunE: func(cmd *cobra.Command, args []string) (err error) {
|
|
if len(args) < 1 {
|
|
return errors.New("missing argument")
|
|
}
|
|
switch args[0] {
|
|
case "bash":
|
|
err = cmd.Root().GenBashCompletion(os.Stdout)
|
|
case "zsh":
|
|
err = cmd.Root().GenZshCompletion(os.Stdout)
|
|
case "fish":
|
|
err = cmd.Root().GenFishCompletion(os.Stdout, true)
|
|
default:
|
|
err = errors.New("unknown shell, only bash, zsh and fish are supported")
|
|
}
|
|
|
|
return err
|
|
},
|
|
}
|
|
|
|
}
|