Packages
nerves
1.7.2
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
Retired package: Release invalid - Please update to 1.7.3 or later
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/firmware.metadata.ex
defmodule Mix.Tasks.Firmware.Metadata do
use Mix.Task
import Mix.Nerves.Utils
alias Mix.Nerves.Preflight
@switches [firmware: :string]
@aliases [i: :firmware]
@shortdoc "Print out metadata for the current firmware"
@moduledoc """
This task calls `fwup` to report the firmware stored in the currently built
firmware bundle. No firmware is built, so this task will fail if the firmware
bundle doesn't exist.
Note: Rebuilding firmware will almost certainly change the UUID if the build
is not [reproducible](https://reproducible-builds.org/).
## Command line options
* `--firmware <name>` - (Optional) The path to the fw file to use.
Defaults to `<image_path>/<otp_app>.fw`
## Examples
```
$ mix firmware.metadata
meta-product="my_firmware"
meta-description="A description"
meta-version="1.0.0"
meta-author="me"
meta-platform="rpi"
meta-architecture="arm"
meta-creation-date="2020-01-31T21:15:25Z"
meta-uuid="62f80587-ce82-59c4-4200-9c92df9849fd"
```
"""
@impl true
def run(argv) do
Preflight.check!()
debug_info("Nerves Metadata")
{opts, _argv, _} = OptionParser.parse(argv, switches: @switches, aliases: @aliases)
target = mix_target()
_ = check_nerves_system_is_set!()
_ = check_nerves_toolchain_is_set!()
fw = firmware_file(opts)
unless File.exists?(fw) do
Mix.raise("Firmware for target #{target} not found at #{fw} run `mix firmware` to build")
end
shell("fwup", ["-m", "-i", fw])
end
def firmware_file(opts) do
with {:ok, fw} <- Keyword.fetch(opts, :firmware),
fw <- Path.expand(fw),
true <- File.exists?(fw) do
fw
else
false ->
fw = Keyword.get(opts, :firmware)
Mix.raise("The firmware file #{fw} does not exist")
_ ->
Nerves.Env.firmware_path()
end
end
end