23 lines
744 B
Python
23 lines
744 B
Python
import re
|
|
from config import PACKAGES_RESTART_REQUIRED, PACKAGES_SERVICE_RESTART, PACKAGES_RESTART_PATTERNS
|
|
|
|
|
|
def needs_restart(name: str) -> bool:
|
|
if name in PACKAGES_RESTART_REQUIRED:
|
|
return True
|
|
if name in PACKAGES_SERVICE_RESTART:
|
|
return True
|
|
return any(re.match(p, name) for p in PACKAGES_RESTART_PATTERNS)
|
|
|
|
|
|
def classify(packages) -> tuple[list, list]:
|
|
"""Retourne (sûrs, reportés).
|
|
|
|
sûrs : installables immédiatement, sans aucun redémarrage
|
|
reportés: nécessitent un redémarrage service ou système → installation à l'extinction
|
|
"""
|
|
safe, deferred = [], []
|
|
for pkg in packages:
|
|
(deferred if needs_restart(pkg.name) else safe).append(pkg)
|
|
return safe, deferred
|