defmodule Mix.Tasks.Compile.Appup do
@moduledoc """
Compiles appup files into the application's ebin folder.
"""
@shortdoc "Compiles appup files"
use Mix.Task.Compiler
@recursive true
@impl true
def run(_args) do
if src = Mix.Project.config()[:appup] do
if File.exists?(src) do
{appup, []} = Code.eval_file(src)
dst = Path.join(Mix.Project.compile_path(), "#{Mix.Project.config()[:app]}.appup")
File.write(dst, :io_lib.format('~tp.~n', [appup]))
else
{:ok, diagnostic(:warning, "Appup file not found: #{src}")}
end
else
{:ok, diagnostic(:warning, "No appup specified in project")}
end
end
defp diagnostic(severity, message, file \\ Mix.Project.project_file()) do
%Mix.Task.Compiler.Diagnostic{
compiler_name: "Appup",
file: file,
position: nil,
severity: severity,
message: message
}
end
end