Current section
Files
Jump to
Current section
Files
lib/provider/system_env.ex
defmodule Provider.SystemEnv do
# credo:disable-for-this-file Credo.Check.Readability.Specs
@moduledoc "Provider source which retrieves values from OS env vars."
@behaviour Provider.Source
alias Provider.Source
@impl Source
def display_name(param_name), do: param_name |> Atom.to_string() |> String.upcase()
@impl Source
def values(param_names), do: Enum.map(param_names, &System.get_env(display_name(&1)))
@impl Source
def template(params) do
params
|> Enum.sort()
|> Enum.map_join("\n", ¶m_entry/1)
end
defp param_entry({name, %{default: nil} = spec}) do
"""
# #{spec.type}
#{display_name(name)}=
"""
end
defp param_entry({name, spec}) do
"""
# #{spec.type}
# #{display_name(name)}="#{String.replace(to_string(spec.default), "\n", "\\n")}"
"""
end
end