mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-26 02:13:38 +08:00
9367d4ff71
This does not include checks/function.fish because that currently includes a "; end" in a message that indent would remove, breaking the test.
288 lines
14 KiB
Fish
288 lines
14 KiB
Fish
# helm - is a tool for managing Kubernetes charts. Charts are packages
|
|
# of pre-configured Kubernetes resources.
|
|
# See: https://github.com/kubernetes/helm
|
|
|
|
function __helm_using_command
|
|
set -l cmd (commandline -poc)
|
|
set -l found
|
|
|
|
test (count $cmd) -gt (count $argv)
|
|
or return 1
|
|
|
|
set -e cmd[1]
|
|
|
|
for i in $argv
|
|
contains -- $i $cmd
|
|
and set found $found $i
|
|
end
|
|
|
|
test "$argv" = "$found"
|
|
end
|
|
|
|
function __helm_seen_any_subcommand_from -a cmd
|
|
__fish_seen_subcommand_from (__helm_subcommands $cmd | string replace -r '\t.*$' '')
|
|
end
|
|
|
|
function __helm_subcommands -a cmd
|
|
switch $cmd
|
|
case ''
|
|
echo create\t'Create a new chart with the given name'
|
|
echo delete\t'Delete the release from Kubernetes'
|
|
echo dependency\t"Manage a chart's dependencies"
|
|
echo fetch\t'Download a chart from a repository'
|
|
echo get\t'Download a named release'
|
|
echo history\t'Fetch release history'
|
|
echo home\t'Display the location of HELM_HOME'
|
|
echo init\t'Initialize Helm on both client and server'
|
|
echo inspect\t'Inspect a chart'
|
|
echo install\t'Install a chart archive'
|
|
echo lint\t'Examine a chart for possible issues'
|
|
echo list\t'List releases'
|
|
echo package\t'Package a chart directory into a chart archive'
|
|
echo repo\t'Operate on chart repositories'
|
|
echo rollback\t'Roll back a release to a previous revision'
|
|
echo search\t'Search for a keyword in charts'
|
|
echo serve\t'Start a local http web server'
|
|
echo status\t'Display the status of the named release'
|
|
echo upgrade\t'Upgrade a release'
|
|
echo verify\t'Verify that a chart has been signed and is valid'
|
|
echo version\t'Print the client/server version information'
|
|
case dependency
|
|
echo build\t'Rebuild the charts/ directory'
|
|
echo list\t'List the dependencies for the given chart'
|
|
echo update\t'Update charts/'
|
|
case get
|
|
echo hooks\t'Download all hooks for a named release'
|
|
echo manifest\t'Download the manifest for a named release'
|
|
echo values\t'Download the values file for a named release'
|
|
case inspect
|
|
echo chart\t'Show inspect chart'
|
|
echo values\t'Show inspect values'
|
|
case repo
|
|
echo add\t'Add a chart repository'
|
|
echo index\t'Generate an index file'
|
|
echo list\t'List chart repositories'
|
|
echo remove\t'Remove a chart repository'
|
|
echo update\t'Update information on available charts'
|
|
end
|
|
end
|
|
|
|
function __helm_kube_contexts
|
|
kubectl config get-contexts -o name 2>/dev/null
|
|
end
|
|
|
|
function __helm_kube_namespaces
|
|
kubectl get namespaces -o name | string replace namespace/ ''
|
|
end
|
|
|
|
function __helm_releases
|
|
helm ls --short 2>/dev/null
|
|
end
|
|
|
|
function __helm_release_completions
|
|
helm ls 2>/dev/null | awk 'NR >= 2 { print $1"\tRelease of "$NF }'
|
|
end
|
|
|
|
function __helm_release_revisions
|
|
set -l cmd (commandline -poc)
|
|
|
|
for pair in (helm ls | awk 'NR >= 2 { print $1" "$2 }')
|
|
echo $pair | read -l release revision
|
|
|
|
if contains $release $cmd
|
|
seq 1 $revision
|
|
return
|
|
end
|
|
end
|
|
end
|
|
|
|
function __helm_repositories
|
|
helm repo list | awk 'NR >= 2 { print $1 }'
|
|
end
|
|
|
|
function __helm_charts
|
|
helm search | awk 'NR >= 2 && !/^local\// { print $1 }'
|
|
end
|
|
|
|
function __helm_chart_versions
|
|
set -l cmd (commandline -poc)
|
|
|
|
for pair in (helm search -l | awk 'NR >= 2 { print $1" "$2 }')
|
|
echo $pair | read -l chart version
|
|
|
|
if contains $chart $cmd
|
|
echo $version
|
|
end
|
|
end
|
|
end
|
|
|
|
#
|
|
# Global Flags
|
|
#
|
|
complete -c helm -l debug -f -d 'Enable verbose output'
|
|
complete -c helm -l home -r -d 'Location of your Helm config'
|
|
complete -c helm -l host -x -d 'Address of tiller'
|
|
complete -c helm -l kube-context -x -a '(__helm_kube_contexts)' -d 'Name of the kubeconfig context to use'
|
|
complete -c helm -s h -l help -f -d 'More information about a command'
|
|
|
|
#
|
|
# Commands
|
|
#
|
|
|
|
# helm [command]
|
|
complete -c helm -n 'not __helm_seen_any_subcommand_from ""' -x -a '(__helm_subcommands "")'
|
|
|
|
# helm create NAME [flags]
|
|
complete -c helm -n '__helm_using_command create' -s p -l starter -x -d 'The named Helm starter scaffold'
|
|
|
|
# helm delete [flags] RELEASE [...]
|
|
complete -c helm -n '__helm_using_command delete' -f -a '(__helm_release_completions)' -d Release
|
|
|
|
complete -c helm -n '__helm_using_command delete' -l dry-run -f -d 'Simulate a delete'
|
|
complete -c helm -n '__helm_using_command delete' -l no-hooks -f -d 'Prevent hooks from running during deletion'
|
|
complete -c helm -n '__helm_using_command delete' -l purge -f -d 'Remove the release from the store'
|
|
|
|
# helm dependency [command]
|
|
complete -c helm -n '__helm_using_command dependency; and not __helm_seen_any_subcommand_from dependency' -x -a '(__helm_subcommands dependency)'
|
|
|
|
# helm dependency build [flags] CHART
|
|
complete -c helm -n '__helm_using_command dependency build' -l keyring -r -d 'Keyring containing public keys'
|
|
complete -c helm -n '__helm_using_command dependency build' -l verify -f -d 'Verify the packages against signatures'
|
|
|
|
# helm dependency update [flags] CHART
|
|
complete -c helm -n '__helm_using_command dependency update' -l keyring -r -d 'Keyring containing public keys'
|
|
complete -c helm -n '__helm_using_command dependency update' -l verify -f -d 'Verify the packages against signatures'
|
|
|
|
# helm fetch [flags] [chart URL | repo/chartname] [...]
|
|
complete -c helm -n '__helm_using_command fetch; and not __fish_seen_subcommand_from (__helm_charts)' -f -a '(__helm_charts)' -d Chart
|
|
|
|
complete -c helm -n '__helm_using_command fetch' -s d -l destination -r -d 'Location to write the chart'
|
|
complete -c helm -n '__helm_using_command fetch' -l keyring -r -d 'Keyring containing public keys'
|
|
complete -c helm -n '__helm_using_command fetch' -l prov -f -d 'Fetch the provenance file'
|
|
complete -c helm -n '__helm_using_command fetch' -l untar -f -d 'Will untar the chart after downloading it'
|
|
complete -c helm -n '__helm_using_command fetch --untar' -l untardir -r -d 'Directory into which the chart is expanded'
|
|
complete -c helm -n '__helm_using_command fetch' -l verify -f -d 'Verify the package against its signature'
|
|
complete -c helm -n '__helm_using_command fetch' -l version -x -a '(__helm_chart_versions)' -d 'Chart version'
|
|
|
|
# helm get [command]
|
|
complete -c helm -n '__helm_using_command get; and not __helm_seen_any_subcommand_from get' -f -a '(__helm_subcommands get)'
|
|
|
|
# helm get [flags] RELEASE
|
|
complete -c helm -n '__helm_using_command get' -f -a '(__helm_release_completions)' -d Release
|
|
|
|
complete -c helm -n '__helm_using_command get' -l revision -x -a '(__helm_release_revisions)' -d Revision
|
|
|
|
# helm get values [flags] RELEASE
|
|
complete -c helm -n '__helm_using_command get values' -s a -l all -f -d 'Dump all (computed) values'
|
|
|
|
# helm history [flags] RELEASE
|
|
complete -c helm -n '__helm_using_command history' -f -a '(__helm_release_completions)' -d Release
|
|
|
|
complete -c helm -n '__helm_using_command history' -l max -x -d 'Maximum number of revision to include in history'
|
|
|
|
# helm init [flags]
|
|
complete -c helm -n '__helm_using_command init' -l canary-image -f -d 'Use the canary tiller image'
|
|
complete -c helm -n '__helm_using_command init' -s c -l client-only -f -d 'Do not install tiller'
|
|
complete -c helm -n '__helm_using_command init' -l dry-run -f -d 'Do not install local or remote'
|
|
complete -c helm -n '__helm_using_command init' -s i -l tiller-image -x -d 'Override tiller image'
|
|
|
|
# helm inspect [command]
|
|
complete -c helm -n '__helm_using_command inspect; and not __helm_seen_any_subcommand_from inspect' -f -a '(__helm_subcommands inspect)'
|
|
|
|
# helm inspect [CHART] [flags]
|
|
complete -c helm -n '__helm_using_command inspect; and not __fish_seen_subcommand_from (__helm_charts)' -a '(__helm_charts)' -d Chart
|
|
|
|
complete -c helm -n '__helm_using_command inspect' -l keyring -r -d 'Keyring containing public verification keys'
|
|
complete -c helm -n '__helm_using_command inspect' -l verify -f -d 'Verify the provenance data for this chart'
|
|
complete -c helm -n '__helm_using_command inspect' -l version -x -a '(__helm_chart_versions)' -d 'Chart version'
|
|
|
|
# helm install [CHART] [flags]
|
|
complete -c helm -n '__helm_using_command install; and not __fish_seen_subcommand_from (__helm_charts)' -a '(__helm_charts)' -d Chart
|
|
|
|
complete -c helm -n '__helm_using_command install' -l dry-run -f -d 'Simulate an install'
|
|
complete -c helm -n '__helm_using_command install' -l keyring -r -d 'Keyring containing public verification keys'
|
|
complete -c helm -n '__helm_using_command install' -s n -l name -x -d 'Release name'
|
|
complete -c helm -n '__helm_using_command install' -l name-template -r -d 'Specify template used to name the release'
|
|
complete -c helm -n '__helm_using_command install' -l namespace -x -a '(__helm_kube_namespaces)' -d Namespace
|
|
complete -c helm -n '__helm_using_command install' -l no-hooks -f -d 'Prevent hooks from running during install'
|
|
complete -c helm -n '__helm_using_command install' -l replace -f -d 'Re-use the given name if already used'
|
|
complete -c helm -n '__helm_using_command install' -l set -x -d 'Set values on the command line'
|
|
complete -c helm -n '__helm_using_command install' -s f -l values -r -d 'Specify values in a YAML file'
|
|
complete -c helm -n '__helm_using_command install' -l verify -f -d 'Verify the package before installing it'
|
|
complete -c helm -n '__helm_using_command install' -l version -x -a '(__helm_chart_versions)' -d 'Chart version'
|
|
|
|
# helm lint [flags] PATH
|
|
complete -c helm -n '__helm_using_command lint' -l strict -f -d 'Fail on lint warnings'
|
|
|
|
# helm list [flags] [FILTER]
|
|
complete -c helm -n '__helm_using_command list' -l all -f -d 'Show all releases'
|
|
complete -c helm -n '__helm_using_command list' -s d -l date -f -d 'Sort by release date'
|
|
complete -c helm -n '__helm_using_command list' -l deleted -f -d 'Show deleted releases'
|
|
complete -c helm -n '__helm_using_command list' -l deleting -f -d 'Show releases that are currently being deleted'
|
|
complete -c helm -n '__helm_using_command list' -l deployed -f -d 'Show deployed releases'
|
|
complete -c helm -n '__helm_using_command list' -l failed -f -d 'Show failed releases'
|
|
complete -c helm -n '__helm_using_command list' -s m -l max -x -d 'Maximum number of releases to fetch'
|
|
complete -c helm -n '__helm_using_command list' -s o -l offset -x -a '(__helm_release_completions)' -d 'Next release name in the list'
|
|
complete -c helm -n '__helm_using_command list' -s r -l reverse -f -d 'Reverse the sort order'
|
|
complete -c helm -n '__helm_using_command list' -s q -l short -f -d 'Output short listing format'
|
|
|
|
# helm package [flags] [CHART_PATH] [...]
|
|
complete -c helm -n '__helm_using_command package' -l key -x -d 'Name of the key to use when signing'
|
|
complete -c helm -n '__helm_using_command package' -l keyring -r -d 'Keyring containing public keys'
|
|
complete -c helm -n '__helm_using_command package' -l save -f -d 'Save packaged chart to local chart repository'
|
|
complete -c helm -n '__helm_using_command package' -l sign -f -d 'Use a PGP private key to sign this package'
|
|
|
|
# helm repo [command]
|
|
complete -c helm -n '__helm_using_command repo; and not __helm_seen_any_subcommand_from repo' -f -a '(__helm_subcommands repo)'
|
|
|
|
# helm repo add [flags] [NAME] [URL]
|
|
complete -c helm -n '__helm_using_command repo add' -l no-update -f -d 'Raise error if repo is already registered'
|
|
|
|
# helm repo index [flags] [DIR]
|
|
complete -c helm -n '__helm_using_command repo index' -l merge -x -d 'Merge the generated index into the given index'
|
|
complete -c helm -n '__helm_using_command repo index' -l url -x -d 'URL of chart repository'
|
|
|
|
# helm repo remove [flags] [NAME]
|
|
complete -c helm -n '__helm_using_command repo remove' -f -a '(__helm_repositories)' -d Repository
|
|
|
|
# helm rollback [RELEASE] [REVISION] [flags]
|
|
complete -c helm -n '__helm_using_command rollback; and not __fish_seen_subcommand_from (__helm_releases)' -f -a '(__helm_release_completions)' -d Release
|
|
complete -c helm -n '__helm_using_command rollback' -f -a '(__helm_release_revisions)' -d Revision
|
|
|
|
complete -c helm -n '__helm_using_command rollback' -l dry-run -f -d 'Simulate a rollback'
|
|
complete -c helm -n '__helm_using_command rollback' -l no-hooks -f -d 'Prevent hooks from running during rollback'
|
|
|
|
# helm search [keyword] [flags]
|
|
complete -c helm -n '__helm_using_command search' -s r -l regexp -f -d 'Use regular expressions for searching'
|
|
complete -c helm -n '__helm_using_command search' -s l -l versions -f -d 'Show the long listing'
|
|
|
|
# helm serve [flags]
|
|
complete -c helm -n '__helm_using_command serve' -l address -x -d 'Address to listen on'
|
|
complete -c helm -n '__helm_using_command serve' -l repo-path -r -d 'Path from which to serve charts'
|
|
|
|
# helm status [flags] RELEASE
|
|
complete -c helm -n '__helm_using_command status' -f -a '(__helm_release_completions)' -d Release
|
|
|
|
complete -c helm -n '__helm_using_command status' -l revision -x -a '(__helm_release_revisions)' -d Revision
|
|
|
|
# helm upgrade [RELEASE] [CHART] [flags]
|
|
complete -c helm -n '__helm_using_command upgrade; and not __fish_seen_subcommand_from (__helm_releases)' -f -a '(__helm_release_completions)' -d Release
|
|
complete -c helm -n '__helm_using_command upgrade; and __fish_seen_subcommand_from (__helm_releases); and not __fish_seen_subcommand_from (__helm_charts)' -a '(__helm_charts)' -d Chart
|
|
|
|
complete -c helm -n '__helm_using_command upgrade' -l dry-run -f -d 'Simulate an upgrade'
|
|
complete -c helm -n '__helm_using_command upgrade' -s i -l install -f -d "Run an install if the release don't exists"
|
|
complete -c helm -n '__helm_using_command upgrade' -l keyring -r -d 'Keyring containing public keys'
|
|
complete -c helm -n '__helm_using_command upgrade' -l namespace -x -a '(__helm_kube_namespaces)' -d Namespace
|
|
complete -c helm -n '__helm_using_command upgrade' -l no-hooks -f -d 'Disable pre/post upgrade hooks'
|
|
complete -c helm -n '__helm_using_command upgrade' -l set -x -d 'Set values on the command line'
|
|
complete -c helm -n '__helm_using_command upgrade' -s f -l values -r -d 'Specify values in a YAML file'
|
|
complete -c helm -n '__helm_using_command upgrade' -l verify -f -d 'Verify the provenance of the chart before upgrading'
|
|
complete -c helm -n '__helm_using_command upgrade' -l version -x -a '(__helm_chart_versions)' -d 'Chart version'
|
|
|
|
# helm verify [flags] PATH
|
|
complete -c helm -n '__helm_using_command verify' -l keyring -r -d 'Keyring containing public keys'
|
|
|
|
# helm version [flags]
|
|
complete -c helm -n '__helm_using_command version' -s c -l client -f -d 'Show the client version'
|
|
complete -c helm -n '__helm_using_command version' -s s -l server -f -d 'Show the server version'
|