8
8
# "docutils",
9
9
# ]
10
10
# ///
11
+ import json
12
+ import logging
11
13
import subprocess
12
14
from collections .abc import Iterator
13
- from dataclasses import dataclass
15
+ from dataclasses import dataclass , asdict
14
16
from datetime import datetime , timezone
15
- from logging import info
16
17
from pathlib import Path
17
18
from tempfile import TemporaryDirectory
18
19
@@ -49,7 +50,7 @@ def get_completion_progress() -> Iterator['LanguageProjectData']:
49
50
for language , repo in get_languages_and_repos (devguide_dir ):
50
51
built = language .code in languages_built
51
52
if repo :
52
- completion , translators_data = get_completion (clones_dir , repo )
53
+ completion , translators_data , branch = get_completion (clones_dir , repo )
53
54
visitors_num = (
54
55
get_number_of_visitors (language .code , session ) if built else 0
55
56
)
@@ -60,6 +61,7 @@ def get_completion_progress() -> Iterator['LanguageProjectData']:
60
61
yield LanguageProjectData (
61
62
language ,
62
63
repo ,
64
+ branch ,
63
65
completion ,
64
66
translators_data ,
65
67
visitors_num ,
@@ -74,6 +76,7 @@ def get_completion_progress() -> Iterator['LanguageProjectData']:
74
76
class LanguageProjectData :
75
77
language : Language
76
78
repository : str | None
79
+ branch : str
77
80
completion : float
78
81
translators : TranslatorsData
79
82
visitors : int
@@ -84,13 +87,17 @@ class LanguageProjectData:
84
87
85
88
86
89
if __name__ == '__main__' :
87
- info (f'starting at { generation_time } ' )
90
+ logging .basicConfig (level = logging .INFO )
91
+ logging .info (f'starting at { generation_time } ' )
88
92
template = Template (Path ('template.html.jinja' ).read_text ())
89
93
90
94
output = template .render (
91
- completion_progress = list (get_completion_progress ()),
95
+ completion_progress = ( completion_progress := list (get_completion_progress () )),
92
96
generation_time = generation_time ,
93
97
duration = (datetime .now (timezone .utc ) - generation_time ).seconds ,
94
98
)
95
99
96
100
Path ('index.html' ).write_text (output )
101
+ Path ('index.json' ).write_text (
102
+ json .dumps (completion_progress , indent = 2 , default = asdict )
103
+ )
0 commit comments