import os from collections import Counter from functools import lru_cache from pathlib import Path from subprocess import check_output @lru_cache() def _counter(commit: str, unique: bool) -> Counter: check_output(["git", "checkout", commit], text=True) if unique: all_lines = set() else: all_lines = Counter() for path in Path(os.getenv("SRCDIR", "src")).rglob(os.getenv("SRCPATTERN", "*.rs")): lines = path.read_bytes().splitlines() lines = (line.strip() for line in lines) lines = (line for line in lines if line) all_lines.update(lines) if isinstance(all_lines, set): return Counter(all_lines) else: return all_lines def counter(commit: str, unique: bool) -> Counter: return _counter(commit, unique)