Skip to content

v1.9.29

Choose a tag to compare

@pirate pirate released this 10 Apr 06:31
20cf82c

abx-pkg v1.9.29

✨ Highlights

  • Added abx-pkg run, a direct exec path that resolves a binary through the configured providers and then hands off execution cleanly.
  • Added abx, a thin abx-pkg --install run ... alias that behaves like a cross-provider npx / uvx / pipx run.
  • Unified provider install-root defaults around ABX_PKG_LIB_DIR, provider-specific ABX_PKG_<NAME>_ROOT overrides, and a platform-aware default lib dir.
  • Added a generated GitHub Pages landing page with a docs build pipeline and a much more structured README.
  • Made provider behavior more explicit by removing silent uv / pnpm auto-switching from PipProvider and NpmProvider.

🧭 Quick Examples

abx yt-dlp --help
abx --binproviders=env,uv,pip,brew yt-dlp --version
abx-pkg --binproviders=pip --install run black --version
export ABX_PKG_LIB_DIR=~/.config/abx/lib
export ABX_PKG_PIP_ROOT=~/.cache/abx/pip

abx-pkg --binproviders=pip,uv install black
abx-pkg --postinstall-scripts=False --min-release-age=7 install yt-dlp

🛠 What Changed

  • Exposed the full Binary / BinProvider configuration surface on the CLI, including install roots, timeouts, release-age controls, postinstall-script policy, and overrides.
  • Hardened the new run / abx command path for macOS, -- handling, bare boolean flags, and child-arg forwarding.
  • Switched the centralized default lib dir to platformdirs, while keeping explicit kwargs and provider-specific env vars highest priority.
  • Landed a GitHub Pages deployment workflow, docs renderer, and generated landing page for the provider matrix and API surface.
  • Propagated security flags to Playwright bootstrap installs and tightened several provider-specific install-root edge cases.
  • Expanded test coverage heavily, especially around the CLI, install-root precedence, and real subprocess execution.

⚠️ Behavioral Changes

  • PipProvider no longer silently falls through to uv; choose UvProvider explicitly when you want uv semantics.
  • NpmProvider no longer silently falls through to pnpm; choose PnpmProvider explicitly when you want pnpm semantics.
  • Providers with isolated install roots now follow one clear precedence order: explicit kwargs > ABX_PKG_<NAME>_ROOT > ABX_PKG_LIB_DIR/<name> > provider default.

🧪 Verification

  • GitHub Actions passed on main for the release line before the version bump.
  • Local checks passed with uv run pyright and focused uv run pytest slices covering the new CLI/install-root work.

Thanks to everyone pushing on the provider edge cases and CLI ergonomics. 🚀