Packages
nerves_bootstrap
0.8.2
1.16.0
1.15.3
1.15.2
1.15.1
1.15.0
1.14.5
1.14.4
1.14.3
1.14.2
1.14.0
1.13.1
1.13.0
1.12.2
1.12.1
1.12.0
1.11.5
1.11.4
1.11.3
1.11.2
1.11.1
1.11.0
1.10.6
1.10.5
1.10.4
1.10.3
1.10.2
1.10.1
1.10.0
1.9.0
1.8.1
1.8.0
1.7.1
1.7.0
1.6.3
1.6.2
1.6.1
1.6.0
1.5.3
1.5.2
1.5.1
1.5.0
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.1
1.2.0
1.1.0
1.0.1
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.4
0.6.3
Nerves mix integration bootstrap and new project generator
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/nerves/precompile.ex
defmodule Mix.Tasks.Nerves.Precompile do
use Mix.Task
import Mix.Nerves.IO
@moduledoc false
def run(_args) do
debug_info("Precompile Start")
# Note: We have to directly use the environment variable here instead of
# calling Nerves.Env.enabled?/0 because the nerves.precompile step happens
# before the nerves dependency is compiled, which is where Nerves.Env
# currently lives. This would be improved by moving Nerves.Env to
# nerves_bootstrap.
unless System.get_env("NERVES_ENV_DISABLED") do
System.put_env("NERVES_PRECOMPILE", "1")
Mix.Project.config()[:aliases]
|> check_aliases()
Mix.Tasks.Nerves.Env.run([])
Nerves.Env.packages()
|> Enum.each(&compile/1)
Mix.Task.reenable("deps.compile")
Mix.Task.reenable("compile")
System.put_env("NERVES_PRECOMPILE", "0")
Mix.Task.rerun("nerves.loadpaths")
end
debug_info("Precompile End")
end
def check_aliases(aliases) do
deps_get = Keyword.get(aliases, String.to_atom("deps.get"), [])
unless Enum.member?(deps_get, "nerves.deps.get") do
Mix.raise("""
Nerves is missing an alias for \"deps.get\"
Please update nerves to the latest version:
mix deps.update nerves
Also update your mix.exs target aliases to:
aliases: ["loadconfig": [&bootstrap/1]]
and add the following function to your mix file
def bootstrap(args) do
Application.start(:nerves_bootstrap)
Mix.Task.run("loadconfig", args)
end
""")
end
end
defp compile(%{app: app}) do
cond do
Mix.Project.config()[:app] == app ->
Mix.Tasks.Compile.run([app, "--include-children"])
true ->
Mix.Tasks.Deps.Compile.run([app, "--no-deps-check", "--include-children"])
end
end
end