diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-21 10:00:55 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-21 10:00:55 +0200 |
| commit | 1af9f9022d22c6b11a1457f46aefc0828820d36b (patch) | |
| tree | 2121a2598d09b2e240d1eb368ede60efdd70a5e4 | |
| parent | 84f9e0cbbdc83953011ab6a23788d71561c7c7ed (diff) | |
| download | sb-builder-1af9f9022d22c6b11a1457f46aefc0828820d36b.tar.gz sb-builder-1af9f9022d22c6b11a1457f46aefc0828820d36b.zip | |
Repository: wrapped ChangeLog items, drop overtaken reloads
gen_repos_files puts a long package path alone on an indented line, its
text on the next: 78 of 546 packages showed no ChangeLog. A Refresh
overtaken by a later one no longer overwrites the newer scan.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
| -rw-r--r-- | sb_builder/repository.py | 18 | ||||
| -rw-r--r-- | tests/test_gui.py | 3 |
2 files changed, 14 insertions, 7 deletions
diff --git a/sb_builder/repository.py b/sb_builder/repository.py index 3cead0d..29f4291 100644 --- a/sb_builder/repository.py +++ b/sb_builder/repository.py @@ -32,7 +32,8 @@ from .packages import OVERLAYS, table from .ui import SP, action, chip, group_label, search_field PKGFILE = re.compile(r"^(?P<name>.+)-(?P<version>[^-]+)-(?P<arch>[^-]+)-(?P<build>[^-]+)\.t[gx]z$") -ITEM = re.compile(r"^([^/\s]+/[^/\s]+)/[^/\s]+\.t[gx]z:\s*(.*)$") # category/pkg/file: text +# category/pkg/file: text; a long one is indented, its text on the next line +ITEM = re.compile(r"^\s*([^/\s]+/[^/\s]+)/[^/\s]+\.t[gx]z:\s*(.*)$") MONTHS = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split() @@ -91,7 +92,7 @@ def changelog(text): out.setdefault(m.group(1), []).append((when, parts)) elif parts is not None and line.startswith(" ") and line.strip(): parts.append(line.strip()) - return {k: [(t, " ".join(p)) for t, p in v] for k, v in out.items()} + return {k: [(t, " ".join(p).strip()) for t, p in v] for k, v in out.items()} def scan(path): @@ -203,7 +204,7 @@ def detail_html(r): class RepositoryTab(QWidget): packages_requested = pyqtSignal(str) # package to show in the Packages tab - scanned = pyqtSignal(object, str) # scan() result or None, error; from the loader thread + scanned = pyqtSignal(int, object, str) # reload number, scan() or None, error; from the thread def __init__(self, cfg, parent=None): super().__init__(parent) @@ -258,6 +259,7 @@ class RepositoryTab(QWidget): self.actions = [] # nothing to change here: Publish lives in Packages self.view_actions = [action(self, "Refresh", "view-refresh", SP.SP_BrowserReload, self.reload)] self.loaded = False + self.generation = 0 self.stats = QLabel(wordWrap=True) self.count = QLabel() @@ -275,15 +277,19 @@ class RepositoryTab(QWidget): self.loaded = True self.stats.setText("loading…") path = self.cfg["repository"]["path"] + self.generation += 1 + gen = self.generation def work(): try: - self.scanned.emit(scan(path), "") + self.scanned.emit(gen, scan(path), "") except OSError as e: - self.scanned.emit(None, str(e)) + self.scanned.emit(gen, None, str(e)) threading.Thread(target=work, daemon=True).start() - def _loaded(self, data, err): + def _loaded(self, gen, data, err): + if gen != self.generation: + return # an older Refresh, overtaken self.model.set_rows(data["rows"] if data else []) self.stats.setText(err or summary(data)) self.update_count() diff --git a/tests/test_gui.py b/tests/test_gui.py index 73146c1..7d0b7dd 100644 --- a/tests/test_gui.py +++ b/tests/test_gui.py @@ -336,7 +336,8 @@ CHANGELOG = """+--------------------------+ Tue Oct 20 18:00:50 UTC 2026 personal/foo/foo-1.0-x86_64-2_tag.txz: Updated for version 1.0. -libraries/bar-baz/bar-baz-2.1-x86_64-1_tag.txz: Added. + libraries/bar-baz/bar-baz-2.1-x86_64-1_tag.txz: + Added. +--------------------------+ |
