defmodule Helmex.Install do
@moduledoc """
Helm Install
install a chart
"""
alias Helmex.Option
alias Helmex.Helm
use Helmex.Command
@doc """
[add a chart repository](https://helm.sh/docs/helm/helm_repo_add/)
Available options:
Option | Type
:------ | :------
`:atomic` | flag
`:ca_file:` | value
`:cert_file` | value
`:create_namespace` | flag only
`:dependency_update` | flag only
`:description` | value
`:devel` | flag
`:disable_openapi_validation` | flag
`:dry_run` | flag
`:generate_name:` | value
`:insecure_skip_tls_verify` | flag only
`:name_template` | value
`:no_hooks` | flag only
`:output:` | value,
`:password:` | value
`:repo:` | value
`:set:` | value
`:timeout` | value
`:username` | value
`:values:` | value
`:verify` | flag only
`:version:` | value
`:wait` | flag only
`:wait_for_jobs` | flag only
## Examples
iex> Helmex.init(kubeconfig: "/path/to/kube/config")
|> Helmex.install("mysql", "bitnami/mysql")
|> Helmex.call()
"""
@install_options %{
atomic: %Option{name: "--atomic"},
ca_file: %Option{name: "--ca-file", require_arg: true},
cert_file: %Option{name: "--cert-file", require_arg: true},
create_namespace: %Option{name: "--create-namespace"},
dependency_update: %Option{name: "--dependency-update"},
description: %Option{name: "--description", require_arg: true},
devel: %Option{name: "--devel"},
disable_openapi_validation: %Option{name: "--disable-openapi-validation"},
dry_run: %Option{name: "--dry-run"},
generate_name: %Option{name: "--generate-name", require_arg: true},
insecure_skip_tls_verify: %Option{name: "--insecure-skip-tls-verify"},
name_template: %Option{name: "--name-template", require_arg: true},
no_hooks: %Option{name: "--no-hooks"},
output: %Option{name: "--output", require_arg: true},
password: %Option{name: "--password", require_arg: true},
repo: %Option{name: "--repo", require_arg: true},
set: %Option{name: "--set", require_arg: true},
timeout: %Option{name: "--timeout", require_arg: true},
username: %Option{name: "--username", require_arg: true},
values: %Option{name: "--values", require_arg: true},
verify: %Option{name: "--verify"},
version: %Option{name: "--version", require_arg: true},
wait: %Option{name: "--wait"},
wait_for_jobs: %Option{name: "--wait-for-jobs"}
}
@spec install(helm :: Helm.t(), name :: binary(), chart :: binary(), opts :: keyword()) ::
Helm.t()
def install(%Helm{} = helm, name, chart, opts \\ []) do
%Helm{
helm
| command: "install",
args: [name, chart],
options: parse_options(opts, @install_options)
}
end
end