Files
react-native-devtools-frontend/scripts/lint_javascript.py
T
Tim van der Lippe 1d6e57a0e3 Always add braces to single-line if-statements
The Chromium/Google style guides does not enforce curly braces for
single-line if-statements, but does strongly recommend doing so. Adding
braces will improve code readability, by visually separating code
blocks. This will also prevent issues where accidental additions are
pushed to the "else"-clause instead of in the if-block.

This CL also updates the presubmit `eslint` to run the fix with the
correct configuration. It will now fix all issues it can fix.

Change-Id: I4b616f21a99393f168dec743c0bcbdc7f5db04a9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1821526
Commit-Queue: Tim Van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Jeff Fisher <jeffish@microsoft.com>
Cr-Original-Commit-Position: refs/heads/master@{#701070}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 7e0bdbe2d7f9fc2386bfaefda3cc29c66ccc18f9
2019-09-30 11:55:34 +00:00

91 lines
2.4 KiB
Python
Executable File

#!/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)