Packages
nerves
0.4.3
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/tasks/firmware.image.ex
defmodule Mix.Tasks.Firmware.Image do
use Mix.Task
import Mix.Nerves.Utils
@moduledoc """
Writes the generated firmware image to an output file.
## Examples
```
# Create an image file from a .fw file for use with dd(1)
mix firmware.image my_image.img
```
"""
def run([file]) do
preflight()
debug_info "Nerves Firmware Image"
config = Mix.Project.config
otp_app = config[:app]
target = config[:target]
System.get_env("NERVES_SYSTEM") || raise """
Environment variable $NERVES_SYSTEM is not set
"""
System.get_env("NERVES_TOOLCHAIN") || raise """
Environment variable $NERVES_TOOLCHAIN is not set
"""
fw = Path.join(File.cwd!, "_images/#{target}/#{otp_app}.fw")
unless File.exists?(fw) do
Mix.raise "Firmware for target #{target} not found at #{fw} run `mix firmware` to build"
end
file = Path.expand(file)
image(fw, file)
end
def run(_args) do
Mix.raise """
mix firmware.image takes a single argument
See mix help firmware.image for more info
"""
Mix.Task.run "help", ["firmware.image"]
end
defp image(fw, file) do
args = ["-a", "-i", fw, "-t", "complete", "-d", file]
cmd = "fwup"
shell(cmd, args)
end
end