-
-
Notifications
You must be signed in to change notification settings - Fork 18
/
setup.py
executable file
·51 lines (37 loc) · 1.35 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env python3
# Copyright © Michal Čihař <[email protected]>
#
# SPDX-License-Identifier: MIT
import os
from distutils.command.build import build
from distutils.core import Command
from setuptools import modified
from glob import glob
from itertools import chain
from setuptools import setup
from translate.tools.pocompile import convertmo
LOCALE_MASKS = [
"weblate_language_data/locale/*/LC_MESSAGES/*.po",
]
class BuildMo(Command):
description = "update MO files to match PO"
user_options = []
def initialize_options(self):
self.build_base = None
def finalize_options(self):
self.set_undefined_options("build", ("build_base", "build_base"))
def run(self):
for name in chain.from_iterable(glob(mask) for mask in LOCALE_MASKS):
output = os.path.splitext(name)[0] + ".mo"
if not modified.newer(name, output):
continue
print(f"compiling {name} -> {output}")
with open(name, "rb") as pofile, open(output, "wb") as mofile:
convertmo(pofile, mofile, None)
class WeblateBuild(build):
"""Override the default build with new subcommands."""
# The build_mo has to be before build_data
sub_commands = [("build_mo", lambda self: True), *build.sub_commands]
setup(
cmdclass={"build_mo": BuildMo, "build": WeblateBuild},
)