1 | #!/usr/bin/python3 |
---|
2 | import os |
---|
3 | import re |
---|
4 | from edupals.i18n.poinstaller import PoInstaller |
---|
5 | |
---|
6 | class ControlParser(): |
---|
7 | def __init__(self): |
---|
8 | try: |
---|
9 | fp = open('debian/control', 'r', encoding='utf-8') |
---|
10 | except IOError: |
---|
11 | raise Exception('cannot find debian/control file') |
---|
12 | self.lines = fp.readlines() |
---|
13 | self.packages = {} |
---|
14 | self.source_name = None |
---|
15 | |
---|
16 | def load_info(self): |
---|
17 | for line in self.lines: |
---|
18 | if line.lower().startswith('package:'): |
---|
19 | self.packages[line[8:].strip()] = {} |
---|
20 | elif line.lower().startswith('source:'): |
---|
21 | self.source_name = line[7:].strip() |
---|
22 | |
---|
23 | class DHelper(): |
---|
24 | def __init__(self): |
---|
25 | self.debian_po_dest = "pofiles" |
---|
26 | self.default_path = "lliurex-po" |
---|
27 | |
---|
28 | def check_dest(self, packages, source_name): |
---|
29 | if os.path.exists(os.path.join('debian',self.debian_po_dest)): |
---|
30 | packages[source_name]['i18n'] = [] |
---|
31 | if source_name in packages.keys(): |
---|
32 | packages[source_name]['pofiles'] = os.path.join('debian',self.debian_po_dest) |
---|
33 | else: |
---|
34 | packages[source_name]['pofiles'] = None |
---|
35 | |
---|
36 | for pkg in packages.keys(): |
---|
37 | packages[pkg]['i18n'] = [] |
---|
38 | if os.path.exists(os.path.join('debian',pkg + "." + self.debian_po_dest)): |
---|
39 | packages[pkg]['pofiles'] = os.path.join('debian',pkg + "." + self.debian_po_dest) |
---|
40 | elif 'pofiles' not in packages[pkg].keys(): |
---|
41 | packages[pkg]['pofiles'] = None |
---|
42 | |
---|
43 | return packages |
---|
44 | |
---|
45 | def get_po_orig(self, packages): |
---|
46 | reg = re.compile("([\w-]+)\s+(.*)") |
---|
47 | for pkg in packages.keys(): |
---|
48 | if 'pofiles' in packages[pkg].keys() and packages[pkg]['pofiles'] is not None: |
---|
49 | with open(packages[pkg]['pofiles'], 'r', encoding='utf-8') as fd: |
---|
50 | for line in fd: |
---|
51 | data = reg.match(line) |
---|
52 | if data is not None: |
---|
53 | aux = {} |
---|
54 | aux['textdomain'] = data.group(1) |
---|
55 | aux['po_folder'] = data.group(2) |
---|
56 | packages[pkg]['i18n'].append(aux) |
---|
57 | return packages |
---|
58 | |
---|
59 | |
---|
60 | |
---|
61 | def main(): |
---|
62 | control = ControlParser() |
---|
63 | dhelper = DHelper() |
---|
64 | control.load_info() |
---|
65 | pkg_info = dhelper.check_dest(control.packages, control.source_name) |
---|
66 | # dhelper.check_default_path(pkg_info) |
---|
67 | dhelper.get_po_orig(pkg_info) |
---|
68 | for x in pkg_info.keys(): |
---|
69 | for i18n_info in pkg_info[x]['i18n']: |
---|
70 | po_installer = PoInstaller(i18n_info['po_folder'],i18n_info['textdomain'],os.path.join('debian',x,'usr')) |
---|
71 | po_installer.build() |
---|
72 | po_installer.install() |
---|
73 | |
---|
74 | |
---|
75 | if __name__ == '__main__': |
---|
76 | main() |
---|