diff options
| author | Eyal Posener <[email protected]> | 2019-11-14 06:51:44 +0200 |
|---|---|---|
| committer | Eyal Posener <[email protected]> | 2019-11-18 01:05:47 +0200 |
| commit | 8724aaf18312e54750540a9578e00d61b1c545d8 (patch) | |
| tree | d3e736b4fb279975bbcc017ae1bad53e454c5773 /example/command/main.go | |
| parent | 05b68ffc813dd10c420993cb1cf927b346c057b8 (diff) | |
V2
Diffstat (limited to 'example/command/main.go')
| -rw-r--r-- | example/command/main.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/example/command/main.go b/example/command/main.go new file mode 100644 index 0000000..0b073d9 --- /dev/null +++ b/example/command/main.go @@ -0,0 +1,45 @@ +// command shows how to have bash completion to an arbitrary Go program using the `complete.Command` +// struct. +package main + +import ( + "flag" + "fmt" + "os" + + "github.com/posener/complete" + "github.com/posener/complete/predict" +) + +var ( + // Add variables to the program. + name = flag.String("name", "", "Give your name") + something = flag.String("something", "", "Expect somthing, but we don't know what, so no other completion options will be provided.") + nothing = flag.String("nothing", "", "Expect nothing after flag, so other completion can be provided.") +) + +func main() { + // Create the complete command. + // Here we define completion values for each flag. + cmd := &complete.Command{ + Flags: map[string]complete.Predictor{ + "name": predict.Set{"foo", "bar", "foo bar"}, + "something": predict.Something, + "nothing": predict.Nothing, + }, + } + + // Run the completion. + cmd.Complete("command") + + // Parse the flags. + flag.Parse() + + // Program logic. + if *name == "" { + fmt.Println("Your name is missing") + os.Exit(1) + } + + fmt.Println("Hi,", name) +} |
