From fed527be4b15c8897f5fb06ae2197989ed5e5103 Mon Sep 17 00:00:00 2001 From: Jon Michael Aanes Date: Mon, 3 Jun 2024 23:13:16 +0200 Subject: [PATCH] Working on multi-repo --- git_time_tracker/__init__.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/git_time_tracker/__init__.py b/git_time_tracker/__init__.py index 96ca511..c9daf55 100644 --- a/git_time_tracker/__init__.py +++ b/git_time_tracker/__init__.py @@ -4,13 +4,14 @@ import dataclasses import git import datetime from collections.abc import Iterator, Sequence +from pathlib import Path def parse_arguments(): parser = argparse.ArgumentParser() - parser.add_argument("repo") + parser.add_argument('repositories', action='extend', nargs='+', type=Path) return parser.parse_args() -@dataclasses.dataclass +@dataclasses.dataclass(frozen=True) class WorkSample: registered_at: datetime.datetime labels: Sequence[str] @@ -20,18 +21,19 @@ def get_samples_from_project(repo: git.Repo) -> Iterator[WorkSample]: labels = [] labels.append('project:git_time_tracker') - for commit in repo.iter_commits('main'): - assert commit.authored_date == commit.committed_date, 'Not yet supported' + print(repo.remotes.origin.repo) - committed_at = datetime.datetime.fromtimestamp(commit.authored_date, tz=datetime.UTC) - yield WorkSample(committed_at, tuple(labels)) + # TODO: Branch on main or master or default + for commit in repo.iter_commits('main'): + yield WorkSample(datetime.datetime.fromtimestamp(commit.authored_date, tz=datetime.UTC), tuple(labels)) + yield WorkSample(datetime.datetime.fromtimestamp(commit.committed_date, tz=datetime.UTC), tuple(labels)) def main(): args = parse_arguments() - repo = git.Repo(args.repo) - print(repo) + shared_time_stamps: set[WorkSample] = set() + for repo_path in args.repositories: + repo = git.Repo(repo_path) + shared_time_stamps |= set(get_samples_from_project(repo)) + print('derp', shared_time_stamps) - # TODO: Branch on main or master or default - - print(list(get_samples_from_project(repo)))