Skip to content

feat: add support for aube package manager - #240

Merged
pi0 merged 6 commits into
mainfrom
feat/aub
Jun 11, 2026
Merged

pi0 merged 6 commits into
mainfrom
feat/aub

Conversation

@pi0x

@pi0x pi0x commented Jun 10, 2026 •

Copy link
Copy Markdown
Contributor

Adds support for the aube package manager (binaries aube, aubr, aubx) to nypm

Summary by CodeRabbit

  • New Features

    • Added first-class support for aube: recognition, lockfile format, and command variants (install, add, dlx) including short-form flags and dev-flag behavior.
  • Documentation

    • README now lists aube among supported package managers.
  • Tests

    • New aube fixtures and expanded tests covering install (frozen/short), add (dev/global), dlx, scripts, and workspace cases.
  • Chores

    • CI/workflows updated to install and verify the aube binary.

Adds detection and command generation for the aube package manager
(https://github.com/jdx/aube), including its native `aube-lock.yaml`
lockfile, `aube dlx`/`aubx` exec, and aube-specific add flags
(`--save-dev`, no `i` install alias).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 10, 2026 •

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds aube support across types and package-manager registry, command generation (install/add/dlx), API/runtime handling, test fixtures and assertions, CI/autofix workflow steps to install aube, and README documentation.

Changes

Aube Package Manager Support

Layer / File(s) Summary
Type System and Package Manager Registry
src/types.ts, src/package-manager.ts
PackageManagerName includes "aube". packageManagers adds { name: "aube", command: "aube", lockFile: "aube-lock.yaml" } placed before pnpm.
Command Generation for Install, Add, and DLX
src/cmd.ts
installDependenciesCommand avoids short i alias for aube and adds frozen-lockfile mapping. addDependencyCommand uses --save-dev for aube in non-short mode. dlxCommand maps to aubx when short, or aube dlx otherwise.
API Layer and Runtime Handling
src/api.ts, src/_utils.ts
pmToFrozenLockfileInstallCommand registers aube with ["install", "--frozen-lockfile"]. executeCommand disables Corepack wrapping for aube.
Test Fixtures and Data
test/fixtures/aube/package.json, test/fixtures/aube/aube-lock.yaml, test/fixtures/aube/pnpm-workspace.yaml
New fixture package.json, updated aube-lock.yaml (lockfileVersion 9.0 with expanded sections), and PNPM workspace stub (packages: []).
Test Assertions and Test Configuration
test/cmd.test.ts, test/_shared.ts
Adds an aube fixture with expected command strings for install/add/runScript/dlx variants; registers aube in shared fixtures.
GitHub Actions Setup for Aube Binary
.github/workflows/autofix.yml, .github/workflows/ci.yml
Both workflows add steps to fetch and install platform-specific aube releases before Node setup, verify via aube --version, and autofix workflow updates git revert to include test/fixtures/aube.
Documentation Update
README.md
Adds aube to the README list of supported package managers under the unified API description.

Sequence Diagram(s)

sequenceDiagram
  participant Runner
  participant GitHubAPI
  participant Asset
  participant FS
  Runner->>GitHubAPI: query latest `jdx/aube` release (gh + GH_TOKEN)
  GitHubAPI-->>Runner: return release tag and asset URLs
  Runner->>Asset: download platform-specific asset (os/arch)
  Asset-->>FS: extract to $HOME/.aube/bin (Expand-Archive / tar)
  Runner->>FS: append $HOME/.aube/bin to GITHUB_PATH
  Runner->>FS: run `aube --version` to verify
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

A rabbit hopped in code at night,
Tucked "aube" in lines with gentle bite,
Lockfiles, tests, workflows all aligned,
CI hums and fixtures find their mind,
The rabbit grins and hops — delight! 🐇✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: add support for aube package manager' clearly and concisely describes the main objective of the pull request.
Docstring Coverage ✅ Passed Docstring coverage is 80.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/aub

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@README.md`:
- Line 13: Update the README link for the aube package manager by replacing the
incorrect GitHub URL (https://github.com/jdx/aube) with the canonical repository
URL (https://github.com/endevco/aube) in the line that lists supported package
managers (the anchor text "aube" in the supported tools sentence).

In `@test/fixtures/aube/package.json`:
- Around line 5-6: The package.json scripts "test-script" and "test-script-env"
call fs.writeFileSync inside node -e without importing fs; update each inline
Node command to require the built-in module first (e.g., const fs =
require('fs');) before calling fs.writeFileSync, and keep
process.env.TEST_CONTENT usage in "test-script-env" unchanged; ensure both
"test-script" and "test-script-env" now run without ReferenceError by prepending
the require statement in their node -e expressions.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 80a3c643-8b70-421b-b99e-b9bd9d545fce

📥 Commits

Reviewing files that changed from the base of the PR and between cf9c58e and 2fd7dc8.

📒 Files selected for processing (9)
  • README.md
  • src/api.ts
  • src/cmd.ts
  • src/package-manager.ts
  • src/types.ts
  • test/cmd.test.ts
  • test/detect.test.ts
  • test/fixtures/aube/aube-lock.yaml
  • test/fixtures/aube/package.json

Comment thread README.md
Comment thread test/fixtures/aube/package.json
- install the aube release binary on Linux/macOS CI runners (no npm
  package / action published yet, so download the prebuilt binary)
- add aube to the shared execution fixtures with a real generated
  lockfile; isolate it from the repo workspace via pnpm-workspace.yaml
  so installs don't escape to the repo root
- match aube before pnpm in detection so aube-lock.yaml wins over the
  fixture's pnpm-workspace.yaml marker
- skip corepack for aube (it is a standalone binary, not corepack-managed)
- skip aube on Windows runners (binary not installed there)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@coderabbitai coderabbitai Bot 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.

🧹 Nitpick comments (1)
.github/workflows/ci.yml (1)

28-41: ⚖️ Poor tradeoff

Consider extracting duplicated aube installation script.

This installation script is duplicated verbatim in .github/workflows/autofix.yml (lines 23-36). When AUBE_VERSION needs updating, both files must be changed. You could extract this to a local composite action under .github/actions/setup-aube/action.yml for maintainability.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml around lines 28 - 41, Extract the duplicated AUBE
install logic into a composite action at .github/actions/setup-aube/action.yml
that accepts input AUBE_VERSION (default v1.18.2) and runs the existing shell
block (the case on runner.os/runner.arch, compute target, curl|tar extract to
$HOME/.aube/bin and echo to $GITHUB_PATH). Replace the inlined script in
.github/workflows/ci.yml and .github/workflows/autofix.yml with a single step
that uses the new action (./.github/actions/setup-aube) and passes the
AUBE_VERSION via with:, ensuring the action preserves the same behavior and
environment (uses runner.os/runner.arch, target, and writes to GITHUB_PATH).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.github/workflows/ci.yml:
- Around line 28-41: Extract the duplicated AUBE install logic into a composite
action at .github/actions/setup-aube/action.yml that accepts input AUBE_VERSION
(default v1.18.2) and runs the existing shell block (the case on
runner.os/runner.arch, compute target, curl|tar extract to $HOME/.aube/bin and
echo to $GITHUB_PATH). Replace the inlined script in .github/workflows/ci.yml
and .github/workflows/autofix.yml with a single step that uses the new action
(./.github/actions/setup-aube) and passes the AUBE_VERSION via with:, ensuring
the action preserves the same behavior and environment (uses
runner.os/runner.arch, target, and writes to GITHUB_PATH).

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 4a229662-799d-435d-ac6d-ee14fec7f1ba

📥 Commits

Reviewing files that changed from the base of the PR and between 2fd7dc8 and 1349d01.

📒 Files selected for processing (7)
  • .github/workflows/autofix.yml
  • .github/workflows/ci.yml
  • src/_utils.ts
  • src/package-manager.ts
  • test/_shared.ts
  • test/fixtures/aube/aube-lock.yaml
  • test/fixtures/aube/pnpm-workspace.yaml
✅ Files skipped from review due to trivial changes (1)
  • test/fixtures/aube/pnpm-workspace.yaml
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/package-manager.ts
  • test/fixtures/aube/aube-lock.yaml

pi0 and others added 4 commits June 10, 2026 18:51
Resolve the latest aube tag at run time (asset names embed the version)
using the GitHub API with the workflow token to avoid rate limits.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The latest-version change piped `curl | grep -m1`, which under pipefail
made curl exit 23 (write error) when grep closed the pipe early, aborting
the step. Resolve the version with `gh release view` and download with
`gh release download` instead (no pipe, handles auth/redirects).

aube ships Windows builds too, so install the msvc zip there (extracted
via bsdtar's `tar -xf`) and stop skipping aube fixtures on Windows.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Git Bash's `tar` is GNU tar and can't read the msvc `.zip`. Use
`Expand-Archive` on Windows (tar still handles the unix tarballs).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
aube is installed and verified (aube --version) on Windows CI, but its
network-heavy install/dlx fixtures are skipped there: the Windows runner
already times out on the equivalent npm/pnpm/deno tests, and adding more
concurrent installs only compounds that pre-existing flakiness.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@pi0
pi0 merged commit f70902b into main Jun 11, 2026
11 of 14 checks passed
@pi0
pi0 deleted the feat/aub branch June 11, 2026 07:30
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