From 60791a6dee5e15c2455b1b1e4026f54f3ad89693 Mon Sep 17 00:00:00 2001 From: Maciej Olko Date: Tue, 14 Jan 2025 01:37:39 +0100 Subject: [PATCH] Add link to TRANSLATORS files --- completion.py | 9 +++++++-- generate.py | 19 ++++++++++++++----- template.html.jinja | 10 +++++++--- translators.py | 8 ++++++++ 4 files changed, 36 insertions(+), 10 deletions(-) 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 %} {% if repo %} @@ -40,10 +40,14 @@ {{ '{:,}'.format(visitors) }} {% else %} - 0 + {{ '{:,}'.format(visitors) }} {% endif %} - {{ translators }} + + {% if translators_link %}{% endif %} + {{ translators }} + {% if translators_link %}{% endif %} +
{{ completion | round(2) }}%
diff --git a/translators.py b/translators.py index 79fa57f35..85715e71d 100644 --- a/translators.py +++ b/translators.py @@ -1,5 +1,6 @@ from collections.abc import Iterator from pathlib import Path +from typing import Literal from git import Repo from polib import pofile @@ -30,3 +31,10 @@ def yield_from_headers(path: Path) -> Iterator[str]: yield translator_record else: yield translator + + +def get_link(clone_path: Path, repo: str, branch: str) -> str | Literal[False]: + return ( + clone_path.joinpath('TRANSLATORS').exists() + and f'https://github.com/{repo}/blob/{branch}/TRANSLATORS' + )