wharfy 0.6 — declare a runtime dependency once, project it to every channel
Declare a runtime dependency once, get it on every channel
A CLI that shells out to ffmpeg or git at runtime wants each package manager to pull the tool in too — but the field and syntax differ per channel. In 0.6.0, declare it once under runtime_deps and wharfy projects it to homebrew, scoop, apt, rpm, and aur.
runtime_deps:
- name: ffmpeg
min: "6.0" # apt (>= 6.0) / rpm >= 6.0 / aur >=6.0; brew & scoop → name only
- name: fzf
required: false # → apt/rpm recommends, aur optdepends
- name: rg
as: { apt: ripgrep } # override per channel where the name differs, emitted verbatim
min degrades to name-only on homebrew/scoop (they can’t express versions — by design). wharfy doesn’t pretend to know a distro’s package name: when it differs, the as value is emitted verbatim, so the worst case equals hand-writing the line. Declare only the first hop; the rest resolves transitively.
init spells out the distribution boundary
The wharfy init block gains a line: merging a dependency bump ships nothing — distribution stays an explicit wharfy release / wharfy publish step. It’s written where agents read it.
Getting it
brew upgrade wharfy / scoop update wharfy / go install github.com/ShiroDoromoto/wharfy/cmd/wharfy@latest. On Linux, from the apt / yum repo.