diff --git a/completion.py b/completion.py index 8cd7959a8..9ee3dcb41 100644 --- a/completion.py +++ b/completion.py @@ -2,6 +2,7 @@ from functools import cache from pathlib import Path from tempfile import TemporaryDirectory +from typing import Literal import git from potodo import potodo @@ -18,7 +19,9 @@ def branches_from_devguide(devguide_dir: Path) -> list[str]: ] -def get_completion(clones_dir: str, repo: str) -> tuple[float, int]: +def get_completion( + clones_dir: str, repo: str +) -> tuple[float, int, str | Literal[False]]: clone_path = Path(clones_dir, repo) for branch in branches_from_devguide(Path(clones_dir, 'devguide')) + ['master']: try: @@ -28,9 +31,11 @@ def get_completion(clones_dir: str, repo: str) -> tuple[float, int]: except git.GitCommandError: print(f'failed to clone {repo} {branch}') translators_number = 0 + translators_link: str | Literal[False] = False continue else: translators_number = translators.get_number(clone_path) + translators_link = translators.get_link(clone_path, repo, branch) break with TemporaryDirectory() as tmpdir: completion = potodo.merge_and_scan_path( @@ -40,4 +45,4 @@ def get_completion(clones_dir: str, repo: str) -> tuple[float, int]: hide_reserved=False, api_url='', ).completion - return completion, translators_number + return completion, translators_number, translators_link diff --git a/generate.py b/generate.py index f273e7489..730b9050b 100644 --- a/generate.py +++ b/generate.py @@ -13,7 +13,7 @@ from datetime import datetime, timezone from pathlib import Path from tempfile import TemporaryDirectory -from typing import cast +from typing import Literal, cast from git import Repo from jinja2 import Template @@ -27,7 +27,7 @@ def get_completion_progress() -> ( - Iterator[tuple[str, str, float, int, int, bool, bool | None]] + Iterator[tuple[str, str, float, int, str | Literal[False], int, bool, bool | None]] ): with TemporaryDirectory() as clones_dir: Repo.clone_from( @@ -53,11 +53,20 @@ def get_completion_progress() -> ( built = lang in languages_built in_switcher = languages_built.get(lang) if not repo: - yield lang, cast(str, repo), 0.0, 0, 0, built, in_switcher + yield lang, cast(str, repo), 0.0, 0, False, 0, built, in_switcher continue - completion, translators = get_completion(clones_dir, repo) + completion, translators, translators_link = get_completion(clones_dir, repo) visitors_num = visitors.get_number_of_visitors(lang) if built else 0 - yield lang, repo, completion, translators, visitors_num, built, in_switcher + yield ( + lang, + repo, + completion, + translators, + translators_link, + visitors_num, + built, + in_switcher, + ) if __name__ == '__main__': diff --git a/template.html.jinja b/template.html.jinja index 91a0c176d..0ef469911 100644 --- a/template.html.jinja +++ b/template.html.jinja @@ -16,7 +16,7 @@
-{% for language, repo, completion, translators, visitors, build, in_switcher in completion_progress | sort(attribute='2,3') | reverse %} +{% for language, repo, completion, translators, translators_link, visitors, build, in_switcher in completion_progress | sort(attribute='2,3') | reverse %}