Homebrew formulae for the ASDF project.
| Formula | Description |
|---|---|
libasdf |
C implementation of the ASDF file format (docs, source) |
brew install asdf-format/tap/<formula>Or tap first, then install by short name:
brew tap asdf-format/tap
brew install <formula>Or, in a brew bundle Brewfile:
tap "asdf-format/tap"
brew "<formula>"libasdf installs an asdf command-line tool, which collides with the
asdf version manager formula in homebrew-core. The
formula therefore declares conflicts_with "asdf"; the two cannot be linked at
the same time.
Bottles (pre-built binaries) are published for Apple Silicon macOS and x86-64
Linux. Intel macOS is not bottled: Homebrew discontinued Intel macOS
bottle CI in August 2026
and moved that configuration to Tier
3 -- "not supported", with no CI
coverage. Installing on an Intel Mac still works, but Homebrew will build
libasdf and any unbottled dependencies from source, which is slow but
otherwise unremarkable.
The canonical reference is How to Create and Maintain a Tap. What follows is the short version, plus the parts that are easy to get wrong.
Never merge a formula pull request with GitHub's merge button.
A formula's bottle do block contains SHA-256 checksums of binaries that only
exist after CI has built them. So the formula on main cannot be correct
until merge time, and GitHub's merge button cannot rewrite a commit to add
them. Homebrew replaces the merge button with brew pr-pull, which does all of
this in one operation:
- fetch the pull request's commits
- download the
bottles_*artifacts that CI uploaded for that PR - upload those bottles to their hosting (see below)
- rewrite the formula commit to insert the
bottle doblock - cherry-pick the rewritten commits onto
main
Note that it stops there -- it does not push, and it does not "merge" the PR
in GitHub's sense. There is no merge commit; the PR's commits are replayed onto
main, and GitHub marks the PR merged once those commits are pushed.
brew bump-formula-pr --version=<new-version> asdf-format/tap/<formula>This forks the tap if needed, updates url and sha256, pushes a branch, and
opens the PR. Do not hand-edit the version: it is derived from the URL, and
bump-formula-pr rewrites those stanzas automatically--any attempt to do it
by hand is overwritten anyways.
Then check CI:
gh pr checks <number> --watchAdd the pr-pull label to the PR. .github/workflows/publish.yml then runs
brew pr-pull and pushes the result. That is the whole flow.
To do it by hand instead -- which is also the recovery path when the workflow misbehaves:
cd "$(brew --repository asdf-format/tap)"
brew pr-pull --tap=asdf-format/tap <number>
git push origin mainThe git push is not optional; it is what closes the PR.
GitHub Releases on this repository, one release per formula version, tagged
<formula>-<version> (e.g. libasdf-0.1.0). brew pr-pull creates the
release and attaches the bottles automatically. This is Homebrew's default for
third-party taps; no extra credentials or configuration are required.
.github/workflows/tests.yml-- runsbrew test-boton every PR: syntax, audit, build,brew test, and bottle creation. Bottles are uploaded asbottles_<os>artifacts..github/workflows/publish.yml-- runsbrew pr-pullwhen thepr-pulllabel is added.
Beware a sharp edge in brew test-bot: if any dependency lacks a bottle for
the runner's platform, it skips the formula and still reports success. Watch
for SKIPPED in the log, or check the skipped_or_failed_formulae-*.txt file
it writes, since a green check does not by itself prove the formula was built.
This may have only come up due to homebrew-core's very recent as of writing sunsetting of macos-intel support, so it shouldn't come up too often anymore for now.
brew install --build-from-source asdf-format/tap/<formula>
brew test asdf-format/tap/<formula>
brew audit --strict --online --formula asdf-format/tap/<formula>
brew style asdf-format/tap/<formula>brew style --fix autocorrects most formatting complaints.
brew help, man brew, or Homebrew's documentation.