Repository navigation
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
- Require spiral/roadrunner-worker ^3.7 (RoadRunner v3).
- Sort releases so that 3.x is newer than the calendar 2023.x-2025.x
releases (they sort between 2.x and 3.x). Pre-releases now sort below
their stable release.
- Take the default --filter constraint from the installed
spiral/roadrunner metapackage ("3.*", "2025.*", ...) and fall back to
"3.*" instead of the spiral/roadrunner-worker major.
- Generate the AMQP section in the v3 named-connection format.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
get-binary and download-protoc-binary keep their options but delegate the
download to DLoad (internal/dload): release lookup, asset selection
(including libc detection), download and extraction. The overwrite prompt
and .rr.yaml generation stay in the CLI. The versions command still uses
the built-in GitHub client.
- Require internal/dload ^1.18, PHP >=8.2, symfony/console and
symfony/http-client ^6.4.
- --filter and --stability are passed as a DLoad constraint
("3.*@beta"); "*" means no constraint.
- An empty bundled dload.xml keeps a project's ./dload.xml from
overriding the requested version.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The commands now download through DLoad, so the tests replace DLoad's `get` command with a spy that accepts its input definition instead of serving releases from an in-memory repository. The commands take the downloader as an optional constructor argument for that. The pre-release ordering test is no longer skipped: the RoadRunner v3 release ordering fixed it. Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@coderabbitai review |
|
# Conflicts: # psalm-baseline.xml # src/DownloadProtocBinaryCommand.php # src/GetBinaryCommand.php
|
Blocked by php-internal/dload#143: the |
With the variable set, DLoad gets a temporary config that redefines the rr and protoc-gen-php-grpc entries of its registry with the `host` of that URL, port included. DLoad takes a bare host name there, so the scheme and the path are dropped. DLoad does not support the attribute yet (php-internal/dload#143), so until it does the variable has no effect on downloads. Assisted-By: Claude Opus 5.5
Takes the roadrunner/cli name, metadata and dependencies from 2.x and drops spiral/roadrunner-worker, which 2.x replaced with roadrunner/worker. Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
feat: map RR_GITHUB_API_URL to a GitHub Enterprise Server for DLoad
DLoad takes a bare `scheme://host[:port]` server and serves its API at `{server}/api/v3`, so RR_GITHUB_API_URL keeps its meaning of a full API URL and must be either https://api.github.com or end with /api/v3; any other path is rejected instead of silently going elsewhere. GITHUB_TOKEN no longer reaches such a server: DLoad reads its token from DLOAD_TOKEN_<HOST>.
The DLoad branch is required until DLoad 1.19.0 is released.
Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
The fake serves the API under /api/v3 and plays one scenario per server, since DLoad's server can not carry a path. Two DLoad bugs are skipped: an exact pre-release filter matches nothing, and a .deb asset is picked instead of falling back to an older release. Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
What was changed
rr get-binaryandrr download-protoc-binarykeep their options and output, but the download itself (release lookup, asset selection, download, extraction) is done by DLoad (internal/dload). The overwrite prompt and.rr.yamlgeneration stay in the CLI.rr versionsstill uses the built-in GitHub client.>=8.2,symfony/console/symfony/http-client^6.4 || ^7 || ^8(DLoad's minimums).--filter+--stability→rr:<filter>@<stability>;--filter='*'→ no constraint +--stability;--os,--arch,--location→--os,--arch,--path; a confirmed overwrite →--force.--refreshis always on, so DLoad's version-registry cache never hides a fresh release. The default filter is the RoadRunner v3 one from feat: support RoadRunner v3 #48 (3.*or the installed metapackage major).resources/dload.xmlis passed as--config; otherwise a project's./dload.xmlwith anrraction would silently override--filter.RR_GITHUB_API_URLkeeps its meaning from feat: read the GitHub API URL from RR_GITHUB_API_URL #65 (the full API URL).https://api.github.comchanges nothing; a GitHub Enterprise URLscheme://host[:port]/api/v3becomes a temporary config that re-declares therrandprotoc-gen-php-grpcentries with<repository server="scheme://host[:port]">(feat(repository): support self-hosted servers via theserverattribute php-internal/dload#148). Any other path is rejected: DLoad always serves a server's API at{server}/api/v3.GITHUB_TOKENis honoured for the public GitHub only; DLoad never sends it to another host. A GitHub Enterprise token goes intoDLOAD_TOKEN_<HOST>(e.g.DLOAD_TOKEN_GHE_EXAMPLE_COM).Why?
One downloader for the RoadRunner ecosystem instead of a second copy of release lookup and archive handling in the CLI.
Review notes
composer.jsonrequires"internal/dload": "dev-feat/repository-server as 1.19.0"— the branch of feat(repository): support self-hosted servers via theserverattribute php-internal/dload#148, which adds<repository server>. Switch to^1.19once it is released.php -S, API under/api/v3, one server per scenario since a DLoad server has no path). Two DLoad bugs are skipped there: an exact pre-release filter (-f 3.5.0-beta.1) matches nothing, and with no archive for the platform DLoad picks a.debit cannot extract instead of an older release.version_compare(), so with no constraint it picks2025.1.15over3.0.0(rr get-binary -f '*'installs 2025.1.15). The default filter is not affected. Needs the same fix in DLoad as in feat: support RoadRunner v3 #48.Internal\DLoad\Command\Get, is@internal. The integration runs thegetcommand in-process (suppressedInternalClass).--os=unknown-muslmaps tolinux; the libc is always auto-detected by DLoad, so forcing a musl build from a glibc host is no longer possible.Command::getRepository()in aGetBinaryCommandsubclass no longer changes where the binary comes from; it only affectsversions.Archive\*classes and theRepositoryasset helpers are now unused by the commands but are kept, since removing public classes is a BC break. So Binaries in the archive root are not extracted #59, RepositoriesCollection drops releases of all but the last repository #60, Releases with non-version tags are named d-<tag> instead of dev-<tag> #61 and the.pharpart of .phar assets cannot be opened, and a failed config generation still writes .rr.yaml #62 stay open.Checklist
get-binarydefault,-f '3.*' -s beta→ 3.0.0,-f '9.*'→ fails with exit 1, existing binary → prompt/skip;download-protoc-binary -f 2025.1→ 2025.1.0