Current section

Files

Jump to
tempus lib telemetria.ex
Raw

lib/telemetria.ex

defmodule Tempus.Telemetria do
@moduledoc false
{available?, enabled?, compiler?} =
{
match?({:module, Telemetria}, Code.ensure_compiled(Telemetria)),
Application.compile_env(:tempus, :telemetria?, false),
:telemetria in Mix.compilers()
}
defmacro __using__(opts), do: do_using(__CALLER__, opts)
# @dialyzer {:nowarn_function, do_using: 2}
case [enabled?, available?, compiler?] do
[true, false, _] ->
defp do_using(caller, _opts) do
raise CompileError,
file: caller.file,
line: caller.line,
description:
":telemetria has been enabled but it’s not available, please include it into `deps`"
end
[true, true, compiler?] ->
defp do_using(_caller, opts) do
if not unquote(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
end
[false, _, _] ->
defp do_using(_caller, _opts) do
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