# `Nerves.Artifact.BuildRunner`
[🔗](https://github.com/nerves-project/nerves/blob/v1.14.1/lib/nerves/artifact/build_runner.ex#L6)

Defines the Nerves build runner behaviour

A build runner is a module that can take package source and produce
artifacts.

# `archive_result`

```elixir
@type archive_result() :: {:ok, path :: String.t()} | {:error, reason :: term()}
```

# `build_result`

```elixir
@type build_result() :: {:ok, build_path :: String.t()} | {:error, reason :: term()}
```

# `clean_result`

```elixir
@type clean_result() :: :ok | {:error, reason :: term()}
```

# `archive`

```elixir
@callback archive(
  package :: Nerves.Package.t(),
  toolchain :: Nerves.Package.t(),
  opts :: term()
) ::
  archive_result()
```

# `build`

```elixir
@callback build(
  package :: Nerves.Package.t(),
  toolchain :: Nerves.Package.t(),
  opts :: term()
) ::
  build_result()
```

# `clean`

```elixir
@callback clean(package :: Nerves.Package.t()) :: clean_result()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
