Dynamic completion to use same binary as main call

The binary of Helm to use for dynamic completion should be the same
as the actual Helm binary being used.  For example, if PATH points
to a version of helm v2, but the user calls bin/helm to use a local
v3 version, then dynamic completion should also use bin/helm.
If not, in this example, the dynamic completion will use the
information returned by helm v2.

This improvement is particularly useful for users that will run both
helm v2 and helm v3 at the same time.

Signed-off-by: Marc Khouzam <marc.khouzam@montreal.ca>
pull/6472/head
Marc Khouzam 5 years ago
parent e0a119c662
commit a46694c8d6

@ -91,30 +91,49 @@ __helm_get_namespaces()
__helm_list_releases()
{
__helm_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
local out filter
# Use ^ to map from the start of the release name
filter="^${words[c]}"
if out=$(helm list $(__helm_override_flags) -a -q -m 1000 -f ${filter} 2>/dev/null); then
__helm_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
local out filter helm_binary
# Use ^ to map from the start of the release name
filter="^${words[c]}"
helm_binary="${words[0]}"
__helm_debug "${FUNCNAME[0]}: helm_binary is ${helm_binary}"
# Use eval in case helm_binary or __helm_override_flags contains a variable (e.g., $HOME/bin/h3)
if out=$(eval ${helm_binary} list $(__helm_override_flags) -a -q -m 1000 -f ${filter} 2>/dev/null); then
COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) )
fi
}
__helm_list_repos()
{
__helm_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
local out
if out=$(helm repo list 2>/dev/null | tail +2 | cut -f1); then
local out helm_binary
helm_binary="${words[0]}"
__helm_debug "${FUNCNAME[0]}: helm_binary is ${helm_binary}"
# Use eval in case helm_binary contains a variable (e.g., $HOME/bin/h3)
if out=$(eval ${helm_binary} repo list 2>/dev/null | tail +2 | cut -f1); then
COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) )
fi
}
__helm_list_plugins()
{
__helm_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
local out
if out=$(helm plugin list 2>/dev/null | tail +2 | cut -f1); then
local out helm_binary
helm_binary="${words[0]}"
__helm_debug "${FUNCNAME[0]}: helm_binary is ${helm_binary}"
# Use eval in case helm_binary contains a variable (e.g., $HOME/bin/h3)
if out=$(eval ${helm_binary} plugin list 2>/dev/null | tail +2 | cut -f1); then
COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) )
fi
}
__helm_custom_func()
{
__helm_debug "${FUNCNAME[0]}: last_command is $last_command"

Loading…
Cancel
Save