diff --git a/action/completion.go b/action/completion.go index 530ee76f..31e07b18 100644 --- a/action/completion.go +++ b/action/completion.go @@ -33,21 +33,17 @@ func (s *Action) Complete(*cli.Context) { // CompletionBash returns a bash script used for auto completion func (s *Action) CompletionBash(c *cli.Context) error { - out := `#!/bin/bash - -PROG=gopass - -_cli_bash_autocomplete() { + out := `_gopass_bash_autocomplete() { local cur opts base COMPREPLY=() - local IFS=$'\n' cur="${COMP_WORDS[COMP_CWORD]}" opts=$( ${COMP_WORDS[@]:0:$COMP_CWORD} --generate-bash-completion ) + local IFS=$'\n' COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 } -complete -F _cli_bash_autocomplete $PROG +complete -F _gopass_bash_autocomplete gopass ` fmt.Println(out) diff --git a/tests/completion_test.go b/tests/completion_test.go index 902a7e81..76e491d1 100644 --- a/tests/completion_test.go +++ b/tests/completion_test.go @@ -15,21 +15,17 @@ func TestCompletion(t *testing.T) { assert.Contains(t, out, "Source for auto completion in bash") assert.Contains(t, out, "Source for auto completion in zsh") - bash := `#!/bin/bash - -PROG=gopass - -_cli_bash_autocomplete() { + bash := `_gopass_bash_autocomplete() { local cur opts base COMPREPLY=() - local IFS=$'\n' cur="${COMP_WORDS[COMP_CWORD]}" opts=$( ${COMP_WORDS[@]:0:$COMP_CWORD} --generate-bash-completion ) + local IFS=$'\n' COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 } -complete -F _cli_bash_autocomplete $PROG` +complete -F _gopass_bash_autocomplete gopass` out, err = ts.run("completion bash") assert.NoError(t, err)