summaryrefslogtreecommitdiff
path: root/repo/www/helpers.py
diff options
context:
space:
mode:
authorKévin Le Gouguec <kevin.legouguec@gmail.com>2020-04-12 23:06:07 +0200
committerKévin Le Gouguec <kevin.legouguec@gmail.com>2020-04-12 23:06:07 +0200
commit12e18454ba07c3b7747f8b868f6830f05de149c4 (patch)
tree317c3f700b9d088cf30466a197ffc512d12fc183 /repo/www/helpers.py
parent629664bd50ed4e72cffc33bf2e7082119d483469 (diff)
downloadmemory-leaks-12e18454ba07c3b7747f8b868f6830f05de149c4.tar.xz
Add intermediate step to cache site tree
Seems kind of wasteful to recompute it every time. Also, now subsequent scripts don't have to care about file extensions anymore.
Diffstat (limited to 'repo/www/helpers.py')
-rw-r--r--repo/www/helpers.py22
1 files changed, 19 insertions, 3 deletions
diff --git a/repo/www/helpers.py b/repo/www/helpers.py
index 80115b7..6dc5bad 100644
--- a/repo/www/helpers.py
+++ b/repo/www/helpers.py
@@ -1,13 +1,23 @@
from collections import defaultdict
from dataclasses import dataclass, field
from os import path
-from typing import List, Set
+from typing import Iterator
@dataclass
class Directory:
- files: List[str] = field(default_factory=list)
- subfolders: Set[str] = field(default_factory=set)
+ files: Iterator[str] = field(default_factory=list)
+ subfolders: Iterator[str] = field(default_factory=set)
+
+ def serialize(self):
+ return {
+ 'files': sorted(self.files),
+ 'subfolders': sorted(self.subfolders)
+ }
+
+ @classmethod
+ def deserialize(cls, d):
+ return cls(**d)
def _find_files(extensions, repository):
@@ -36,3 +46,9 @@ def compute_directories(extensions, repository):
files = _find_files(extensions, repository)
top_dir = path.relpath(repository.working_dir, path.curdir)
return _fill_directories(files, top_dir)
+
+
+def deserialize_directories(directories):
+ return {
+ k: Directory.deserialize(v) for k, v in directories.items()
+ }