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_list_releases()
{ {
__helm_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" __helm_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
local out filter local out filter helm_binary
# Use ^ to map from the start of the release name
filter="^${words[c]}" # Use ^ to map from the start of the release name
if out=$(helm list $(__helm_override_flags) -a -q -m 1000 -f ${filter} 2>/dev/null); then 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" ) ) COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) )
fi fi
} }
__helm_list_repos() __helm_list_repos()
{ {
__helm_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" __helm_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
local out local out helm_binary
if out=$(helm repo list 2>/dev/null | tail +2 | cut -f1); then
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" ) ) COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) )
fi fi
} }
__helm_list_plugins() __helm_list_plugins()
{ {
__helm_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" __helm_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
local out local out helm_binary
if out=$(helm plugin list 2>/dev/null | tail +2 | cut -f1); then
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" ) ) COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) )
fi fi
} }
__helm_custom_func() __helm_custom_func()
{ {
__helm_debug "${FUNCNAME[0]}: last_command is $last_command" __helm_debug "${FUNCNAME[0]}: last_command is $last_command"

Loading…
Cancel
Save