Packages

Runtime config fed by static elixir expressions

Current section

Files

Jump to
casconf lib errors no_value_error.ex
Raw

lib/errors/no_value_error.ex

defmodule Casconf.NoValueError do
defexception [:sources]
def exception(value) do
struct(__MODULE__, Keyword.take(value, ~w[sources]a))
end
def message(%__MODULE__{} = error) do
intro = "Tried to load a configuration value, but none of these sources are configured:"
outro = "Configure at least one of the sources to continue loading"
sources =
Casconf.Loader.loaders()
|> Enum.flat_map(fn {loader, module} ->
case Keyword.get(error.sources, loader) do
nil -> []
key ->
description = module.source_description(key)
[" * #{description}"]
end
end)
lines = [intro] ++ sources ++ [outro]
Enum.join(lines, "\n")
end
end