aboutsummaryrefslogtreecommitdiffstats
path: root/sb_builder
diff options
context:
space:
mode:
Diffstat (limited to 'sb_builder')
-rw-r--r--sb_builder/repository.py18
1 files changed, 12 insertions, 6 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()