Packages
nerves_bootstrap
0.7.1
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/nerves_bootstrap.ex
defmodule Nerves.Bootstrap do
@version Mix.Project.config()[:version]
@doc """
Returns the version of nerves_bootstrap
"""
def version, do: @version
@doc """
Check the nerves_bootstrap updates from hex
"""
def check_for_update() do
try do
Hex.start()
{:ok, {200, resp, _}} = Hex.API.Package.get("hexpm", "nerves_bootstrap")
latest_rel =
resp
|> Map.get("releases")
|> List.first
latest_vsn =
Map.get(latest_rel, "version")
|> Version.parse!
current_vsn =
Nerves.Bootstrap.version()
|> Version.parse!
if Version.compare(current_vsn, latest_vsn) == :lt do
Mix.shell.info([
IO.ANSI.yellow,
"A new version of Nerves bootstrap is available(#{current_vsn} < #{latest_vsn}), " <>
"please update with `mix local.nerves`",
IO.ANSI.reset
])
end
rescue
_e -> :noop
end
end
def deps_update(args) do
Mix.Tasks.Deps.Update.run(args)
Mix.Tasks.Nerves.Deps.Get.run([])
end
@doc """
Add the required Nerves bootstrap aliases to the existing ones
"""
def add_aliases(aliases) do
aliases
|> append("deps.get", "nerves.deps.get")
|> prepend("deps.loadpaths", "nerves.loadpaths")
|> replace("deps.update", &Nerves.Bootstrap.deps_update/1)
end
defp append(aliases, a, na) do
key = String.to_atom(a)
Keyword.update(aliases, key, [a, na], &(drop(&1, na) ++ [na]))
end
defp prepend(aliases, a, na) do
key = String.to_atom(a)
Keyword.update(aliases, key, [na, a], &([na | drop(&1, na)]))
end
defp replace(aliases, a, fun) do
key = String.to_atom(a)
Keyword.update(aliases, key, [fun], &(drop(&1, fun) ++ [fun]))
end
defp drop(aliases, a) do
Enum.reject(aliases, &(&1 === a))
end
end