# tinfoil v0.2.22 - Table of Contents

Distribution automation for Burrito-based Elixir CLIs. Generate CI workflows, GitHub Releases, Homebrew formulas, and installer scripts.

## Pages

- [tinfoil](readme.md)
- [Changelog](changelog.md)

- Guides
  - [Getting started](getting_started.md)
  - [Configuration](configuration.md)
  - [Targets and runners](targets.md)
  - [Distribution](distribution.md)
  - [Automatic releases with release-please](release_please.md)
  - [Mix tasks](mix_tasks.md)

## Modules

- [Tinfoil.Homebrew](Tinfoil.Homebrew.md): Render a Homebrew formula from release artifacts and push it to a
tap repo. Earlier tinfoil versions shelled out to a generated
`scripts/update-homebrew.sh`; this module replaces it so the whole
release lifecycle stays in Elixir and is unit-testable.
- [Tinfoil.Homebrew.Git](Tinfoil.Homebrew.Git.md): Thin wrapper around the subset of `git` commands `Tinfoil.Homebrew`
needs. Kept behind a behaviour so tests can swap in a stub module
without touching the real filesystem or network.

- [Tinfoil.NifCheck](Tinfoil.NifCheck.md): Heuristic detection of dependencies that may not cross-compile
cleanly under Burrito's Zig toolchain.
- [Tinfoil.ProjectEditor](Tinfoil.ProjectEditor.md): Splice tinfoil + Burrito wiring into a `mix.exs` that was produced
by `mix new`. The edits are intentionally string-based (not AST
rewrites) so user formatting, comments, and layout are preserved.
- [Tinfoil.Scoop](Tinfoil.Scoop.md): Render a Scoop manifest from release artifacts and push it to a
bucket repo. The Windows-package-manager counterpart to
`Tinfoil.Homebrew`, same shape: mix task at CI time, token or
deploy-key auth, dry-run preview.

- Public API
  - [Tinfoil](Tinfoil.md): Distribution automation for Burrito-based Elixir CLIs.
  - [Tinfoil.Config](Tinfoil.Config.md): Schema, defaults, and validation for the `:tinfoil` key in `mix.exs`.
  - [Tinfoil.Plan](Tinfoil.Plan.md): Build a structured plan describing what tinfoil would build and
release from the current config.
  - [Tinfoil.Target](Tinfoil.Target.md): The core target matrix — the most valuable knowledge tinfoil encodes.

- Build lifecycle
  - [Tinfoil.Archive](Tinfoil.Archive.md): Create release archives from built binaries.
  - [Tinfoil.Build](Tinfoil.Build.md): Orchestrate a single-target Burrito build, archive, and checksum.
  - [Tinfoil.Publish](Tinfoil.Publish.md): Create a GitHub Release and upload archive assets to it.

- Integration
  - [Tinfoil.Burrito](Tinfoil.Burrito.md): Integration with the user's Burrito configuration in `mix.exs`.
  - [Tinfoil.Generator](Tinfoil.Generator.md): Renders tinfoil's EEx templates into the target project.

## Mix Tasks

- [mix tinfoil.homebrew](Mix.Tasks.Tinfoil.Homebrew.md): Render the Homebrew formula from the release artifacts in the input
directory and push the result to the configured tap repo.
- [mix tinfoil.scoop](Mix.Tasks.Tinfoil.Scoop.md): Render the Scoop manifest from release artifacts and push it to the
configured bucket repo. The Windows counterpart to
`mix tinfoil.homebrew`.

- Mix tasks
  - [mix tinfoil.build](Mix.Tasks.Tinfoil.Build.md): Build a single tinfoil target end-to-end.
  - [mix tinfoil.generate](Mix.Tasks.Tinfoil.Generate.md): Regenerate the tinfoil-managed files from the current `:tinfoil`
config in `mix.exs`.
  - [mix tinfoil.init](Mix.Tasks.Tinfoil.Init.md): Initialize tinfoil for the current mix project.
  - [mix tinfoil.plan](Mix.Tasks.Tinfoil.Plan.md): Print a plan of what tinfoil would build and release from the
current `:tinfoil` config in `mix.exs`.
  - [mix tinfoil.publish](Mix.Tasks.Tinfoil.Publish.md): Create a GitHub Release for the current tag and upload every
archive and checksum file found under the input directory.

