pdulvp.fr

A published release announces itself on pbus has been fixed.

See more details at : https://github.com/pdulvp/prel/issues/14

  • prel release ends on pbus emit prel.release.published --payload <version>,

the last step of a release that really went out: nothing for a --draft or
under --no-release, and prel release -n says which applies

  • pbus missing or the event undeclared is silence; a daemon that is not

running, a missing key or a refused payload is a warning naming the emit to
repeat, never a failed release

  • sudo prel init-pbus register declares the event once per machine, with a

payload pattern of the shape a version has, and hands the key to the account
that called sudo - the one that runs prel release

  • pbus added to the .deb's Recommends, beside gh and jq

A published release announces itself on pbus

<sub>2026-10-26-2225-pbus-release-published.md — 2026-10-26 22:25</sub>

pbus is an event dispatcher for Debian (/mnt/Data/Works/pbus-events): a
command registers against an event name and the daemon launches it when that
event is emitted. A release is exactly such a moment -- the site rebuilds, a
notification pops -- and none of it is prel's work to wait for.

So a release that went out emits prel.release.published with the version as
its payload, and sudo prel init-pbus register is what declares the event
once per machine.

prel release 0.2.7 # ... then: pbus emit prel.release.published
sudo prel init-pbus register # declare the event, hand the key over
prel init-pbus status # what a release would emit, and to whom

Nothing here may stop or fail a release. pbus not installed, the event not
declared, the daemon not running, the key not found: the release is already
out by then, so the first two are silence and the last two a warning naming
the pbus emit to retry by hand. pbus is a Recommends of the package, not
a Depends, for the same reason.

The event is emitted only where the release was really published: not on a
dry run, not under --no-release, and not for a --draft, which has not
shipped.

Steps

  • [x] scripts/init-pbus.sh -- prel init-pbus [usage|register|unregister|status]
  • no pbus shortcut function: prel.sh sources every script into

one shell, and a function of that name would shadow the binary
release.sh emits through

  • register: pbus register-event prel.release.published with a

description, --payload-pattern for the version shape and --save;
an event already there is reported and left alone, since re-declaring
it would rotate the key under whoever already holds it

  • register under sudo also hands the key to $SUDO_USER's keyring

through pbus save-key, so the unprivileged prel release that
emits can find it

  • status: unprivileged, says whether pbus is there, whether the event is

declared, whether this account holds a key, and what a release would do

  • unregister: pbus unregister-event, pointing at --purge-listeners
  • [x] scripts/release.sh
  • _REL_PBUS_EVENT, _rel_pbus_available, _rel_pbus_event_known

(pbus show-event exits non-zero on an event the machine does not know)

  • the report block gains a pbus: line, so a dry run says what would be

emitted and why it would not be

  • the emit itself as the last step of a published release, after the

milestone: warn-only, never a non-zero return

  • usage text
  • [x] packaging/build-deb.sh -- pbus added to Recommends
  • [x] README.md -- the pbus section, and prel init-pbus in the command list
  • [x] checked: bash -n on all three files (shellcheck is not installed here),

prel release -n with the event declared, as a draft, under
--no-release and with pbus out of PATH, and the emit itself end to
end against a private pbusd under /tmp - accepted, refused by the
pattern, and no daemon at all

  • [x] docs/plans/sumup.md, plan marked complete and archived

<sub>Filed by prel from the completed plans at commit time.</sub>