зеркало из https://github.com/mozilla/gecko-dev.git
Bug 940103 - Add a mach command to call compare-locales. r=gps
We're using as many defaults from the configure step as we can. We're also opinionated upon the defaults, but obviously allow most compare-locales options to be specified. There are two exceptions: Reference language is specified to be en-US, without optional argument. This is our in-tree command, and the reference language is known. We always clobber the merge dir, and don't give an option not to. We default to a merge dir in the objdir, so we don't need to be that paranoid as in the standalone version. Also, compare-locales clobbers merge-dir/browser etc, so you're not going to get / removed. --HG-- extra : rebase_source : c0f63e566779e83201708d05966f3583ae82e4ee
This commit is contained in:
Родитель
d23c97f60c
Коммит
1ce66ccec6
|
@ -30,6 +30,7 @@ SEARCH_PATHS = [
|
|||
'python/mozbuild',
|
||||
'python/mozversioncontrol',
|
||||
'python/blessings',
|
||||
'python/compare-locales',
|
||||
'python/configobj',
|
||||
'python/jsmin',
|
||||
'python/psutil',
|
||||
|
@ -77,6 +78,7 @@ MACH_MODULES = [
|
|||
'layout/tools/reftest/mach_commands.py',
|
||||
'python/mach_commands.py',
|
||||
'python/mach/mach/commands/commandinfo.py',
|
||||
'python/compare-locales/mach_commands.py',
|
||||
'python/mozboot/mozboot/mach_commands.py',
|
||||
'python/mozbuild/mozbuild/mach_commands.py',
|
||||
'python/mozbuild/mozbuild/backend/mach_commands.py',
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this,
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
from mach.decorators import (
|
||||
CommandArgument,
|
||||
CommandProvider,
|
||||
Command,
|
||||
)
|
||||
|
||||
from mozbuild.base import (
|
||||
MachCommandBase,
|
||||
)
|
||||
|
||||
import mozpack
|
||||
|
||||
|
||||
MERGE_HELP = '''Directory to merge to. Will be removed to before running
|
||||
the comparison. Default: $(OBJDIR)/($MOZ_BUILD_APP)/locales/merge-$(AB_CD)
|
||||
'''.lstrip()
|
||||
|
||||
|
||||
@CommandProvider
|
||||
class CompareLocales(MachCommandBase):
|
||||
"""Run compare-locales."""
|
||||
|
||||
@Command('compare-locales', category='testing',
|
||||
description='Run source checks on a localization.')
|
||||
@CommandArgument('--l10n-ini',
|
||||
help='l10n.ini describing the app. ' +
|
||||
'Default: $(MOZ_BUILD_APP)/locales/l10n.ini')
|
||||
@CommandArgument('--l10n-base',
|
||||
help='Directory with the localizations. ' +
|
||||
'Default: $(L10NBASEDIR)')
|
||||
@CommandArgument('--merge-dir',
|
||||
help=MERGE_HELP)
|
||||
@CommandArgument('locales', nargs='+', metavar='ab_CD',
|
||||
help='Locale codes to compare')
|
||||
def compare(self, l10n_ini=None, l10n_base=None, merge_dir=None,
|
||||
locales=None):
|
||||
from compare_locales.paths import EnumerateApp
|
||||
from compare_locales.compare import compareApp
|
||||
|
||||
# check if we're configured and use defaults from there
|
||||
# otherwise, error early
|
||||
try:
|
||||
self.substs # explicitly check
|
||||
if not l10n_ini:
|
||||
l10n_ini = mozpack.path.join(
|
||||
self.topsrcdir,
|
||||
self.substs['MOZ_BUILD_APP'],
|
||||
'locales', 'l10n.ini'
|
||||
)
|
||||
if not l10n_base:
|
||||
l10n_base = mozpack.path.join(
|
||||
self.topsrcdir,
|
||||
self.substs['L10NBASEDIR']
|
||||
)
|
||||
except Exception:
|
||||
if not l10n_ini or not l10n_base:
|
||||
print('Specify --l10n-ini and --l10n-base or run configure.')
|
||||
return 1
|
||||
|
||||
if not merge_dir:
|
||||
try:
|
||||
# self.substs is raising an Exception if we're not configured
|
||||
# don't merge if we're not
|
||||
merge_dir = mozpack.path.join(
|
||||
self.topobjdir,
|
||||
self.substs['MOZ_BUILD_APP'],
|
||||
'locales', 'merge-{ab_CD}'
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
app = EnumerateApp(l10n_ini, l10n_base, locales)
|
||||
observer = compareApp(app, merge_stage=merge_dir,
|
||||
clobber=True)
|
||||
print(observer.serialize().encode('utf-8', 'replace'))
|
Загрузка…
Ссылка в новой задаче