diff --git a/lib/exsync/config.ex b/lib/exsync/config.ex index 173fac6..563140b 100644 --- a/lib/exsync/config.ex +++ b/lib/exsync/config.ex @@ -13,6 +13,10 @@ defmodule ExSync.Config do Application.get_env(application(), :reload_callback) end + def compile_callback do + Application.get_env(application(), :compile_callback) + end + def beam_dirs do if Mix.Project.umbrella?() do for %Mix.Dep{app: app, opts: opts} <- Mix.Dep.Umbrella.loaded() do diff --git a/lib/exsync/utils.ex b/lib/exsync/utils.ex index 38c8d54..f6674f7 100644 --- a/lib/exsync/utils.ex +++ b/lib/exsync/utils.ex @@ -2,8 +2,14 @@ defmodule ExSync.Utils do def recomplete do ExSync.Logger.debug("running mix compile") - System.cmd("mix", ["compile"], cd: ExSync.Config.app_source_dir(), stderr_to_stdout: true) - |> log_compile_cmd() + result = System.cmd("mix", ["compile"], cd: ExSync.Config.app_source_dir(), stderr_to_stdout: true) + + if callback = ExSync.Config.compile_callback() do + {mod, fun, args} = callback + apply(mod, fun, [result | args]) + end + + log_compile_cmd(result) end def unload(module) when is_atom(module) do