lib/metrix/supervisor.ex
defmodule ElixirTools.Metrix.Supervisor do
@moduledoc false
use Supervisor
require Logger
@typep child :: Supervisor.child_spec() | module | {module, []}
@recurrent_metrics Application.get_env(:pagantis_elixir_tools, ElixirTools.Metrix)[
:recurrent_metrics
]
@spec start_link(any) :: {:ok, pid} | {:error, term}
def start_link(_ \\ []) do
if metrix_enabled?() do
Supervisor.start_link(__MODULE__, :ok, name: __MODULE__)
else
Logger.info("Metrix did not start because it's disabled.")
:ignore
end
end
@impl true
def init(:ok) do
children =
[]
|> add_metrix_child
|> add_recurrent_metric_children
Supervisor.init(children, strategy: :one_for_one)
end
@spec add_metrix_child([child]) :: [child]
defp add_metrix_child(children), do: [{ElixirTools.Metrix, []} | children]
@spec add_recurrent_metric_children([child]) :: [child]
defp add_recurrent_metric_children(children), do: children ++ @recurrent_metrics
@spec metrix_enabled? :: boolean
defp metrix_enabled? do
enabled_values = [nil, true, "true"]
Application.get_env(:pagantis_elixir_tools, ElixirTools.Metrix)[:enabled] in enabled_values
end
end