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  }