diff options
| author | Eyal Posener <[email protected]> | 2017-05-06 22:21:03 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2017-05-06 22:21:03 +0300 |
| commit | c26ef096c7990a5ae97b503545fd76ff6df388d6 (patch) | |
| tree | d0180b667269b985d15520f3b2e1aafc9292af6e /cmd.go | |
| parent | 2b6aed2b1e974a733c0dc614a9617c33a54c208c (diff) | |
| parent | 404634e843081e7010260bd95006b84d6c40a8fd (diff) | |
Merge pull request #4 from posener/doc
Doc
Diffstat (limited to 'cmd.go')
| -rw-r--r-- | cmd.go | 87 |
1 files changed, 0 insertions, 87 deletions
@@ -1,87 +0,0 @@ -package complete - -import ( - "errors" - "flag" - "fmt" - "os" - "strings" - - "github.com/posener/complete/install" -) - -func runCommandLine(cmd string) { - c := parseFlags(cmd) - err := c.validate() - if err != nil { - os.Stderr.WriteString(err.Error() + "\n") - os.Exit(1) - } - if !c.yes && !prompt(c.action(), cmd) { - fmt.Println("Cancelling...") - os.Exit(2) - } - fmt.Println(c.action() + "ing...") - if c.install { - err = install.Install(cmd, c.root) - } else { - err = install.Uninstall(cmd, c.root) - } - if err != nil { - fmt.Printf("%s failed! %s\n", c.action(), err) - os.Exit(3) - } - fmt.Println("Done!") -} - -func prompt(action, cmd string) bool { - fmt.Printf("%s bash completion for %s? ", action, cmd) - var answer string - fmt.Scanln(&answer) - - switch strings.ToLower(answer) { - case "y", "yes": - return true - default: - return false - } -} - -type config struct { - install bool - uninstall bool - root bool - yes bool -} - -func parseFlags(cmd string) config { - var c config - flag.BoolVar(&c.install, "install", false, - fmt.Sprintf("Install bash completion for %s command", cmd)) - flag.BoolVar(&c.uninstall, "uninstall", false, - fmt.Sprintf("Uninstall bash completion for %s command", cmd)) - flag.BoolVar(&c.root, "root", false, - "(Un)Install as root:\n"+ - " (Un)Install at /etc/bash_completion.d/ (user should have write permissions to that directory).\n"+ - " If not set, a complete command will be added(removed) to ~/.bashrc") - flag.BoolVar(&c.yes, "y", false, "Don't prompt user for typing 'yes'") - flag.Parse() - return c -} - -func (c config) validate() error { - if c.install && c.uninstall { - return errors.New("Install and uninstall are exclusive") - } - if !c.install && !c.uninstall { - return errors.New("Must specify -install or -uninstall") - } - return nil -} - -func (c config) action() string { - if c.install { - return "Install" - } - return "Uninstall" -} |
