Packages
nerves
0.9.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
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
## Example
$ 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]
def run(argv) do
{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)
Nerves.Env.start
Nerves.Env.ensure_loaded(Mix.Project.config[:app])
package =
package_name
|> String.to_atom()
|> Nerves.Env.package()
toolchain = Nerves.Env.toolchain
cond do
package == nil ->
Mix.raise "Could not find Nerves package #{package_name} in env"
Nerves.Artifact.stale?(package) ->
Mix.raise "Your package sources are stale. Please run mix compile first."
true ->
Nerves.Artifact.archive(package, toolchain, opts)
end
debug_info "Nerves.Artifact end"
end
end