#!/usr/bin/env python # # Copyright 2016 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import os.path as path import re import subprocess import sys import local_node files_to_lint = None if len(sys.argv) >= 2: if sys.argv[1] == "--help": print("Usage: %s [file|dir|glob]*" % path.basename(sys.argv[0])) print print(" [file|dir|glob]* Path or glob to run eslint on.") print(" If absent, the entire frontend will be checked.") sys.exit(0) else: print("Linting only these files:\n %s" % sys.argv[1:]) files_to_lint = sys.argv[1:] is_cygwin = sys.platform == "cygwin" def popen(arguments, cwd=None): return subprocess.Popen(arguments, cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) def to_platform_path(filepath): if not is_cygwin: return filepath return re.sub(r"^/cygdrive/(\w)", "\\1:", filepath) def to_platform_path_exact(filepath): if not is_cygwin: return filepath output, _ = popen(["cygpath", "-w", filepath]).communicate() # pylint: disable=E1103 return output.strip().replace("\\", "\\\\") scripts_path = path.dirname(path.abspath(__file__)) devtools_path = path.dirname(scripts_path) devtools_frontend_path = path.join(devtools_path, "front_end") print("Linting JavaScript with eslint...\n") def js_lint(files_list=None): eslint_errors_found = False if files_list is None: files_list = [devtools_frontend_path] files_list = [file_name for file_name in files_list if not file_name.endswith(".eslintrc.js")] eslintconfig_path = path.join(devtools_path, ".eslintrc.js") eslintignore_path = path.join(devtools_path, ".eslintignore") exec_command = [ local_node.node_path(), local_node.eslint_path(), "--config", to_platform_path_exact(eslintconfig_path), "--ignore-path", to_platform_path_exact(eslintignore_path), "--fix", ] + files_list eslint_proc = popen(exec_command, cwd=devtools_path) (eslint_proc_out, _) = eslint_proc.communicate() if eslint_proc.returncode != 0: eslint_errors_found = True else: print("eslint exited successfully") print(eslint_proc_out) return eslint_errors_found errors_found = js_lint(files_to_lint) if errors_found: print("ERRORS DETECTED") sys.exit(1)