module

Beryl::Bootstrap::MfsBSDRelease

Détection de la dernière release mfsBSD disponible sur https://github.com/mmatuska/mfsbsd/releases (source officielle actuelle, miroirée sur mfsbsd.vx.sk seulement pour les anciennes majors).

Pourquoi dynamique : mfsBSD évolue dans son coin côté Martin Matuska, au fil des releases FreeBSD. Figer une version en dur dans beryl (ex: « 14.2 ») condamne l'outil à devoir être rebuildé à chaque nouvelle release. La détection au runtime évite ça et garantit qu'un bootstrap utilise la dernière version disponible au moment du lancement.

mfsBSD SE contient les dists FreeBSD (base.txz + kernel.txz + MANIFEST) de la MÊME version : installer FreeBSD X.Y via mfsBSD SE X.Y évite le téléchargement et le mismatch pkg. C'est pour ça que freebsd_version et mfsbsd_version sont synchronisés dans beryl.

Pas de défaut silencieux (règle Aloli) : si la détection échoue (réseau HS, API GitHub en panne, JSON malformé), on lève DetectionFailed — pas de fallback sur une valeur arbitraire. L'opérateur peut forcer une version avec beryl bootstrap --freebsd-version=X.Y.

Constants

LATEST_API_URL = "https://api.github.com/repos/mmatuska/mfsbsd/releases/latest"
SE_ASSET_RX = /^mfsbsd-se-(\d+)\.(\d+)-RELEASE-amd64\.(iso|img)$/

Pattern extrayant la version FreeBSD d'un nom d'asset mfsBSD SE. Accepte .iso (format actuel GitHub) et .img (ancien format vx.sk).

Class methods

default_fetch(url : String) : String

Fetcher par défaut : HTTP::Client.get avec User-Agent (GitHub API refuse les requêtes sans User-Agent).

Source
latest(fetcher : Fetcher = ->default_fetch(String)) : Info

Détecte la dernière mfsBSD SE disponible sur GitHub releases.

Étapes :

  1. GET l'API GitHub → JSON de la dernière release
  2. Parcourt assets[] et filtre ceux dont le nom matche mfsbsd-se-<X>.<Y>-RELEASE-amd64.<iso|img>$
  3. Retourne l'Info de la plus haute version (par (major, minor))

fetcher est injectable pour les tests.

Source

Nested types