From 3a63ebd2ff8645fcfbdfd9d42bc9812827af09ac Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Tue, 15 Aug 2017 12:36:24 +0200 Subject: [PATCH] Fix IFS in bash completion, reduce environment pollution. (#268) --- action/completion.go | 10 +++------- tests/completion_test.go | 10 +++------- 2 files changed, 6 insertions(+), 14 deletions(-) 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)