github.com/Benchkram/bob@v0.0.0-20220321080157-7c8f3876e225/cli/cmd_completion.go (about) 1 package cli 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/Benchkram/bob/pkg/boblog" 8 "github.com/spf13/cobra" 9 ) 10 11 var completionCmd = &cobra.Command{ 12 Use: "completion", 13 Short: "Generates bash, zsh completions", 14 Long: `To create completion add 15 source <(bob completion) // for bash 16 source <(bob completion -z) // for zsh 17 to your .bashrc / .zshrc 18 `, 19 Run: func(cmd *cobra.Command, args []string) { 20 if len(args) == 0 { 21 if zsh { 22 err := rootCmd.GenZshCompletion(os.Stdout) 23 if err != nil { 24 boblog.Log.Error(err, "Unable to generate Zsh completion") 25 os.Exit(1) 26 } 27 } else { 28 err := rootCmd.GenBashCompletionV2(os.Stdout, true) 29 if err != nil { 30 boblog.Log.Error(err, "Unable to generate bash completion") 31 os.Exit(1) 32 } 33 } 34 35 return 36 } 37 38 switch args[0] { 39 case "install": 40 if zsh { 41 // TODO 42 fmt.Println("TODO") 43 } else { 44 completionPath := "/etc/bash_completion.d/bob" 45 46 err := rootCmd.GenBashCompletionFileV2(completionPath, true) 47 if err != nil { 48 boblog.Log.Error(err, "Unable to install bash completion") 49 os.Exit(1) 50 } 51 } 52 default: 53 break 54 } 55 56 }, 57 ValidArgs: []string{"install"}, 58 }