defmodule Exbox.Config do
@moduledoc """
Exbox configuration module.
All configurations have a default value, which can be overridden in the application config.
The application config is keyed in the following way:
```elixir
config :exbox, :features, [
capture_telemetry_metric_events: true,
capture_telemetry_log_events: false
]
```
"""
@default_config %{
capture_telemetry_metric_events: true,
# default disabled until fully complete
capture_telemetry_log_events: false
}
@doc """
Returns the configuration for capture_telemetry_metric_events
"""
@spec capture_telemetry_metric_events? :: boolean()
def capture_telemetry_metric_events?, do: config_value(:capture_telemetry_metric_events)
@doc """
Returns the configuration for capture_telemetry_log_events
"""
@spec capture_telemetry_log_events? :: boolean()
def capture_telemetry_log_events?, do: config_value(:capture_telemetry_log_events)
@doc """
Returns the configuration value for the given key.
"""
@spec config_value(atom()) :: any()
def config_value(key) do
case Application.get_env(:exbox, :features)[key] do
nil -> Map.get(@default_config, key)
value -> value
end
end
end