Packages
nerves
1.7.0
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/nerves.artifact.ex
defmodule Mix.Tasks.Nerves.Artifact do
use Mix.Task
import Mix.Nerves.IO
require Logger
@moduledoc """
Create an artifact for a specified Nerves package.
## Command line options
* `--path <path>`: The location where you want the archive to be placed.
Default: `$NERVES_DL_DIR || ~/.nerves/dl`
## Examples
$ mix nerves.artifact nerves_system_rpi0
If the command is called without the package name,
`Nerves.Project.config()[:app]` will be used by default.
$ mix nerves.artifact --path /tmp
"""
@shortdoc "Nerves create artifact"
@recursive true
@switches [path: :string]
@impl true
def run(argv) do
# We need to make sure the the Nerves env has been set up.
# This allows the task to be called from a project level that
# does not include aliases to nerves_bootstrap
Mix.Task.run("nerves.precompile", [])
{package_name, argv} =
case argv do
[] ->
{to_string(Mix.Project.config()[:app]), argv}
["-" <> _arg | _] ->
{to_string(Mix.Project.config()[:app]), argv}
[package_name | argv] ->
{package_name, argv}
end
debug_info("Nerves.Artifact start")
{opts, _, _} = OptionParser.parse(argv, switches: @switches)
package_name = String.to_atom(package_name)
package = Nerves.Env.package(package_name)
toolchain = Nerves.Env.toolchain()
if is_nil(package) do
Mix.raise("Could not find Nerves package #{package_name} in env")
else
Nerves.Artifact.archive(package, toolchain, opts)
end
debug_info("Nerves.Artifact end")
end
end