Properly detect Zsh shell

There is no need to define custom shell var, when Zsh can be detected by
checking SHELL env var.
This commit is contained in:
Ihor Urazov 2021-01-29 17:04:54 +02:00 committed by Dan Buch
parent f89647bd19
commit 1150c2e180
Signed by: meatballhat
GPG Key ID: A12F782281063434
4 changed files with 8 additions and 9 deletions

View File

@ -355,7 +355,7 @@ func ExampleApp_Run_bashComplete() {
func ExampleApp_Run_zshComplete() { func ExampleApp_Run_zshComplete() {
// set args for examples sake // set args for examples sake
os.Args = []string{"greet", "--generate-bash-completion"} os.Args = []string{"greet", "--generate-bash-completion"}
_ = os.Setenv("_CLI_ZSH_AUTOCOMPLETE_HACK", "1") _ = os.Setenv("SHELL", "/usr/bin/zsh")
app := NewApp() app := NewApp()
app.Name = "greet" app.Name = "greet"

View File

@ -4,9 +4,9 @@ local -a opts
local cur local cur
cur=${words[-1]} cur=${words[-1]}
if [[ "$cur" == "-"* ]]; then if [[ "$cur" == "-"* ]]; then
opts=("${(@f)$(_CLI_ZSH_AUTOCOMPLETE_HACK=1 ${words[@]:0:#words[@]-1} ${cur} --generate-bash-completion)}") opts=("${(@f)$(${words[@]:0:#words[@]-1} ${cur} --generate-bash-completion)}")
else else
opts=("${(@f)$(_CLI_ZSH_AUTOCOMPLETE_HACK=1 ${words[@]:0:#words[@]-1} --generate-bash-completion)}") opts=("${(@f)$(${words[@]:0:#words[@]-1} --generate-bash-completion)}")
fi fi
if [[ "${opts[1]}" != "" ]]; then if [[ "${opts[1]}" != "" ]]; then

View File

@ -1211,14 +1211,13 @@ func main() {
#### ZSH Support #### ZSH Support
Auto-completion for ZSH is also supported using the `autocomplete/zsh_autocomplete` Auto-completion for ZSH is also supported using the `autocomplete/zsh_autocomplete`
file included in this repo. Two environment variables are used, `PROG` and `_CLI_ZSH_AUTOCOMPLETE_HACK`. file included in this repo. One environment variable is used, `PROG`. Set
Set `PROG` to the program name as before, set `_CLI_ZSH_AUTOCOMPLETE_HACK` to `1`, and `PROG` to the program name as before, and then `source path/to/autocomplete/zsh_autocomplete`.
then `source path/to/autocomplete/zsh_autocomplete`. Adding the following lines to your ZSH Adding the following lines to your ZSH configuration file (usually `.zshrc`)
configuration file (usually `.zshrc`) will allow the auto-completion to persist across new shells: will allow the auto-completion to persist across new shells:
``` ```
PROG=<myprogram> PROG=<myprogram>
_CLI_ZSH_AUTOCOMPLETE_HACK=1
source path/to/autocomplete/zsh_autocomplete source path/to/autocomplete/zsh_autocomplete
``` ```
#### ZSH default auto-complete example #### ZSH default auto-complete example

View File

@ -102,7 +102,7 @@ func printCommandSuggestions(commands []*Command, writer io.Writer) {
if command.Hidden { if command.Hidden {
continue continue
} }
if os.Getenv("_CLI_ZSH_AUTOCOMPLETE_HACK") == "1" { if strings.Contains(os.Getenv("SHELL"), "zsh") {
for _, name := range command.Names() { for _, name := range command.Names() {
_, _ = fmt.Fprintf(writer, "%s:%s\n", name, command.Usage) _, _ = fmt.Fprintf(writer, "%s:%s\n", name, command.Usage)
} }