From 03a160b7bff5db7bbc55df8885069ebc39d80aa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Tue, 13 Aug 2024 09:11:50 +0200 Subject: [PATCH] save_added_date: use get_apps_repo --- tools/save_added_date.py | 44 +++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/tools/save_added_date.py b/tools/save_added_date.py index f31c8331..caa0e24e 100755 --- a/tools/save_added_date.py +++ b/tools/save_added_date.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +import argparse import tomlkit import json from datetime import datetime @@ -7,6 +8,7 @@ from git import Repo, Commit from pathlib import Path import logging from typing import TYPE_CHECKING, Callable +import appslib.get_apps_repo as get_apps_repo if TYPE_CHECKING: REPO_APPS_ROOT = Path() @@ -14,9 +16,7 @@ else: from appslib.utils import REPO_APPS_ROOT -def git_bisect(repo_path: Path, is_newer: Callable[[Commit], bool]) -> Commit | None: - repo = Repo(repo_path) - +def git_bisect(repo: Repo, is_newer: Callable[[Commit], bool]) -> Commit | None: # Start with whole repo first_commit = repo.git.rev_list("HEAD", reverse=True, max_parents=0) repo.git.bisect("reset") @@ -69,19 +69,19 @@ def app_is_deprecated(commit: Commit, name: str) -> bool: return "deprecated-software" in antifeatures -def date_added(name: str) -> int | None: - result = git_bisect(REPO_APPS_ROOT, lambda x: app_is_present(x, name)) +def date_added(repo: Repo, name: str) -> int | None: + result = git_bisect(repo, lambda x: app_is_present(x, name)) print(result) return None if result is None else result.committed_date -def date_deprecated(name: str) -> int | None: - result = git_bisect(REPO_APPS_ROOT, lambda x: app_is_deprecated(x, name)) +def date_deprecated(repo: Repo, name: str) -> int | None: + result = git_bisect(repo, lambda x: app_is_deprecated(x, name)) print(result) return None if result is None else result.committed_date -def add_deprecation_dates(file: Path) -> None: +def add_deprecation_dates(repo: Repo, file: Path) -> None: key = "deprecated_date" document = tomlkit.load(file.open("r", encoding="utf-8")) for app, info in document.items(): @@ -89,7 +89,7 @@ def add_deprecation_dates(file: Path) -> None: continue if "deprecated-software" not in info.get("antifeatures", []): continue - date = date_deprecated(app) + date = date_deprecated(repo, app) if date is None: continue info[key] = date @@ -98,10 +98,9 @@ def add_deprecation_dates(file: Path) -> None: tomlkit.dump(document, file.open("w")) -def date_added_to(match: str, file: Path) -> int | None: +def date_added_to(repo: Repo, match: str, file: Path) -> int | None: commits = ( - Repo(REPO_APPS_ROOT) - .git.log( + repo.git.log( "-S", match, "--first-parent", @@ -120,12 +119,12 @@ def date_added_to(match: str, file: Path) -> int | None: return int(first_commit) -def add_apparition_dates(file: Path, key: str) -> None: +def add_apparition_dates(repo: Repo, file: Path, key: str) -> None: document = tomlkit.load(file.open("r", encoding="utf-8")) for app, info in document.items(): if key in info.keys(): continue - date = date_added_to(f"[{app}]", file) + date = date_added_to(repo, f"[{app}]", file) assert date is not None info[key] = date info[key].comment(datetime.fromtimestamp(info[key]).strftime("%Y/%m/%d")) @@ -134,14 +133,21 @@ def add_apparition_dates(file: Path, key: str) -> None: def main() -> None: + parser = argparse.ArgumentParser() + get_apps_repo.add_args(parser, allow_temp=False) + args = parser.parse_args() + logging.basicConfig(level=logging.DEBUG) - add_apparition_dates(REPO_APPS_ROOT / "apps.toml", key="added_date") - add_apparition_dates(REPO_APPS_ROOT / "wishlist.toml", key="added_date") - add_apparition_dates(REPO_APPS_ROOT / "graveyard.toml", key="killed_date") + apps_repo_dir = get_apps_repo.from_args(args) + apps_repo = Repo(apps_repo_dir) - add_deprecation_dates(REPO_APPS_ROOT / "apps.toml") - add_deprecation_dates(REPO_APPS_ROOT / "graveyard.toml") + add_apparition_dates(apps_repo, apps_repo_dir / "apps.toml", key="added_date") + add_apparition_dates(apps_repo, apps_repo_dir / "wishlist.toml", key="added_date") + add_apparition_dates(apps_repo, apps_repo_dir / "graveyard.toml", key="killed_date") + + add_deprecation_dates(apps_repo, apps_repo_dir / "apps.toml") + add_deprecation_dates(apps_repo, apps_repo_dir / "graveyard.toml") if __name__ == "__main__":