radn-dev/xmetrics/common.py
2023-08-02 02:54:34 +00:00

28 lines
799 B
Python

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)