summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--repo/www/Makefile2
-rwxr-xr-xrepo/www/make-deps.py49
2 files changed, 17 insertions, 34 deletions
diff --git a/repo/www/Makefile b/repo/www/Makefile
index ca50752..8f5bb2a 100644
--- a/repo/www/Makefile
+++ b/repo/www/Makefile
@@ -16,7 +16,7 @@ dependencies = deps.mk
include $(dependencies)
$(dependencies): make-deps.py $(text_folders)
- python3 $< "$(TEXT_FILES)" $(TOP_DIR) $(OUT_DIR)
+ python3 $< "$(TEXT_FILES)" $(OUT_DIR)
site: $(pages)
diff --git a/repo/www/make-deps.py b/repo/www/make-deps.py
index 189ccfd..c2a88e1 100755
--- a/repo/www/make-deps.py
+++ b/repo/www/make-deps.py
@@ -20,10 +20,11 @@ We want to compute:
from collections import defaultdict
from dataclasses import dataclass, field
from os import path
-from subprocess import run
from sys import argv, exit
from typing import List, Set
+from git import Repo
+
@dataclass
class Directory:
@@ -32,45 +33,23 @@ class Directory:
def parse_arguments(args):
- if len(args) != 4:
- exit(f'Usage: {argv[0]} EXTENSIONS TOP-DIR OUTPUT-DIR')
-
- return argv[1].split(), argv[2], argv[3]
-
-
-def join(collections, joiner):
- out = []
-
- for c in collections[:-1]:
- out.extend(c)
- out.append(joiner)
+ if len(args) != 3:
+ exit(f'Usage: {argv[0]} EXTENSIONS OUTPUT-DIR')
- out.extend(collections[-1])
- return tuple(out)
+ return argv[1].split(), argv[2]
-def find_sources(extensions, top_dir):
- filters = tuple(('-name', '*.'+ext) for ext in extensions)
-
- p = run(
- # TODO: use git ls-files
- ('find', top_dir) + join(filters, '-o'),
- capture_output=True, check=True, text=True
- )
-
- return p.stdout.splitlines()
+def find_sources(extensions, repository):
+ patterns = (f'**.{ext}' for ext in extensions)
+ zero = '\x00'
+ return repository.git.ls_files('-z', *patterns).strip(zero).split(zero)
def compute_directories(files, top_dir):
directories = defaultdict(Directory)
for f in files:
- fpath, fname = path.split(f)
- fdir = (
- path.relpath(fpath, top_dir)
- if fpath != top_dir
- else ''
- )
+ fdir, fname = path.split(f)
directories[fdir].files.append(fname)
@@ -108,8 +87,12 @@ def write_dependencies(deps, directories, top_dir, out_dir):
def main(arguments):
- extensions, top_dir, out_dir = parse_arguments(arguments)
- source_files = find_sources(extensions, top_dir)
+ extensions, out_dir = parse_arguments(arguments)
+
+ repository = Repo(search_parent_directories=True)
+ top_dir = repository.working_dir
+
+ source_files = find_sources(extensions, repository)
directories = compute_directories(source_files, top_dir)