Current section
Files
Jump to
Current section
Files
lib/telemetria.ex
defmodule Tempus.Telemetria do
@moduledoc false
@available? match?({:module, Telemetria}, Code.ensure_compiled(Telemetria))
@enabled? Application.compile_env(:tempus, :telemetria?, false)
@compiler? :telemetria in Mix.compilers()
defmacro __using__(opts), do: do_using(__CALLER__, opts)
@dialyzer {:nowarn_function, do_using: 2}
defp do_using(caller, opts) do
case {@enabled?, @available?, @compiler?} do
{true, false, _} ->
raise CompileError,
file: caller.file,
line: caller.line,
description:
":telemetria has been enabled but it’s not available, please include it into `deps`"
{true, true, compiler?} ->
if not compiler? do
IO.warn(
":telemetria has been enabled for `Tempus` but the compiler is not specified, " <>
"please include it into `compilers:` list in your `project` callback",
[]
)
end
quote do
use Telemetria, unquote(opts)
end
{false, _, _} ->
quote do
@before_compile Tempus.Telemetria
end
end
end
def __before_compile__(%Macro.Env{module: module}) do
case Module.get_attribute(module, :telemetria) do
[_ | _] ->
# Mix.shell().info(":telemetria events for #{inspect(module)} are disabled.")
:ok
_ ->
:ok
end
end
end