From 0b7deea26da194da1f9e7cd962db235850ee2261 Mon Sep 17 00:00:00 2001 From: Elastic Jasper Date: Fri, 16 Dec 2016 14:30:06 -0500 Subject: [PATCH] [grunt/eslint] fix precommit linting Backports PR #9510 **Commit 1:** [grunt/eslint] fix precommit linting - remove use of `minimatch.makeRe()` because it does not support the entire glob syntax - log a warning whenever a js file is excluded by the `lintStagedFiles` task - eslint globs are relative to the project root, ensure that we check against relative version * Original sha: ca45ae2293f90de9599b5927c6b1874e5ab66b42 * Authored by spalger on 2016-12-15T19:01:21Z **Commit 2:** [grunt/eslint] only log warning wtr grunt paths * Original sha: b152e3543fde38d2dafec669394ac6275442a049 * Authored by spalger on 2016-12-15T21:45:40Z --- tasks/lint_staged_files.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/tasks/lint_staged_files.js b/tasks/lint_staged_files.js index d8117b62c2772..edb312317d676 100644 --- a/tasks/lint_staged_files.js +++ b/tasks/lint_staged_files.js @@ -1,6 +1,7 @@ -import { resolve } from 'path'; +import { extname, resolve, relative } from 'path'; import { isStaged, getFilename } from './utils/files_to_commit'; import { CLIEngine } from 'eslint'; +import { red, blue } from 'ansicolors'; import minimatch from 'minimatch'; const root = resolve(__dirname, '..'); @@ -14,20 +15,25 @@ export default function (grunt) { const eslintSourcePaths = grunt.config.get('eslint.options.paths'); if (!eslintSourcePaths) grunt.fail.warn('eslint.options.paths is not defined'); - const sourcePathRegexps = cli.resolveFileGlobPatterns(eslintSourcePaths) - .map(glob => minimatch.makeRe(glob)); + const sourcePathGlobs = cli.resolveFileGlobPatterns(eslintSourcePaths); const files = grunt.config .get('filesToCommit') .filter(isStaged) .map(getFilename) - .map(file => resolve(root, file)) + .map(file => relative(root, resolve(file))) // resolve to pwd, then get relative from the root .filter(file => { - if (!sourcePathRegexps.some(re => file.match(re))) { + if (!sourcePathGlobs.some(glob => minimatch(file, glob))) { + if (extname(file) === '.js') { + grunt.log.writeln(`${red('WARNING:')} ${file} not selected by grunt eslint config`); + } return false; } if (cli.isPathIgnored(file)) { + if (extname(file) === '.js') { + grunt.log.writeln(`${blue('DEBUG:')} ${file} ignored by .eslintignore`); + } return false; }