fix(cache): purge cache only once at startup, not on every write
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s

- Add clear_cache() called once in on_mount
- ensure_cache_dir() no longer deletes existing files
- This fixes the issue where only the last target's cache survived
- Add widget.refresh() calls to force UI updates
This commit is contained in:
enzo 2026-05-13 02:00:48 +02:00
parent 8f623e1df6
commit f4db16327f
3 changed files with 16 additions and 3 deletions

View file

@ -6,7 +6,7 @@ from textual.containers import Horizontal, Vertical
from textual.reactive import reactive
from textual import work
from full_updater.backend.cache import ensure_cache_dir, read_cache, get_cache_timestamp
from full_updater.backend.cache import clear_cache, ensure_cache_dir, read_cache, get_cache_timestamp
from full_updater.backend.scanner import (
Target, ScanResult, get_lxc_list, lxc_is_running,
ensure_debsecan_installed, scan_apt, scan_cve, write_cache, scan_target
@ -46,6 +46,7 @@ class FullUpdaterApp(App):
yield SummaryPanel()
def on_mount(self):
clear_cache()
ensure_cache_dir()
self.targets = [Target(target_id="host", name="hote", is_host=True)] + get_lxc_list()
sidebar = self.query_one(Sidebar)
@ -93,6 +94,7 @@ class FullUpdaterApp(App):
result.error,
result.status == "skipped"
)
sidebar.refresh()
def _finish_scan(self):
self.pop_screen()
@ -109,7 +111,7 @@ class FullUpdaterApp(App):
)
sidebar.refresh()
if self.targets:
self.set_timer(0.1, lambda: self._select_target(self.targets[0].target_id))
self.set_timer(0.2, lambda: self._select_target(self.targets[0].target_id))
def _select_target(self, target_id: str):
self.selected_target = target_id
@ -130,6 +132,7 @@ class FullUpdaterApp(App):
skipped=not data and any(t.target_id == target_id and not t.is_host and not lxc_is_running(t.target_id) for t in self.targets),
cache_time=get_cache_timestamp(cache_id)
)
summary.refresh()
def on_sidebar_target_selected(self, event: Sidebar.TargetSelected):
self._select_target(event.target_id)

View file

@ -7,9 +7,12 @@ from typing import Any
CACHE_DIR = "/tmp/full-updater-cache"
def ensure_cache_dir() -> None:
def clear_cache() -> None:
if os.path.exists(CACHE_DIR):
shutil.rmtree(CACHE_DIR)
def ensure_cache_dir() -> None:
os.makedirs(CACHE_DIR, exist_ok=True)

View file

@ -104,6 +104,13 @@ class SummaryPanel(Vertical):
apt_btn.disabled = apt_count == 0
cve_btn.disabled = cve_count == 0
# Forcer le refresh de tous les widgets modifiés
apt_btn.refresh()
cve_btn.refresh()
err_label.refresh()
btn.refresh()
cache_label.refresh()
def on_button_pressed(self, event: Button.Pressed):
if event.button.id == "btn-reload":
self.post_message(self.ReloadPressed())