From f34a441a7d3e3e5c1517207a1ee2ed2a0eaee0c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=A8=E6=9D=89?= Date: Tue, 21 Jul 2020 22:47:55 +0800 Subject: fix(tools/lint): don't exceed max command line length on windows (#6804) --- tools/lint.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'tools/lint.py') diff --git a/tools/lint.py b/tools/lint.py index 0ff0b16d7..a964179fb 100755 --- a/tools/lint.py +++ b/tools/lint.py @@ -71,15 +71,24 @@ def eslint(): ":!:cli/tests/lint/**", ]) if source_files: - print_command("eslint", source_files) - # Set NODE_PATH so we don't have to maintain a symlink in root_path. - env = os.environ.copy() - env["NODE_PATH"] = os.path.join(root_path, "third_party", - "node_modules") - run(["node", script, "--max-warnings=0", "--"] + source_files, - shell=False, - env=env, - quiet=True) + max_command_len = 30000 + pre_command = ["node", script, "--max-warnings=0", "--"] + chunks = [[]] + cmd_len = len(" ".join(pre_command)) + for f in source_files: + if cmd_len + len(f) > max_command_len: + chunks.append([f]) + cmd_len = len(" ".join(pre_command)) + else: + chunks[-1].append(f) + cmd_len = cmd_len + len(f) + 1 + for c in chunks: + print_command("eslint", c) + # Set NODE_PATH so we don't have to maintain a symlink in root_path. + env = os.environ.copy() + env["NODE_PATH"] = os.path.join(root_path, "third_party", + "node_modules") + run(pre_command + c, shell=False, env=env, quiet=True) def pylint(): -- cgit v1.2.3