diff options
Diffstat (limited to 'python/compare-locales/mach_commands.py')
-rw-r--r-- | python/compare-locales/mach_commands.py | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/python/compare-locales/mach_commands.py b/python/compare-locales/mach_commands.py new file mode 100644 index 000000000..7be6a50e7 --- /dev/null +++ b/python/compare-locales/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 absolute_import, print_function, unicode_literals + +from mach.decorators import ( + CommandArgument, + CommandProvider, + Command, +) + +from mozbuild.base import ( + MachCommandBase, +) + +import mozpack.path as mozpath + + +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-dir-{ab_CD}' + ) + except Exception: + pass + + app = EnumerateApp(l10n_ini, l10n_base, locales) + observer = compareApp(app, merge_stage=merge_dir, + clobber=True) + print(observer.serialize()) |