Packages
nerves
0.4.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/mix/nerves/utils.ex
defmodule Mix.Nerves.Utils do
@fwup_semver "~> 0.8"
def shell(cmd, args, opts \\ []) do
stream = opts[:stream] || IO.binstream(:standard_io, :line)
std_err = opts[:stderr_to_stdout] || true
opts = Keyword.drop(opts, [:into, :stderr_to_stdout, :stream])
System.cmd(cmd, args, [into: stream, stderr_to_stdout: std_err] ++ opts)
end
def preflight do
check_requirements()
Mix.Task.run "nerves.loadpaths"
end
def check_requirements do
{_, type} = :os.type
which_or_where = case type do
:nt -> "where"
_ -> "which"
end
case System.cmd(which_or_where, ["mksquashfs"]) do
{_, 0} -> nil
_ -> Mix.raise """
Squash FS Tools are required to be installed on your system.
Please see https://hexdocs.pm/nerves/installation.html#host-specific-tools
for installation instructions
"""
end
{:ok, req} = Version.parse_requirement(@fwup_semver)
with {_, 0} <- System.cmd(which_or_where, ["fwup"]),
{vsn, 0} <- System.cmd("fwup", ["--version"]),
true <- Version.match?(vsn, req) do
else
false ->
{vsn, 0} = System.cmd("fwup", ["--version"])
Mix.raise """
fwup #{@fwup_semver} is required for Nerves.
You are running #{vsn}.
Please see https://hexdocs.pm/nerves/installation.html#fwup
for installation instructions
"""
{_, _} ->
Mix.raise """
fwup is required to create and burn firmware.
Please see https://hexdocs.pm/nerves/installation.html#fwup
for installation instructions
"""
end
check_host_requirements(type)
end
def check_host_requirements(:darwin) do
case System.cmd("which", ["gstat"]) do
{_, 0} -> nil
_ -> Mix.raise """
gstat is required to create and burn firmware.
Please see https://hexdocs.pm/nerves/installation.html#host-specific-tools
for installation instructions
"""
end
end
def check_host_requirements(_), do: nil
def debug_info(msg) do
if System.get_env("NERVES_DEBUG") == "1" do
Mix.shell.info(msg)
end
end
end