summaryrefslogtreecommitdiffstats
path: root/tools/compare-locales/mach_commands.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/compare-locales/mach_commands.py')
-rw-r--r--tools/compare-locales/mach_commands.py94
1 files changed, 94 insertions, 0 deletions
diff --git a/tools/compare-locales/mach_commands.py b/tools/compare-locales/mach_commands.py
new file mode 100644
index 0000000000..a8c1c90154
--- /dev/null
+++ b/tools/compare-locales/mach_commands.py
@@ -0,0 +1,94 @@
+# 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 mach.base import FailedCommandError
+from mozbuild.base import MachCommandBase
+
+
+@CommandProvider
+class CompareLocales(MachCommandBase):
+ """Run compare-locales."""
+
+ @Command(
+ "compare-locales",
+ category="build",
+ description="Run source checks on a localization.",
+ )
+ @CommandArgument(
+ "config_paths",
+ metavar="l10n.toml",
+ nargs="+",
+ help="TOML or INI file for the project",
+ )
+ @CommandArgument(
+ "l10n_base_dir",
+ metavar="l10n-base-dir",
+ help="Parent directory of localizations",
+ )
+ @CommandArgument(
+ "locales",
+ nargs="*",
+ metavar="locale-code",
+ help="Locale code and top-level directory of " "each localization",
+ )
+ @CommandArgument(
+ "-q",
+ "--quiet",
+ action="count",
+ default=0,
+ help="""Show less data.
+Specified once, don't show obsolete entities. Specified twice, also hide
+missing entities. Specify thrice to exclude warnings and four times to
+just show stats""",
+ )
+ @CommandArgument(
+ "-m", "--merge", help="""Use this directory to stage merged files"""
+ )
+ @CommandArgument(
+ "--validate", action="store_true", help="Run compare-locales against reference"
+ )
+ @CommandArgument(
+ "--json",
+ help="""Serialize to JSON. Value is the name of
+the output file, pass "-" to serialize to stdout and hide the default output.
+""",
+ )
+ @CommandArgument(
+ "-D",
+ action="append",
+ metavar="var=value",
+ default=[],
+ dest="defines",
+ help="Overwrite variables in TOML files",
+ )
+ @CommandArgument(
+ "--full", action="store_true", help="Compare projects that are disabled"
+ )
+ @CommandArgument(
+ "--return-zero", action="store_true", help="Return 0 regardless of l10n status"
+ )
+ def compare(self, **kwargs):
+ from compare_locales.commands import CompareLocales
+
+ class ErrorHelper(object):
+ """Dummy ArgumentParser to marshall compare-locales
+ commandline errors to mach exceptions.
+ """
+
+ def error(self, msg):
+ raise FailedCommandError(msg)
+
+ def exit(self, message=None, status=0):
+ raise FailedCommandError(message, exit_code=status)
+
+ cmd = CompareLocales()
+ cmd.parser = ErrorHelper()
+ return cmd.handle(**kwargs)