Packages

Compile-time vs runtime detection for Elixir via compiler tracing

Current section

Files

Jump to
runorcomp lib mix tasks compile runorcomp.ex
Raw

lib/mix/tasks/compile/runorcomp.ex

defmodule Mix.Tasks.Compile.Runorcomp do
@moduledoc """
Flushes compile tracer data to `_build/{env}/runorcomp.json` after Elixir compilation.
## Setup
Add both the tracer and compiler to your `mix.exs`:
def project do
[
compilers: Mix.compilers() ++ [:runorcomp],
elixirc_options: [tracers: [Runorcomp.Tracer]],
...
]
end
"""
use Mix.Task.Compiler
@impl true
def run(_argv) do
case Runorcomp.Tracer.flush() do
0 ->
{:noop, []}
count ->
Mix.shell().info("[runorcomp] Updated #{count} files")
{:ok, []}
end
end
end