OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # ***** BEGIN LICENSE BLOCK ***** | 2 # ***** BEGIN LICENSE BLOCK ***** |
3 # This Source Code Form is subject to the terms of the Mozilla Public | 3 # This Source Code Form is subject to the terms of the Mozilla Public |
4 # License, v. 2.0. If a copy of the MPL was not distributed with this file, | 4 # License, v. 2.0. If a copy of the MPL was not distributed with this file, |
5 # You can obtain one at http://mozilla.org/MPL/2.0/. | 5 # You can obtain one at http://mozilla.org/MPL/2.0/. |
6 # ***** END LICENSE BLOCK ***** | 6 # ***** END LICENSE BLOCK ***** |
7 """Localization. | 7 """Localization. |
8 """ | 8 """ |
9 | 9 |
10 import os | 10 import os |
11 from urlparse import urljoin | 11 from urlparse import urljoin |
12 import sys | 12 import sys |
13 from copy import deepcopy | 13 from copy import deepcopy |
14 | 14 |
15 sys.path.insert(1, os.path.dirname(sys.path[0])) | 15 sys.path.insert(1, os.path.dirname(sys.path[0])) |
16 | 16 |
| 17 # Added import. See https://issues.adblockplus.org/ticket/5579 |
| 18 from mozharness.base.config import download_config_file |
17 from mozharness.base.config import parse_config_file | 19 from mozharness.base.config import parse_config_file |
18 from mozharness.base.errors import PythonErrorList | 20 from mozharness.base.errors import PythonErrorList |
19 from mozharness.base.parallel import ChunkingMixin | 21 from mozharness.base.parallel import ChunkingMixin |
20 | 22 |
21 | 23 |
22 # LocalesMixin {{{1 | 24 # LocalesMixin {{{1 |
23 class LocalesMixin(ChunkingMixin): | 25 class LocalesMixin(ChunkingMixin): |
24 def __init__(self, **kwargs): | 26 def __init__(self, **kwargs): |
25 """ Mixins generally don't have an __init__. | 27 """ Mixins generally don't have an __init__. |
26 This breaks super().__init__() for children. | 28 This breaks super().__init__() for children. |
(...skipping 11 matching lines...) Expand all Loading... |
38 ignore_locales = c.get("ignore_locales", []) | 40 ignore_locales = c.get("ignore_locales", []) |
39 additional_locales = c.get("additional_locales", []) | 41 additional_locales = c.get("additional_locales", []) |
40 | 42 |
41 if locales is None: | 43 if locales is None: |
42 locales = [] | 44 locales = [] |
43 if 'locales_file' in c: | 45 if 'locales_file' in c: |
44 # Best way to get abs/relative path to this? | 46 # Best way to get abs/relative path to this? |
45 locales_file = os.path.join(c['base_work_dir'], c['work_dir'], | 47 locales_file = os.path.join(c['base_work_dir'], c['work_dir'], |
46 c['locales_file']) | 48 c['locales_file']) |
47 locales = self.parse_locales_file(locales_file) | 49 locales = self.parse_locales_file(locales_file) |
| 50 # Added locales_json_url configuration |
| 51 # See https://issues.adblockplus.org/ticket/5579 |
| 52 elif 'locales_json_url' in c: |
| 53 locales_json_file = os.path.join(c['base_work_dir'], |
| 54 c['work_dir'], |
| 55 "generated", |
| 56 "locales.json") |
| 57 download_config_file(c['locales_json_url'], locales_json_file) |
| 58 locales = self.parse_locales_json(locales_json_file) |
48 else: | 59 else: |
49 self.fatal("No way to determine locales!") | 60 self.fatal("No way to determine locales!") |
50 for locale in ignore_locales: | 61 for locale in ignore_locales: |
51 if locale in locales: | 62 if locale in locales: |
52 self.debug("Ignoring locale %s." % locale) | 63 self.debug("Ignoring locale %s." % locale) |
53 locales.remove(locale) | 64 locales.remove(locale) |
54 for locale in additional_locales: | 65 for locale in additional_locales: |
55 if locale not in locales: | 66 if locale not in locales: |
56 self.debug("Adding locale %s." % locale) | 67 self.debug("Adding locale %s." % locale) |
57 locales.append(locale) | 68 locales.append(locale) |
(...skipping 28 matching lines...) Expand all Loading... |
86 continue | 97 continue |
87 self.locale_dict[locale] = locales_json[locale]['revision'] | 98 self.locale_dict[locale] = locales_json[locale]['revision'] |
88 else: | 99 else: |
89 # some other way of getting this? | 100 # some other way of getting this? |
90 self.locale_dict[locale] = 'default' | 101 self.locale_dict[locale] = 'default' |
91 locales.append(locale) | 102 locales.append(locale) |
92 else: | 103 else: |
93 locales = self.read_from_file(locales_file).split() | 104 locales = self.read_from_file(locales_file).split() |
94 return locales | 105 return locales |
95 | 106 |
| 107 # Parses the appropriate revision/changeset for each locale |
| 108 # See https://issues.adblockplus.org/ticket/5579 |
| 109 def parse_locales_json(self, locales_json_file): |
| 110 locales = [] |
| 111 locales_json = parse_config_file(locales_json_file) |
| 112 self.locale_dict = {} |
| 113 locales_dict = locales_json['locales'] |
| 114 for locale in locales_dict.keys(): |
| 115 self.locale_dict[locale] = locales_dict[locale]['changeset'] |
| 116 locales.append(locale) |
| 117 return locales |
| 118 |
96 def run_compare_locales(self, locale, halt_on_failure=False): | 119 def run_compare_locales(self, locale, halt_on_failure=False): |
97 dirs = self.query_abs_dirs() | 120 dirs = self.query_abs_dirs() |
98 compare_locales_script = os.path.join(dirs['abs_compare_locales_dir'], | 121 compare_locales_script = os.path.join(dirs['abs_compare_locales_dir'], |
99 'scripts', 'compare-locales') | 122 'scripts', 'compare-locales') |
100 env = self.query_env(partial_env={'PYTHONPATH': | 123 env = self.query_env(partial_env={'PYTHONPATH': |
101 os.path.join(dirs['abs_compare_locales_dir'], | 124 os.path.join(dirs['abs_compare_locales_dir'], |
102 'lib')}) | 125 'lib')}) |
103 compare_locales_error_list = list(PythonErrorList) | 126 compare_locales_error_list = list(PythonErrorList) |
104 self.rmtree(dirs['abs_merge_dir']) | 127 self.rmtree(dirs['abs_merge_dir']) |
105 self.mkdir_p(dirs['abs_merge_dir']) | 128 self.mkdir_p(dirs['abs_merge_dir']) |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 'vcs': vcs, | 232 'vcs': vcs, |
210 'env': env, | 233 'env': env, |
211 }) | 234 }) |
212 self.gaia_locale_revisions = self.vcs_checkout_repos(repo_list=repos, pa
rent_dir=base_dir) | 235 self.gaia_locale_revisions = self.vcs_checkout_repos(repo_list=repos, pa
rent_dir=base_dir) |
213 | 236 |
214 | 237 |
215 # __main__ {{{1 | 238 # __main__ {{{1 |
216 | 239 |
217 if __name__ == '__main__': | 240 if __name__ == '__main__': |
218 pass | 241 pass |
OLD | NEW |