summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/cmd.go28
-rw-r--r--example/self/main.go4
2 files changed, 15 insertions, 17 deletions
diff --git a/cmd/cmd.go b/cmd/cmd.go
index f796ec8..7137dee 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
@@ -29,12 +31,6 @@ const (
// this is used when the complete is not completing words, but to
// install it or uninstall it.
func (f *CLI) Run() bool {
-
- // add flags and parse them in case they were not added and parsed
- // by the main program
- f.AddFlags(nil, "", "")
- flag.Parse()
-
err := f.validate()
if err != nil {
os.Stderr.WriteString(err.Error() + "\n")
@@ -86,24 +82,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 {
diff --git a/example/self/main.go b/example/self/main.go
index 068a0ac..ae4c2e4 100644
--- a/example/self/main.go
+++ b/example/self/main.go
@@ -28,7 +28,9 @@ func main() {
// it is possible to set custom flags name
// so when one will type 'self -h', he will see '-complete' to install the
// completion and -uncomplete to uninstall it.
- cmp.AddFlags(nil, "complete", "uncomplete")
+ cmp.CLI.InstallName = "complete"
+ cmp.CLI.UninstallName = "uncomplete"
+ cmp.AddFlags(nil)
// parse the flags - both the program's flags and the completion flags
flag.Parse()