id = "helm" name = "Helm" homepage = "https://helm.sh" description = "The package manager for Kubernetes." icon = "SimpleIcons:helm" executables = ["helm"] [dotfiles] # https://helm.sh/docs/helm/helm/ — $HELM_CONFIG_HOME, else the XDG variables, # else a per-OS default: $HOME/.config/helm on Linux, # $HOME/Library/Preferences/helm on macOS, %APPDATA%\helm on Windows. The XDG # variable and the Windows default together are [configHome]; the macOS default # is [preferences], which is a different base directory rather than another # spelling of the same one. $HELM_REPOSITORY_CONFIG is repositories.yaml inside # it and $HELM_REGISTRY_CONFIG is registry/config.json. paths = [ "[configHome]/helm/repositories.yaml", "[preferences]/helm/repositories.yaml", ] # Cache and data from the same table: downloaded chart archives, repository # indexes, plugins and starters. The cache is [cacheHome]; the macOS data # default is $HOME/Library/helm rather than Application Support, so the data # directories keep their literal spellings. The Windows cache is under %TEMP%, # which this catalog has no spelling for; a consumer never syncs it anyway. exclude = [ "[cacheHome]/helm/", "~/.local/share/helm/", "~/Library/helm/", ] # registry/config.json is a Docker-style auth file: every registry # `helm registry login` touched, with the credential base64 encoded in `auth`. secret = [ "[configHome]/helm/registry/config.json", "[preferences]/helm/registry/config.json", ] # `helm repo add --username --password` writes the password straight into # repositories.yaml (pkg/repo/chartrepo.go, `Entry.Password`). Both base # directories, or the password is lifted out on Linux and Windows and syncs in # the clear from a macOS machine. [[dotfiles.secret_paths]] file = [ "[configHome]/helm/repositories.yaml", "[preferences]/helm/repositories.yaml", ] match = { key_path = ["repositories.*.password"] } # certFile / keyFile / caFile are absolute paths to TLS material sitting on # this machine's disk (same struct). The repository list itself is worth # syncing; the paths into a local ~/.certs are not — but where this machine # keeps the client certificate for a repository is something the user has to # put back after a rebuild, so it is kept: backup. [[dotfiles.machine_lines]] file = [ "[configHome]/helm/repositories.yaml", "[preferences]/helm/repositories.yaml", ] match = { key_path = [ "repositories.*.certFile", "repositories.*.keyFile", "repositories.*.caFile", ] } scope = "backup" [commands] format = 1 label = "Helm package manager" description = "Install, upgrade, render, lint and list Helm releases. Chart repositories, registry, plugin and rollback commands are left out; TLS and credential flags are not offered." quality = "ai-draft" base = "fig:helm" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/helm.ts" license = "MIT" [[commands.subcommand]] path = ["install"] label = "Install a chart" description = "Install a chart as a new release. Credentials and TLS options are not covered." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/helm.ts" license = "MIT" [[commands.subcommand.field]] id = "release" label = "Release name" type = "string" position = 0 description = "Name of the new release." sources = ["fig"] [[commands.subcommand.field]] id = "chart" label = "Chart" type = "string" position = 1 description = "Chart reference, local path, archive or URL." sources = ["fig"] [[commands.subcommand.field]] id = "namespace" label = "Namespace" type = "string" option = ["--namespace", "-n"] description = "Namespace scope for this request." sources = ["fig"] [[commands.subcommand.field]] id = "values" label = "Values files" type = "string" option = ["--values", "-f"] description = "YAML files or URLs; later files override earlier ones." multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "set" label = "Set values" type = "string" option = ["--set"] description = "key=value overrides, applied after values files." multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "version" label = "Chart version" type = "string" option = ["--version"] description = "Version constraint for the chart." sources = ["fig"] [[commands.subcommand.field]] id = "create_namespace" label = "Create namespace" type = "boolean" option = ["--create-namespace"] description = "Create the release namespace if not present." sources = ["fig"] [[commands.subcommand.field]] id = "wait" label = "Wait until ready" type = "boolean" option = ["--wait"] description = "Wait for pods, services and workloads to be ready." sources = ["fig"] [[commands.subcommand.field]] id = "atomic" label = "Atomic" type = "boolean" option = ["--atomic"] description = "Roll back or delete on failure; implies --wait." sources = ["fig"] [[commands.subcommand.field]] id = "timeout" label = "Timeout" type = "string" option = ["--timeout"] description = "Time to wait for any individual Kubernetes operation, e.g. 5m0s." sources = ["fig"] [[commands.subcommand.field]] id = "dry_run" label = "Dry run" type = "boolean" option = ["--dry-run"] description = "Simulate an install." sources = ["fig"] [[commands.subcommand.field]] id = "kube_context" label = "Kube context" type = "string" option = ["--kube-context"] description = "Name of the kubeconfig context to use." sources = ["fig"] [[commands.subcommand.task]] id = "install" label = "Install a chart" fields = ["release", "chart", "namespace", "create_namespace", "values", "set", "version", "wait"] required = ["release", "chart"] [[commands.subcommand.task]] id = "preview" label = "Dry-run install" set = { dry_run = [true] } fields = ["release", "chart", "namespace", "values", "set", "version"] required = ["release", "chart"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["release", "chart", "namespace", "values", "set", "create_namespace", "wait", "dry_run"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["version", "atomic", "timeout", "kube_context"] [[commands.subcommand]] path = ["upgrade"] label = "Upgrade a release" description = "Upgrade a release to a chart version or new values." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/helm.ts" license = "MIT" [[commands.subcommand.field]] id = "release" label = "Release name" type = "string" position = 0 description = "Release to upgrade." sources = ["fig"] [[commands.subcommand.field]] id = "chart" label = "Chart" type = "string" position = 1 description = "Chart reference, local path, archive or URL." sources = ["fig"] [[commands.subcommand.field]] id = "namespace" label = "Namespace" type = "string" option = ["--namespace", "-n"] description = "Namespace scope for this request." sources = ["fig"] [[commands.subcommand.field]] id = "install" label = "Install if missing" type = "boolean" option = ["--install", "-i"] description = "Run an install if the release does not exist." sources = ["fig"] [[commands.subcommand.field]] id = "values" label = "Values files" type = "string" option = ["--values", "-f"] description = "YAML files or URLs; later files override earlier ones." multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "set" label = "Set values" type = "string" option = ["--set"] description = "key=value overrides, applied after values files." multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "reuse_values" label = "Reuse last values" type = "boolean" option = ["--reuse-values"] description = "Reuse the last release values and merge in overrides." sources = ["fig"] [[commands.subcommand.field]] id = "reset_values" label = "Reset values" type = "boolean" option = ["--reset-values"] description = "Reset values to the ones built into the chart." sources = ["fig"] [[commands.subcommand.field]] id = "version" label = "Chart version" type = "string" option = ["--version"] description = "Version constraint for the chart." sources = ["fig"] [[commands.subcommand.field]] id = "create_namespace" label = "Create namespace" type = "boolean" option = ["--create-namespace"] description = "Create the release namespace if not present." sources = ["fig"] [[commands.subcommand.field]] id = "wait" label = "Wait until ready" type = "boolean" option = ["--wait"] description = "Wait for pods, services and workloads to be ready." sources = ["fig"] [[commands.subcommand.field]] id = "atomic" label = "Atomic" type = "boolean" option = ["--atomic"] description = "Roll back or delete on failure; implies --wait." sources = ["fig"] [[commands.subcommand.field]] id = "timeout" label = "Timeout" type = "string" option = ["--timeout"] description = "Time to wait for any individual Kubernetes operation, e.g. 5m0s." sources = ["fig"] [[commands.subcommand.field]] id = "dry_run" label = "Dry run" type = "boolean" option = ["--dry-run"] description = "Simulate an upgrade." sources = ["fig"] [[commands.subcommand.field]] id = "kube_context" label = "Kube context" type = "string" option = ["--kube-context"] description = "Name of the kubeconfig context to use." sources = ["fig"] [[commands.subcommand.task]] id = "upgrade" label = "Upgrade or install" set = { install = [true] } fields = ["release", "chart", "namespace", "values", "set", "version", "wait"] required = ["release", "chart"] [[commands.subcommand.task]] id = "preview" label = "Dry-run upgrade" set = { dry_run = [true] } fields = ["release", "chart", "namespace", "values", "set", "version"] required = ["release", "chart"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["release", "chart", "namespace", "install", "values", "set", "reuse_values", "version", "create_namespace", "wait", "dry_run"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["reset_values", "atomic", "timeout", "kube_context"] [[commands.subcommand]] path = ["template"] label = "Render templates locally" description = "Render chart templates to standard output or a directory without installing." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/helm.ts" license = "MIT" [[commands.subcommand.field]] id = "release" label = "Release name" type = "string" position = 0 description = "Release name used in the templates." sources = ["fig"] [[commands.subcommand.field]] id = "chart" label = "Chart" type = "string" position = 1 description = "Chart reference, local path, archive or URL." sources = ["fig"] [[commands.subcommand.field]] id = "namespace" label = "Namespace" type = "string" option = ["--namespace", "-n"] description = "Namespace scope for this request." sources = ["fig"] [[commands.subcommand.field]] id = "values" label = "Values files" type = "string" option = ["--values", "-f"] description = "YAML files or URLs; later files override earlier ones." multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "set" label = "Set values" type = "string" option = ["--set"] description = "key=value overrides, applied after values files." multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "version" label = "Chart version" type = "string" option = ["--version"] description = "Version constraint for the chart." sources = ["fig"] [[commands.subcommand.field]] id = "include_crds" label = "Include CRDs" type = "boolean" option = ["--include-crds"] description = "Include CRDs in the output." sources = ["fig"] [[commands.subcommand.field]] id = "show_only" label = "Show only templates" type = "string" option = ["--show-only", "-s"] description = "Only show manifests rendered from these templates." multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "output_dir" label = "Output directory" type = "path" option = ["--output-dir"] description = "Write the rendered templates to files here instead of stdout." path = { kind = "directory", role = "input" } effect = "overwrite" sources = ["fig"] [[commands.subcommand.task]] id = "render" label = "Render to stdout" fields = ["release", "chart", "namespace", "values", "set", "include_crds"] required = ["release", "chart"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["release", "chart", "namespace", "values", "set", "include_crds"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["version", "show_only", "output_dir"] [[commands.subcommand]] path = ["lint"] label = "Lint a chart" description = "Examine a chart for possible issues." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/helm.ts" license = "MIT" [[commands.subcommand.field]] id = "chart" label = "Chart path" type = "string" position = 0 description = "Chart directory to lint." multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "strict" label = "Fail on warnings" type = "boolean" option = ["--strict"] description = "Fail on lint warnings." sources = ["fig"] [[commands.subcommand.field]] id = "with_subcharts" label = "Lint subcharts" type = "boolean" option = ["--with-subcharts"] description = "Lint dependent charts." sources = ["fig"] [[commands.subcommand.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["--quiet"] description = "Print only warnings and errors." sources = ["fig"] [[commands.subcommand.field]] id = "values" label = "Values files" type = "string" option = ["--values", "-f"] description = "YAML files or URLs; later files override earlier ones." multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "set" label = "Set values" type = "string" option = ["--set"] description = "key=value overrides, applied after values files." multiple = true sources = ["fig"] [[commands.subcommand.task]] id = "lint" label = "Lint a chart" fields = ["chart", "strict", "with_subcharts", "values"] required = ["chart"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["chart", "strict", "with_subcharts", "quiet", "values", "set"] [[commands.subcommand]] path = ["ls"] label = "List releases" description = "List installed releases, optionally across namespaces or filtered." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/helm.ts" license = "MIT" [[commands.subcommand.field]] id = "namespace" label = "Namespace" type = "string" option = ["--namespace", "-n"] description = "Namespace scope for this request." sources = ["fig"] [[commands.subcommand.field]] id = "all_namespaces" label = "All namespaces" type = "boolean" option = ["--all-namespaces", "-A"] description = "List releases across all namespaces." sources = ["fig"] [[commands.subcommand.field]] id = "all" label = "All releases" type = "boolean" option = ["--all", "-a"] description = "Show all releases without any filter applied." sources = ["fig"] [[commands.subcommand.field]] id = "failed" label = "Failed only" type = "boolean" option = ["--failed"] description = "Show failed releases." sources = ["fig"] [[commands.subcommand.field]] id = "pending" label = "Pending only" type = "boolean" option = ["--pending"] description = "Show pending releases." sources = ["fig"] [[commands.subcommand.field]] id = "filter" label = "Filter" type = "string" option = ["--filter", "-f"] description = "Regular expression; matching releases are included." sources = ["fig"] [[commands.subcommand.field]] id = "short" label = "Short listing" type = "boolean" option = ["--short", "-q"] description = "Output short (quiet) listing format." sources = ["fig"] [[commands.subcommand.field]] id = "output" label = "Output format" type = "enum" option = ["--output", "-o"] choices = [{ value = "table", label = "Table" }, { value = "json", label = "JSON" }, { value = "yaml", label = "YAML" }] sources = ["fig"] [[commands.subcommand.field]] id = "kube_context" label = "Kube context" type = "string" option = ["--kube-context"] description = "Name of the kubeconfig context to use." sources = ["fig"] [[commands.subcommand.task]] id = "all" label = "List everywhere" set = { all_namespaces = [true] } fields = ["all_namespaces", "filter", "short", "output"] required = [] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["namespace", "all_namespaces", "all", "filter", "short", "output"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["pending", "failed", "kube_context"]