Bug 1387830 - Make ./mach lint able to output available linters. r=ahal
MozReview-Commit-ID: 2hRtfzohwTR
--- a/python/mozlint/mozlint/cli.py
+++ b/python/mozlint/mozlint/cli.py
@@ -22,16 +22,22 @@ class MozlintParser(ArgumentParser):
}],
[['-l', '--linter'],
{'dest': 'linters',
'default': [],
'action': 'append',
'help': "Linters to run, e.g 'eslint'. By default all linters "
"are run for all the appropriate files.",
}],
+ [['--list'],
+ {'dest': 'list_linters',
+ 'default': False,
+ 'action': 'store_true',
+ 'help': "List all available linters and exit.",
+ }],
[['-f', '--format'],
{'dest': 'fmt',
'default': 'stylish',
'help': "Formatter to use. Defaults to 'stylish'.",
}],
[['-n', '--no-filter'],
{'dest': 'use_filters',
'default': True,
@@ -102,19 +108,25 @@ def find_linters(linters=None):
if linters and name not in linters:
continue
lints.append(os.path.join(search_path, f))
return lints
-def run(paths, linters, fmt, outgoing, workdir, **lintargs):
+def run(paths, linters, fmt, outgoing, workdir, list_linters=None, **lintargs):
from mozlint import LintRoller, formatters
+ if list_linters:
+ lint_paths = find_linters(linters)
+ print("Available linters: {}".format(
+ [os.path.splitext(os.path.basename(l))[0] for l in lint_paths]
+ ))
+ return 0
lint = LintRoller(**lintargs)
lint.read(find_linters(linters))
# run all linters
results = lint.roll(paths, outgoing=outgoing, workdir=workdir)
formatter = formatters.get(fmt)
# Encode output with 'replace' to avoid UnicodeEncodeErrors on