Skip to content

Distribute fessctl via Homebrew (codelibs/homebrew-tap)#30

Open
marevol wants to merge 14 commits intomainfrom
feat/homebrew-distribution
Open

Distribute fessctl via Homebrew (codelibs/homebrew-tap)#30
marevol wants to merge 14 commits intomainfrom
feat/homebrew-distribution

Conversation

@marevol
Copy link
Copy Markdown
Contributor

@marevol marevol commented May 3, 2026

Summary

Adds end-to-end Homebrew distribution for fessctl. On every v* tag push, a
release workflow renders a Formula/fessctl.rb and opens a bump PR against
codelibs/homebrew-tap so users can install via brew tap codelibs/tap && brew install fessctl.

What's in this branch

  • Formula renderer (tools/render_formula.py + tools/fessctl.rb.j2)
    • Parses uv.lock, resolves sdist URL+sha256 per dependency, fetches the
      source tarball sha256 by streaming, and renders the formula via Jinja2
      (StrictUndefined, alphabetically sorted resources).
    • Raises NoSdistError if any transitive dep is wheel-only on PyPI so we
      fail loudly rather than ship a broken formula.
  • Release workflow (.github/workflows/release.yml)
    • Tag-triggered on v*. Validates tag matches pyproject.toml version.
    • Mints an installation token via actions/create-github-app-token@v1
      (no long-lived PAT) and pushes a bump branch + PR to codelibs/homebrew-tap.
    • Requires repo settings on codelibs/fessctl:
      • variable HOMEBREW_TAP_APP_ID
      • secret HOMEBREW_TAP_APP_PRIVATE_KEY
  • README — adds Method 4 (Homebrew) and updates the install-method count.
  • Version bump to 0.2.0 (the first Homebrew release).
  • Dev dep: jinja2>=3.1.0 (only used by the renderer in CI).

Test plan

  • pytest — 112 tests pass (8 new for the renderer, including a golden-file test).
  • Smoke render against the real uv.lock — produces a valid 17-resource formula.
  • Operator: tap repo (codelibs/homebrew-tap) created and CI scaffold pushed.
  • Operator: tag v0.2.0 and confirm the release workflow opens a tap PR.
  • Operator: tap CI passes on macos-15, macos-14, ubuntu-latest.
  • Operator: brew tap codelibs/tap && brew install fessctl && fessctl --help on a clean machine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant