Bug 1387830 - Make ./mach lint able to output available linters. r=ahal
☠☠ backed out by 96f8096db632 ☠ ☠
authorJustin Wood <Callek@gmail.com>
Sun, 06 Aug 2017 09:41:05 -0400
changeset 373407 393b0727cba49affa7aec2a84024dfdbf4a5ff10
parent 373406 02f357c8e98090bcf69c1238ace5e72801f4bdab
child 373408 40601ae660c6347cff6a1139c38c3d2c2fa25510
push id48256
push userCallek@gmail.com
push dateTue, 08 Aug 2017 15:55:42 +0000
treeherderautoland@393b0727cba4 [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