mirror of
https://github.com/helm/helm.git
synced 2026-05-28 04:35:48 -04:00
Merge pull request #5829 from VilledeMontreal/feat-v3/dynamicCopmpletionReleases
helm v3: dynamic completion of releases
This commit is contained in:
commit
0b41b90a60
3 changed files with 68 additions and 8 deletions
6
Gopkg.lock
generated
6
Gopkg.lock
generated
|
|
@ -879,15 +879,15 @@
|
|||
version = "v1.4.1"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:e01b05ba901239c783dfe56450bcde607fc858908529868259c9a8765dc176d0"
|
||||
digest = "1:2e72f9cdc8b6f94a145fa1c97e305e1654d40507d04d2fbb0c37bf461a4b85f7"
|
||||
name = "github.com/spf13/cobra"
|
||||
packages = [
|
||||
".",
|
||||
"doc",
|
||||
]
|
||||
pruneopts = "UT"
|
||||
revision = "ef82de70bb3f60c65fb8eebacbb2d122ef517385"
|
||||
version = "v0.0.3"
|
||||
revision = "67fc4837d267bc9bfd6e47f77783fcc3dffc68de"
|
||||
version = "v0.0.4"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:c1b1102241e7f645bc8e0c22ae352e8f0dc6484b6cb4d132fa9f24174e0119e2"
|
||||
|
|
|
|||
|
|
@ -109,3 +109,7 @@
|
|||
[[constraint]]
|
||||
name = "github.com/xeipuuv/gojsonschema"
|
||||
version = "1.1.0"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/spf13/cobra"
|
||||
version = "0.0.4"
|
||||
|
|
|
|||
|
|
@ -29,6 +29,61 @@ import (
|
|||
"helm.sh/helm/pkg/registry"
|
||||
)
|
||||
|
||||
const (
|
||||
bashCompletionFunc = `
|
||||
__helm_override_flag_list=(--kubeconfig --kube-context --home --namespace -n)
|
||||
__helm_override_flags()
|
||||
{
|
||||
local ${__helm_override_flag_list[*]##*-} two_word_of of var
|
||||
for w in "${words[@]}"; do
|
||||
if [ -n "${two_word_of}" ]; then
|
||||
eval "${two_word_of##*-}=\"${two_word_of}=\${w}\""
|
||||
two_word_of=
|
||||
continue
|
||||
fi
|
||||
for of in "${__helm_override_flag_list[@]}"; do
|
||||
case "${w}" in
|
||||
${of}=*)
|
||||
eval "${of##*-}=\"${w}\""
|
||||
;;
|
||||
${of})
|
||||
two_word_of="${of}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
for var in "${__helm_override_flag_list[@]##*-}"; do
|
||||
if eval "test -n \"\$${var}\""; then
|
||||
eval "echo \${${var}}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
__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
|
||||
COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) )
|
||||
fi
|
||||
}
|
||||
__helm_custom_func()
|
||||
{
|
||||
__helm_debug "${FUNCNAME[0]}: last_command is $last_command"
|
||||
case ${last_command} in
|
||||
helm_uninstall | helm_history | helm_status | helm_test_run |\
|
||||
helm_upgrade | helm_rollback | helm_get_*)
|
||||
__helm_list_releases
|
||||
return
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
}
|
||||
`
|
||||
)
|
||||
|
||||
var globalUsage = `The Kubernetes package manager
|
||||
|
||||
To begin working with Helm, run the 'helm init' command:
|
||||
|
|
@ -53,11 +108,12 @@ Environment:
|
|||
|
||||
func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string) *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "helm",
|
||||
Short: "The Helm package manager for Kubernetes.",
|
||||
Long: globalUsage,
|
||||
SilenceUsage: true,
|
||||
Args: require.NoArgs,
|
||||
Use: "helm",
|
||||
Short: "The Helm package manager for Kubernetes.",
|
||||
Long: globalUsage,
|
||||
SilenceUsage: true,
|
||||
Args: require.NoArgs,
|
||||
BashCompletionFunction: bashCompletionFunc,
|
||||
}
|
||||
flags := cmd.PersistentFlags()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue