Distribution automation for Burrito-based Elixir CLIs.
Tinfoil is to Burrito what
cargo-dist is to Cargo: a
single tool that takes your mix release output to platform binaries
in a GitHub Release, with Homebrew and installer support.
What tinfoil does
- Generates a complete GitHub Actions workflow (
.github/workflows/release.yml) from a:tinfoilkeyword inmix.exs - Reads the user's Burrito release config and resolves tinfoil's
abstract target atoms (
:darwin_arm64,:linux_x86_64, …) against the user's chosen Burrito target names by matching[os:, cpu:] - At CI time, drives one
mix tinfoil.buildper matrix entry: setsBURRITO_TARGET, runsmix release, packages the binary, writes asha256sidecar - After all matrix builds finish, drives
mix tinfoil.publishto create a GitHub Release via the REST API and upload every archive plus a combinedchecksums-sha256.txt - Optionally generates an
install.shcurl-able installer and a Homebrew formula template
Where to start
Mix.Tasks.Tinfoil.Init— interactive scaffold for new projectsMix.Tasks.Tinfoil.Plan— read-only preview of what would be builtMix.Tasks.Tinfoil.Build— single-target build + package + checksumMix.Tasks.Tinfoil.Publish— create GitHub Release and upload assetsTinfoil.Config— the schema, defaults, and validation for everything under the:tinfoilkeyword inmix.exsTinfoil.Target— the target matrix that maps tinfoil atoms to GitHub runners and Burrito os/cpu pairsTinfoil.Burrito— the bridge between tinfoil's abstract targets and the user'sreleases/0block
For the full narrative with installation steps, configuration examples, and the Burrito target-name resolution story, see the README.
Summary
Functions
@spec config() :: {:ok, Tinfoil.Config.t()} | {:error, term()}
Load the current mix project's tinfoil config.
This is a convenience wrapper around Tinfoil.Config.load/1 that
reads from Mix.Project.config/0.
@spec config!() :: Tinfoil.Config.t()
Load the current mix project's tinfoil config, raising on error.
@spec version() :: String.t()
Return the tinfoil package version.