Skip to content

feat: restructure the formula for per-package release-please versioning - #3

Merged
bougyman merged 1 commit into
mainfrom
feat-release-please-manifest
Aug 12, 2026
Merged

feat: restructure the formula for per-package release-please versioning#3
bougyman merged 1 commit into
mainfrom
feat-release-please-manifest

Conversation

@bougyman

Copy link
Copy Markdown
Member

Summary

  • Moves Formula/lc.rb -> Formula/linear-cli/linear-cli.rb (class Lc -> LinearCli) - Homebrew derives the formula's install name from the file's basename, not its directory, so this is still brew install linear-cli, matching Homebrew's own sharded-layout convention (Formula/a/ack.rb) for nested formula files. url/sha256 deliberately left unchanged (still v1.0.0) - bumping to the real latest release is a separate follow-up (rubyists/linear-cli's own homebrew-tap-bump workflow job will handle that automatically going forward).
  • Adds .release-please-manifest.json/.release-please-config.json (manifest mode, one package: Formula/linear-cli) plus a release-please workflow, so this formula gets its own independently tracked version/changelog (Formula/linear-cli/.version + CHANGELOG.md) as this tap grows to host more than one formula - verified release-please's manifest mode requires each package's path to be a real directory, not a file, which is exactly what this move sets up.
  • Updates Readme.adoc's install command to match.

Test plan

  • ruby -c syntax check on the moved/renamed formula
  • JSON validated on both release-please config files
  • actionlint clean on the new workflow
  • Re-tested rubyists/linear-cli's own formula-bump script against the new file location/structure - still works correctly

🤖 Generated with Claude Code

Moves Formula/lc.rb -> Formula/linear-cli/linear-cli.rb (class Lc ->
LinearCli) - Homebrew derives the formula's install name from the
file's basename, not its directory, so this is still `brew install
linear-cli`, matching Homebrew's own sharded-layout convention
(Formula/a/ack.rb) for nested formula files. url/sha256 deliberately
left unchanged (still v1.0.0) - bumping to the real latest release is
a separate follow-up.

Adds .release-please-manifest.json/.release-please-config.json
(manifest mode, one package: "Formula/linear-cli") plus a
release-please workflow, so this formula gets its own independently
tracked version/changelog (Formula/linear-cli/.version +
CHANGELOG.md) as this tap grows to host more than one formula -
verified release-please's manifest mode requires each package's path
to be a real directory, not a file, which is exactly what this move
sets up.

Updates Readme.adoc's install command to match.
Copilot AI lite review requested due to automatic review settings August 12, 2026 20:17

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR restructures the tap to support per-formula (per-package) Release Please “manifest mode” versioning by moving the lc formula into a dedicated package directory and adding the Release Please configuration + workflow to manage a per-package .version and CHANGELOG.md.

Changes:

  • Moved/renamed the formula to Formula/linear-cli/linear-cli.rb and updated the formula class name to LinearCli.
  • Added Release Please manifest-mode configuration (.release-please-*.json) plus a release-please GitHub Actions workflow.
  • Updated Readme.adoc install instructions to brew install linear-cli and clarified what binaries are installed.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
File Description
Readme.adoc Updates install command and description to reflect the new formula name/path.
Formula/linear-cli/linear-cli.rb Renames the formula class and relocates the formula under a package directory for manifest mode.
Formula/linear-cli/CHANGELOG.md Introduces per-package changelog file for Release Please to manage.
Formula/linear-cli/.version Adds per-package version file for Release Please to manage.
.release-please-manifest.json Sets up manifest-mode package version tracking for Formula/linear-cli.
.release-please-config.json Configures Release Please to update .version and CHANGELOG.md for the package.
.github/workflows/release-please.yaml Adds automation to open/update Release Please PRs on pushes to main.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@bougyman
bougyman merged commit 23d1237 into main Aug 12, 2026
1 check passed
@bougyman
bougyman deleted the feat-release-please-manifest branch August 12, 2026 20:42
bougyman added a commit to rubyists/linear-cli that referenced this pull request Aug 12, 2026
…95)

## Summary
- New `homebrew-tap-bump` job, parallel to the `container` job (both
`needs: [burrito-package]`) - reads the just-published release's tag +
`SHA256SUMS`, updates `rubyists/homebrew-tap`'s
`Formula/linear-cli/linear-cli.rb` `url`/`sha256` for both platforms via
`ci/bump_homebrew_formula.rb`, and opens a PR there via
`peter-evans/create-pull-request@v8` (no-op if nothing changed).
- Uses the `RELEASE_PLEASE_TOKEN` org secret to push/PR against a
different repo than the one the workflow runs in - the default
`GITHUB_TOKEN` is scoped only to this repo.
- The actual bump logic lives in `ci/bump_homebrew_formula.rb` rather
than inline in the workflow YAML, so it's runnable/testable locally
without a real CI run.
- Depends on rubyists/homebrew-tap#3 (submodule pointer bumped to that
branch's tip - will need another bump if the SHA changes from a
squash-merge once that PR lands).

## Test plan
- [x] Ran the bump script directly against a real copy of the formula
and real release checksums (v1.2.0) - correct output, valid Ruby syntax
- [x] Confirmed idempotent (re-running with the same version produces
identical output)
- [x] Re-verified after the tap repo's `Formula/lc.rb` ->
`Formula/linear-cli/linear-cli.rb` move - still works correctly against
the new path/structure
- [x] Verified `peter-evans/create-pull-request@v8`'s `path:` input
(needed since this job checks out two different repos side by side) via
its own docs
- [x] `actionlint` clean on `main.yaml`
- [x] `mix format --check-formatted` / `mix usage_rules.sync --check`
clean in `app/` (unaffected, but re-verified since they're now CI gates)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
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.

2 participants