View Source Nerves.Artifact (nerves v1.10.5)

Package artifacts are the product of compiling a package with a specific toolchain.

Summary

Functions

Produces an archive of the package artifact which can be fetched when calling nerves.artifact.get.

Get the base dir for where an artifact for a package should be stored.

Builds the package and produces an See Nerves.Artifact for more information.

Get the path to where the artifact is built

Get the path where the global artifact will be linked to. This path is typically a location within build_path, but can be vary on different build platforms.

Produce a base16 encoded checksum for the package from the list of files and expanded folders listed in the checksum config key.

Cleans the artifacts for the package build_runners of all packages.

The full path to the artifact.

Get the artifact download name

Get the path to where the artifact archive is downloaded to.

Determine the environment variable which would be set to override the path.

Check to see if the artifact path is being set from the system env.

Expands the sites helpers from artifact_sites in the nerves_package config.

Determines the extension for an artifact based off its type. Toolchains use xz compression.

Get the host_tuple for the package. Toolchains are specifically build to run on a host for a target. Other packages are host agnostic for now. They are marked as portable.

Get the artifact name

Determines if the artifact for a package is stale and needs to be rebuilt.

Functions

Link to this function

archive(pkg, toolchain, opts)

View Source
@spec archive(Nerves.Package.t(), Nerves.Package.t(), keyword()) :: {:ok, String.t()}

Produces an archive of the package artifact which can be fetched when calling nerves.artifact.get.

@spec base_dir() :: String.t()

Get the base dir for where an artifact for a package should be stored.

The directory for artifacts will be found in the directory returned by Nerves.Env.data_dir/0 (i.e. "/Users/fhunleth/.nerves/artifacts/"). This location can be overriden by the environment variable NERVES_ARTIFACTS_DIR.

@spec build(Nerves.Package.t(), Nerves.Package.t()) :: :ok | {:error, File.posix()}

Builds the package and produces an See Nerves.Artifact for more information.

@spec build_path(Nerves.Package.t()) :: binary()

Get the path to where the artifact is built

@spec build_path_link(Nerves.Package.t()) :: Path.t()

Get the path where the global artifact will be linked to. This path is typically a location within build_path, but can be vary on different build platforms.

@spec build_runner(keyword()) :: {module(), keyword()}
Link to this function

checksum(pkg, opts \\ [])

View Source
@spec checksum(Nerves.Package.t(), [{:short, non_neg_integer()}]) :: String.t()

Produce a base16 encoded checksum for the package from the list of files and expanded folders listed in the checksum config key.

@spec clean(Nerves.Package.t()) :: :ok | {:error, term()}

Cleans the artifacts for the package build_runners of all packages.

@spec dir(Nerves.Package.t()) :: String.t()

The full path to the artifact.

Link to this function

download_name(pkg, opts \\ [])

View Source
@spec download_name(Nerves.Package.t(), [{:checksum_short, non_neg_integer()}]) ::
  String.t()

Get the artifact download name

@spec download_path(Nerves.Package.t()) :: String.t()

Get the path to where the artifact archive is downloaded to.

@spec env_var(Nerves.Package.t()) :: String.t()

Determine the environment variable which would be set to override the path.

@spec env_var?(Nerves.Package.t()) :: boolean()

Check to see if the artifact path is being set from the system env.

@spec expand_sites(Nerves.Package.t()) :: [
  {Nerves.Artifact.Resolvers.URI | Nerves.Artifact.Resolvers.GithubAPI,
   {Path.t(), Keyword.t()}}
]

Expands the sites helpers from artifact_sites in the nerves_package config.

Artifact sites can pass options as a third parameter for adding headers or query string parameters. For example, if you are trying to resolve artifacts hosted in a private Github repo, use :github_api and pass a user, tag, and personal access token into the sites helper:

{:github_api, "owner/repo", username: "skroob", token: "1234567", tag: "v0.1.0"}

Or pass query parameters for the URL:

{:prefix, "https://my-organization.com", query_params: %{"id" => "1234567", "token" => "abcd"}}

You can also use this to add an authorization header for files behind basic auth.

{:prefix, "http://my-organization.com/", headers: [{"Authorization", "Basic " <> System.get_env("BASIC_AUTH")}}]}
@spec ext(Nerves.Package.t()) :: String.t()

Determines the extension for an artifact based off its type. Toolchains use xz compression.

@spec host_tuple(Nerves.Package.t()) :: String.t()

Get the host_tuple for the package. Toolchains are specifically build to run on a host for a target. Other packages are host agnostic for now. They are marked as portable.

@spec name(Nerves.Package.t()) :: String.t()

Get the artifact name

@spec stale?(Nerves.Package.t()) :: boolean()

Determines if the artifact for a package is stale and needs to be rebuilt.