fix(tools/lint): don't exceed max command line length on windows
@@ -71,15 +71,24 @@ def eslint():
":!:cli/tests/lint/**",
])
if source_files:
- print_command("eslint", source_files)
+ 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(["node", script, "--max-warnings=0", "--"] + source_files,
- shell=False,
- env=env,
- quiet=True)
+ run(pre_command + c, shell=False, env=env, quiet=True)
def pylint():
