wharfy 0.16.0 — winding a channel down without deleting it
What’s new
Retiring a channel used to mean removing it from channels:. The moment you did,
wharfy stopped touching it — and stopped being able to tell anyone. Now you say so
and leave it in place.
channels: [homebrew, script, goinstall] # leave it in
deprecate:
script:
since: "1.4.0"
ship: true # default: keep shipping while you migrate
message: |
The install script is going away in 1.4.0. Please use Homebrew instead.
Your message is carried verbatim. wharfy never writes it, rewrites it, or wraps it in words of its own. It reaches users by two paths, because either one alone leaves someone behind:
| who | how |
|---|---|
| people installing now | the channel’s notice field — Homebrew/Cask caveats, Scoop notes, deb/rpm description, AUR post_install, the install scripts |
| people who installed already | latest.json, which your CLI already polls — caveats only ever appears at install time |
Writing no deprecate: block leaves every generated artifact byte-for-byte identical.
Nowhere to put a notice
A Go module has no description field. Neither does a container image. wharfy does not pretend otherwise:
⚠ deprecate_no_notice_surface: goinstall: deprecated, but this channel has no
place to carry your notice — it reaches users only via latest.json
It is a warning, not an error. You may decide latest.json is enough.
ship: false — stop shipping, keep announcing
The channel stays at the last version you published there. No new version reaches it. How far the notice still travels depends on what the channel lets wharfy rewrite:
| channels | what happens |
|---|---|
| homebrew, cask, scoop, aur | the manifest is rebuilt at the frozen version — same binaries, new notice |
| script | install.sh / install.ps1 keep installing the frozen version and print the new notice |
| apt, rpm, container, winget, homebrew-core | nothing is written; the notice reaches users via latest.json |
| releases, goinstall | cannot be frozen — a Release holds every other channel’s assets, and go install resolves the newest tag |
Rebuilding a manifest needs the checksums of the frozen version’s assets, so wharfy records them with each publish. A channel frozen before it was ever published has no version to freeze at: wharfy ships nothing rather than leak a new version through a route you closed. Every publish says what it froze — freezing shows up as an absence, and an absence is easy to read as success.
0.16.1 — install.ps1 never ran
install.ps1, added in 0.15.0, failed on every Windows machine. PowerShell reads
"$Project:" as a drive-qualified variable, so the script died while being parsed.
It never reached the architecture check.
+ default { Write-Error "$Project: unsupported arch: ..." }
+ ~~~~~~~~~
Variable reference is not valid. ':' was not followed by a valid variable name character.
The fix is ${Project}. 0.16.1 ships it, and a test now rejects any drive-qualified
variable other than $env: in the generated script.
Getting it
brew upgrade wharfy / scoop update wharfy / go install github.com/ShiroDoromoto/wharfy/cmd/wharfy@latest. On Linux, from the apt / yum repo.