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.