Bug 1387830 - Make ./mach lint able to output available linters. r=ahal
authorJustin Wood <Callek@gmail.com>
Sun, 06 Aug 2017 09:41:05 -0400
changeset 425434 640c562833fcd157368fb86a7da3231b23dedcb3
parent 425433 2b09cdaae71cf5e2f98825ce960954eb1c36a435
child 425435 e6fb60951529235d6bb0591e47ceaf66ff1b8044
push id1567
push userjlorenzo@mozilla.com
push dateThu, 02 Nov 2017 12:36:05 +0000
treeherdermozilla-release@e512c14a0406 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersahal
bugs1387830
milestone57.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1387830 - Make ./mach lint able to output available linters. r=ahal MozReview-Commit-ID: 2hRtfzohwTR
python/mozlint/mozlint/cli.py
--- 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