feat(extension): support multi-extension GitHub release repos#593
feat(extension): support multi-extension GitHub release repos#593jkirsteins wants to merge 13 commits into
Conversation
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ea0b8ec811
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "dep:flate2", | ||
| "dep:tar", | ||
| "dep:zip", |
There was a problem hiding this comment.
Enable archive dependencies for WASI builds
The WASI CI/release job builds the CLI with cargo build --target wasm32-wasip2 --no-default-features --features wasi (.github/workflows/ci.yml:207), but these new archive crates are only enabled by the native feature while src/extensions/install.rs now references flate2, tar, and zip unconditionally. That leaves the WASI build without those optional dependencies and the binary will fail to compile; add them to the wasi feature or cfg-gate the archive install code out of that target.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Verified the WASI build locally with:
cargo check --target wasm32-wasip2 --no-default-features --features wasi
It passes because extensions are cfg-gated and not compiled for the WASI target.
Added a line in README.md under WASM limitations.
…-extension-repo # Conflicts: # Cargo.lock
Summary
Add support for installing and listing multiple
pup-*extensions from a single GitHub release repository.This lets a release archive contain executables such as
pup-fooandpup-bar, then allows users to install one extension, install all discovered extensions, or list remote versions before installing.Changes
pup extension list-remote owner/repopup extension install owner/repo --extension <name>pup extension install owner/repo --all--tagchecksums.txtis presentghon the hot path for public GitHub requests; use it only after private/inaccessible repo failuresTrying It
Build locally:
List remote extensions from a repository:
List versions for one extension:
Install the latest stable release containing one extension:
Install a specific release tag:
Install every discovered extension from the selected archive:
Force reinstall or upgrade an existing extension:
For private repositories, either provide a token:
or authenticate with GitHub CLI:
Testing
cargo fmt --checkcargo clippy -- -D warningscargo test -- --test-threads=1Notes
Remote listing currently infers extension names by inspecting bounded platform release archives. A future improvement could add a small release manifest/index asset to avoid downloading archives for metadata-only listing.