package main
import (
"fmt"
"github.com/spf13/cobra"
)
func completionCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "completion [bash|zsh|fish]",
Short: "Generate shell completion scripts",
Long: `Generate shell completion scripts for bash, zsh, or fish.
To load completions:
Bash:
$ source <(same completion bash)
# Or permanently:
$ same completion bash > /etc/bash_completion.d/same
Zsh:
$ same completion zsh > "${fpath[1]}/_same"
Fish:
$ same completion fish | source
# Or permanently:
$ same completion fish > ~/.config/fish/completions/same.fish
`,
Args: cobra.ExactArgs(1),
ValidArgs: []string{"bash", "zsh", "fish"},
RunE: func(cmd *cobra.Command, args []string) error {
switch args[0] {
case "bash":
return cmd.Root().GenBashCompletion(cmd.OutOrStdout())
case "zsh":
return cmd.Root().GenZshCompletion(cmd.OutOrStdout())
case "fish":
return cmd.Root().GenFishCompletion(cmd.OutOrStdout(), true)
default:
return fmt.Errorf("unsupported shell: %s (use bash, zsh, or fish)", args[0])
}
},
}
return cmd
}