Packages
nerves
1.6.7
1.15.0
1.14.3
1.14.2
1.14.1
1.14.0
1.13.2
1.13.1
1.13.0
1.12.0
1.11.3
1.11.2
1.11.1
1.11.0
1.10.5
1.10.4
1.10.3
1.10.2
1.10.1
1.10.0
1.9.3
1.9.2
retired
1.9.1
1.9.0
1.8.0
1.7.17
1.7.16
1.7.15
1.7.14
retired
1.7.13
1.7.12
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
retired
1.7.1
retired
1.7.0
retired
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.5
1.4.4
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.1
1.1.0
1.0.1
1.0.0
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.11.0
0.10.1
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.3
0.8.2
0.8.1
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.4.0-rc.0
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
Craft and deploy bulletproof embedded software
Current section
Files
Jump to
Current section
Files
lib/nerves.ex
defmodule Nerves do
@elixir_version_req ">= 1.7.0"
@otp_version_req ">= 21.0.0"
def version, do: unquote(Mix.Project.config()[:version])
def elixir_version, do: unquote(System.version())
def otp_release, do: unquote(System.otp_release())
def system_requirements(elixir_version \\ nil, otp_release \\ nil) do
elixir_version = elixir_version || elixir_version()
otp_release = otp_release || otp_release()
with {:ok, otp_rel_version} <- Version.parse(otp_release <> ".0.0"),
true <- Version.match?(elixir_version, @elixir_version_req),
true <- Version.match?(otp_rel_version, @otp_version_req) do
:ok
else
_ ->
Nerves.Utils.Shell.warn("""
Nerves #{version()} requires at least Elixir #{@elixir_version_req} and Erlang/OTP #{
@otp_version_req
}.
Your system has Elixir #{elixir_version} and Erlang/OTP #{otp_release}.
Please resolve this by either:
1. Installing a compatible version of Elixir and Erlang/OTP
2. Pinning your nerves and nerves_bootstrap dependencies to
older versions.
""")
:error
end
end
# If distillery is present, load the plugin code
if Code.ensure_loaded?(Distillery.Releases.Plugin) do
defdelegate before_assembly(release, opts), to: Nerves.Distillery
defdelegate after_assembly(release, opts), to: Nerves.Distillery
defdelegate before_package(release, opts), to: Nerves.Distillery
defdelegate after_package(release, opts), to: Nerves.Distillery
defdelegate after_cleanup(release, opts), to: Nerves.Distillery
end
end