Add a hack so that zsh completion only runs for zsh

main
Dan Buch 8 years ago
parent 1cbb9a7f30
commit 363d9c9a31
No known key found for this signature in database
GPG Key ID: FAEF12936DD3E3EC

@ -160,6 +160,44 @@ func ExampleApp_Run_bashComplete() {
// h // h
} }
func ExampleApp_Run_zshComplete() {
// set args for examples sake
os.Args = []string{"greet", "--generate-bash-completion"}
os.Setenv("_CLI_ZSH_AUTOCOMPLETE_HACK", "1")
app := NewApp()
app.Name = "greet"
app.EnableBashCompletion = true
app.Commands = []Command{
{
Name: "describeit",
Aliases: []string{"d"},
Usage: "use it to see a description",
Description: "This is how we describe describeit the function",
Action: func(c *Context) error {
fmt.Printf("i like to describe things")
return nil
},
}, {
Name: "next",
Usage: "next example",
Description: "more stuff to see when generating bash completion",
Action: func(c *Context) error {
fmt.Printf("the next example")
return nil
},
},
}
app.Run(os.Args)
// Output:
// describeit:use it to see a description
// d:use it to see a description
// next:next example
// help:Shows a list of commands or help for one command
// h:Shows a list of commands or help for one command
}
func TestApp_Run(t *testing.T) { func TestApp_Run(t *testing.T) {
s := "" s := ""

@ -1,7 +1,7 @@
_cli_zsh_autocomplete() { _cli_zsh_autocomplete() {
local -a opts local -a opts
opts=("${(@f)$(${words[@]:0:#words[@]-1} --generate-bash-completion)}") opts=("${(@f)$(_CLI_ZSH_AUTOCOMPLETE_HACK=1 ${words[@]:0:#words[@]-1} --generate-bash-completion)}")
_describe 'values' opts _describe 'values' opts

@ -128,8 +128,14 @@ func DefaultAppComplete(c *Context) {
if command.Hidden { if command.Hidden {
continue continue
} }
for _, name := range command.Names() { if os.Getenv("_CLI_ZSH_AUTOCOMPLETE_HACK") == "1" {
fmt.Fprintf(c.App.Writer, "%s:%s\n", name, command.Usage) for _, name := range command.Names() {
fmt.Fprintf(c.App.Writer, "%s:%s\n", name, command.Usage)
}
} else {
for _, name := range command.Names() {
fmt.Fprintf(c.App.Writer, "%s\n", name)
}
} }
} }
} }

Loading…
Cancel
Save