feat(update): check core branch validity and alert if missing#3375
feat(update): check core branch validity and alert if missing#3375zoic21 wants to merge 2 commits into
Conversation
Add update::getCoreBranchList() by extracting the inline branch/tag fetching logic from administration.php, and update::isCoreBranchValid() to verify the configured core branch (or tag) still exists on the repository. Custom providers, well-known stable branches and an unreachable remote list all return true to avoid false positives. Alert the user through both channels when the branch is gone: - a health check item in jeedom::health() - a message in the notification center from update::checkUpdate() Closes #3166
| 'name' => __('Branche du core', __FILE__), | ||
| 'state' => $state, | ||
| 'result' => ($state) ? $branch : $branch . ' (' . __('introuvable', __FILE__) . ')', | ||
| 'comment' => ($state) ? '' : __("La branche configurée pour le core n'existe plus sur le dépôt. Allez dans Réglages -> Système -> Mises à jour / Réinitialisation pour sélectionner une branche valide.", __FILE__), |
There was a problem hiding this comment.
ca n'existe pas ce bouton "Réinitialisation" ou j'ai raté un truc?
| * Résultat mis en cache 24h (clé core::branch::default::list). | ||
| * @param bool $_refresh force le rafraichissement du cache | ||
| * @return array tableau contenant les clés 'branchs' et 'tags' | ||
| */ |
There was a problem hiding this comment.
commentaire à mettre en anglais + respect du format PHPDoc
| * @param bool $_refresh force le rafraichissement du cache | ||
| * @return array tableau contenant les clés 'branchs' et 'tags' | ||
| */ | ||
| public static function getCoreBranchList($_refresh = false) { |
There was a problem hiding this comment.
je suggère de typer les arguments de fonctions dorénavant => ici bool
| * Vérifie que la branche (ou le tag) configurée pour le core existe toujours sur le dépôt. | ||
| * Retourne true si la validité ne peut être déterminée (fournisseur custom, branche stable, ou liste distante indisponible). | ||
| * @return bool | ||
| */ |
There was a problem hiding this comment.
commentaire à mettre en anglais + respect du format PHPDoc
| return true; | ||
| } | ||
| $branch = config::byKey('core::branch', 'core', 'master'); | ||
| if (in_array($branch, array('master', 'release', 'stable'))) { |
There was a problem hiding this comment.
ca n'existe pas "stable"
There was a problem hiding this comment.
et faut-il vraiment faire un cas particulier?
la branche master ou release pourrait être vérifiée comme toutes les autres plus bas ainsi si un jour ca change on ne doit pas revenir sur ce code
| 'state' => $state, | ||
| 'result' => ($state) ? $branch : $branch . ' (' . __('introuvable', __FILE__) . ')', | ||
| 'comment' => ($state) ? '' : __("La branche configurée pour le core n'existe plus sur le dépôt. Allez dans Réglages -> Système -> Mises à jour / Réinitialisation pour sélectionner une branche valide.", __FILE__), | ||
| 'key' => 'core::branch' |
There was a problem hiding this comment.
c'est voulu d'avoir "::" ? jusqu'ici aucune clé n'avait ce format dans cette fonction
| if (self::isCoreBranchValid()) { | ||
| message::removeAll('core', 'core::branch::invalid'); | ||
| } else { | ||
| message::add('core', __("La branche configurée pour le core n'existe plus sur le dépôt. Allez dans Réglages -> Système -> Mises à jour / Réinitialisation pour sélectionner une branche valide.", __FILE__), '', 'core::branch::invalid'); |
There was a problem hiding this comment.
message dupliqué de la fonction "health" dans jeedom.class.php; peut-être qu'on peut améliorer ca?
| if (self::isCoreBranchValid()) { | ||
| message::removeAll('core', 'core::branch::invalid'); | ||
| } else { | ||
| message::add('core', __("La branche configurée pour le core n'existe plus sur le dépôt. Allez dans Réglages -> Système -> Mises à jour / Réinitialisation pour sélectionner une branche valide.", __FILE__), '', 'core::branch::invalid'); |
There was a problem hiding this comment.
la fonction "Réinitialisation" est toujours un mystère
- translate the new PHPDoc blocks to English and fix their format
- type-hint getCoreBranchList(bool $_refresh)
- drop the master/release/stable special case and validate every branch
against the remote list ('stable' was not a real branch anyway)
- deduplicate the user message via update::getCoreBranchInvalidMessage(),
reused by jeedom::health() and update::checkUpdate()
- fix the message: point to Settings -> System -> Mises a jour/Market
- rename the health key core::branch -> coreBranch for consistency
|
Merci pour la relecture @Mips2648 👍 Points traités dans le dernier commit :
Generated by Claude Code |
Résumé
Vérifie que la branche (ou le tag) configurée pour le core via
core::branchexiste toujours sur le dépôt, et alerte l'utilisateur si elle a disparu — par exemple après la suppression d'une branche de test sélectionnée précédemment.Changements
update::getCoreBranchList(): extraction de la logique de récupération des branches/tags (+ cache 24 h) qui était dupliquée inline dansadministration.php. Aucune logique modifiée, simplement rendue réutilisable.update::isCoreBranchValid(): valide que la branche/tag configuré figure dans la liste distante. Pour éviter les faux positifs, renvoietruelorsque la validité ne peut être déterminée : fournisseur personnalisé, branche stable connue (master/release/stable), ou liste distante indisponible (réseau KO).jeedom::health()),update::checkUpdate()(retiré automatiquement dès que la branche redevient valide).administration.php: remplacement du bloc inline par l'appel àupdate::getCoreBranchList(). Le bouton de rafraîchissement (bt_refreshListBranch) continue de fonctionner : il vide le cache puis recharge, et la liste est re-récupérée à la volée.Closes #3166
Generated by Claude Code