diff options
Diffstat (limited to 'tools/lint/mach_commands.py')
-rw-r--r-- | tools/lint/mach_commands.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/tools/lint/mach_commands.py b/tools/lint/mach_commands.py new file mode 100644 index 000000000..f0f3c9bdf --- /dev/null +++ b/tools/lint/mach_commands.py @@ -0,0 +1,62 @@ +# 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 + +import argparse +import os + +from mozbuild.base import ( + MachCommandBase, +) + + +from mach.decorators import ( + CommandArgument, + CommandProvider, + Command, +) + + +here = os.path.abspath(os.path.dirname(__file__)) + + +def setup_argument_parser(): + from mozlint import cli + return cli.MozlintParser() + + +@CommandProvider +class MachCommands(MachCommandBase): + + @Command( + 'lint', category='devenv', + description='Run linters.', + parser=setup_argument_parser) + def lint(self, *runargs, **lintargs): + """Run linters.""" + from mozlint import cli + lintargs['exclude'] = ['obj*'] + cli.SEARCH_PATHS.append(here) + self._activate_virtualenv() + return cli.run(*runargs, **lintargs) + + @Command('eslint', category='devenv', + description='Run eslint or help configure eslint for optimal development.') + @CommandArgument('paths', default=None, nargs='*', + help="Paths to file or directories to lint, like " + "'browser/components/loop' Defaults to the " + "current directory if not given.") + @CommandArgument('-s', '--setup', default=False, action='store_true', + help='Configure eslint for optimal development.') + @CommandArgument('-b', '--binary', default=None, + help='Path to eslint binary.') + @CommandArgument('--fix', default=False, action='store_true', + help='Request that eslint automatically fix errors, where possible.') + @CommandArgument('extra_args', nargs=argparse.REMAINDER, + help='Extra args that will be forwarded to eslint.') + def eslint(self, paths, extra_args=[], **kwargs): + self._mach_context.commands.dispatch('lint', self._mach_context, + linters=['eslint'], paths=paths, + argv=extra_args, **kwargs) |