summaryrefslogtreecommitdiff
path: root/cmd/cmd.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/cmd.go')
-rw-r--r--cmd/cmd.go27
1 files changed, 15 insertions, 12 deletions
diff --git a/cmd/cmd.go b/cmd/cmd.go
index f796ec8..224279e 100644
--- a/cmd/cmd.go
+++ b/cmd/cmd.go
@@ -13,7 +13,9 @@ import (
// CLI for command line
type CLI struct {
- Name string
+ Name string
+ InstallName string
+ UninstallName string
install bool
uninstall bool
@@ -30,10 +32,11 @@ const (
// install it or uninstall it.
func (f *CLI) Run() bool {
+ fs := flag.NewFlagSet(f.Name, 0)
// add flags and parse them in case they were not added and parsed
// by the main program
- f.AddFlags(nil, "", "")
- flag.Parse()
+ f.AddFlags(fs)
+ fs.Parse(os.Args[1:])
err := f.validate()
if err != nil {
@@ -86,24 +89,24 @@ func (f *CLI) prompt() {
// If flags is nil, the default command line flags will be taken.
// Pass non-empty strings as installName and uninstallName to override the default
// flag names.
-func (f *CLI) AddFlags(flags *flag.FlagSet, installName, uninstallName string) {
+func (f *CLI) AddFlags(flags *flag.FlagSet) {
if flags == nil {
flags = flag.CommandLine
}
- if installName == "" {
- installName = defaultInstallName
+ if f.InstallName == "" {
+ f.InstallName = defaultInstallName
}
- if uninstallName == "" {
- uninstallName = defaultUninstallName
+ if f.UninstallName == "" {
+ f.UninstallName = defaultUninstallName
}
- if flags.Lookup(installName) == nil {
- flags.BoolVar(&f.install, installName, false,
+ if flags.Lookup(f.InstallName) == nil {
+ flags.BoolVar(&f.install, f.InstallName, false,
fmt.Sprintf("Install completion for %s command", f.Name))
}
- if flags.Lookup(uninstallName) == nil {
- flags.BoolVar(&f.uninstall, uninstallName, false,
+ if flags.Lookup(f.UninstallName) == nil {
+ flags.BoolVar(&f.uninstall, f.UninstallName, false,
fmt.Sprintf("Uninstall completion for %s command", f.Name))
}
if flags.Lookup("y") == nil {