mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 22:05:44 +00:00
3e949ee8fe
This removes ambiguity as to which modules are being imported, making import slightly faster as Python doesn't need to test so many directories for file presence. All files should already be using absolute imports because mach command modules aren't imported to the package they belong to: they instead belong to the "mach" package. So relative imports shouldn't have been used. --HG-- extra : commitid : 6tFME1KKfTD extra : rebase_source : 78728f82f5487281620e00c2a8004cd5e1968087
82 lines
2.8 KiB
Python
82 lines
2.8 KiB
Python
# 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 absolute_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 = mozpath.join(
|
|
self.topsrcdir,
|
|
self.substs['MOZ_BUILD_APP'],
|
|
'locales', 'l10n.ini'
|
|
)
|
|
if not l10n_base:
|
|
l10n_base = mozpath.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 = mozpath.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'))
|