pdulvp.fr

Événements pbus d'une release : payloads JSON, un événement par artefact has been fixed.

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

  • prel.release.published émet un payload JSON {"version": "0.2.13"} au lieu

de la version nue ; un listener lit le champ avec jq -r .version, et le
pattern déclaré par prel init-pbus register matche cette forme

  • chaque artefact publié émet aussi prel.release.artifact.<ext>.published

(ex. .deb), hors --draft et --no-release, avec un payload
{"version": "0.2.13", "repository": "pdulvp/prel"} : la version et le dépôt
owner/repo lu dans l'URL de push du remote GitHub

  • émissions warn-only comme avant : événement non déclaré = silence, émission

refusée = avertissement avec la commande pbus emit à rejouer ; vérifié de
bout en bout contre un pbusd privé (payloads acceptés et capturés, version
nue refusée rc 6)

  • prel init-pbus status/register signalent un pattern d'ancienne forme qui

refuserait le payload JSON, et prel init-pbus usage + README documentent la
déclaration des événements artefact avec leur payload pattern

Événement prel.release.published : payload JSON avec un attribut version

<sub>2026-11-07-1319-pbus-payload-json-version.md — 2026-11-07 13:19</sub>

Objectif : le payload émis n'est plus la version nue (0.2.12) mais un objet
JSON {"version": "0.2.12"}, pour qu'un listener lise un champ nommé avec
jq -r .version plutôt que de parser la chaîne entière.

Étapes :

  • [x] scripts/release.sh
  • _rel_pbus_payload <version> : construit {"version": "<version>"} par

printf (la forme d'une version n'admet aucun caractère à échapper dans
une chaîne JSON)

  • _rel_pbus_emit : émet --payload "$payload" ; la commande de reprise

manuelle affiche le payload entre apostrophes

  • rapport de prel release -n (ligne pbus:) : affiche le payload JSON
  • texte d'usage, étape 9 ; commentaire d'en-tête de la section pbus
  • [x] scripts/init-pbus.sh
  • _PREL_PBUS_PATTERN : nouvelle forme ^\{"version": "..."\}$ (backslash

simple — pbusd matche via [[ =~ $pat ]] sur une variable)

  • commentaires et usage : payload = objet JSON, lecture via jq -r .version
  • register (branche « déjà déclaré ») et status : signaler quand le

pattern déclaré diffère de celui attendu, puisqu'il refuserait le payload
JSON émis par une release

  • [x] README.md : étape 9, section pbus (forme du payload, exemple

d'avertissement, pattern, exemple de listener)

  • [x] Vérifié : bash -n sur les deux scripts, pattern testé contre des

payloads valides et refusés, _rel_pbus_payload appelé en shell, rendu de
prel release usage et prel init-pbus usage, prel release -n micro
(ligne pbus: avec le payload JSON), et émission de bout en bout contre un
pbusd privé sous /tmp (payload JSON accepté et capturé par un listener,
jq -r .version -> 0.2.12, version nue refusée rc=6 ; pattern de l'ancienne
forme refuse le payload JSON, note affichée par status et register)

  • [x] Marqué complete, docs/plans/sumup.md écrit, plan archivé

Événements prel.release.artifact.<ext>.published pour chaque artefact publié

<sub>2026-11-07-1327-pbus-artifact-published-events.md — 2026-11-07 13:27</sub>

Objectif : quand une release publie des artefacts, émettre pour chacun une
evento prel.release.artifact.<extension>.published (ex. .deb pour
build/prel_0.2.13_all.deb), avec un payload JSON contenant version et le
dépôt GitHub owner/repo sur lequel la release a été publiée :
{"version": "0.2.13", "repository": "pdulvp/prel"}.

Étapes :

  • [x] scripts/release.sh
  • _rel_github_repo : owner/repo lu dans l'URL de push du remote

(testé sur https, scp-like git@, ssh:// avec et sans port ; refusé hors
github.com ou sans deux composants propres)

  • _rel_pbus_event_known accepte un nom d'événement en argument
  • _rel_pbus_send <event> <payload> <warning> : émission brute warn-only ;

_rel_pbus_emit et _rel_pbus_emit_artifact l'appellent

  • _rel_pbus_artifact_event <fichier> : extension = suffixe après le dernier

point, en minuscules, caractères valides pbus ; pas d'extension (ou suffixe
purement numérique comme myapp-1.0) -> pas d'événement

  • _rel_pbus_artifact_payload <version> <repo> ; pattern

_PREL_PBUS_ARTIFACT_PATTERN testé : payload émis accepté, payload sans
repository, version préfixée v, repo mal formé refusés

  • boucle sur _REL_ASSETS à la fin de la release (hors draft et

--no-release, une émission par extension distincte)

  • rapport prel release -n : ligne pbus: par extension de pattern ;

vérifié : prel.release.artifact.deb.published avec
{"version": "0.2.13", "repository": "pdulvp/prel"} ; usage étape 9

  • [x] scripts/init-pbus.sh : _PREL_PBUS_ARTIFACT_EVENT et

_PREL_PBUS_ARTIFACT_PATTERN ; usage : exemple de déclaration d'un événement
artefact (rendu vérifié)

  • [x] README.md : étape 9, section pbus (événements par artefact, payload,

exemple de déclaration), section prel init-pbus

  • [x] Vérifié de bout en bout contre un pbusd privé : événement

prel.release.artifact.deb.published déclaré avec le pattern -> payload JSON
accepté, capturé par le listener, jq -r .version / .repository lus ;
extension non déclarée -> silence ; payload nu refusé (rc 6) ; avertissement
de reprise avec la commande quotée

  • [x] Marqué complete, docs/plans/sumup.md écrit, plan archivé

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