source: poinstaller/trunk/fuentes/dh_poinstaller @ 6360

Last change on this file since 6360 was 6360, checked in by kbut, 3 years ago

sync from github

  • Property svn:executable set to *
File size: 2.7 KB
Line 
1#!/usr/bin/python3
2import os
3import re
4from edupals.i18n.poinstaller import PoInstaller
5
6class 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
23class 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       
61def 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
75if __name__ == '__main__':
76    main()
Note: See TracBrowser for help on using the repository browser.