Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
SeleniumHQ
GitHub Repository: SeleniumHQ/Selenium
Path: blob/trunk/py/private/ruff.py
10192 views
1
# Licensed to the Software Freedom Conservancy (SFC) under one
2
# or more contributor license agreements. See the NOTICE file
3
# distributed with this work for additional information
4
# regarding copyright ownership. The SFC licenses this file
5
# to you under the Apache License, Version 2.0 (the
6
# "License"); you may not use this file except in compliance
7
# with the License. You may obtain a copy of the License at
8
#
9
# http://www.apache.org/licenses/LICENSE-2.0
10
#
11
# Unless required by applicable law or agreed to in writing,
12
# software distributed under the License is distributed on an
13
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
# KIND, either express or implied. See the License for the
15
# specific language governing permissions and limitations
16
# under the License.
17
18
"""Run ruff check and/or format on Python files across the project.
19
20
Mode is the first positional argument; remaining args are forwarded to ruff:
21
check -- ruff check --fix --show-fixes (pass --no-fix for CI verify mode)
22
format -- ruff format
23
both -- check then format (default when no mode given)
24
25
Usage:
26
bazel run //py:ruff-check -- [ruff check args]
27
bazel run //py:ruff-format -- [ruff format args]
28
bazel run //py:ruff -- [ruff check+format args]
29
"""
30
31
import os
32
import subprocess
33
import sys
34
35
from python.runfiles import Runfiles
36
37
ALL_DIRS = ["py", "scripts", "common", "dotnet", "java", "javascript", "rb"]
38
EXCLUDES = ["**/node_modules/**", "**/.bundle/**", "**/bidi/**", "**/devtools/**"]
39
40
41
def run_check(ruff, exclude_args, dirs, extra_args):
42
cmd = [ruff, "check", "--fix", "--show-fixes", "--config=py/pyproject.toml"]
43
return subprocess.run(cmd + exclude_args + dirs + extra_args).returncode
44
45
46
def run_format(ruff, exclude_args, dirs, extra_args):
47
cmd = [ruff, "format", "--config=py/pyproject.toml"]
48
return subprocess.run(cmd + exclude_args + dirs + extra_args).returncode
49
50
51
if __name__ == "__main__":
52
r = Runfiles.Create()
53
ruff = r.Rlocation("rules_multitool++multitool+multitool/tools/ruff/ruff")
54
55
os.chdir(os.environ["BUILD_WORKSPACE_DIRECTORY"])
56
57
exclude_args = []
58
for pattern in EXCLUDES:
59
exclude_args.extend(["--exclude", pattern])
60
61
mode = "both"
62
extra_args = sys.argv[1:]
63
if extra_args and extra_args[0] in ("check", "format", "both"):
64
mode = extra_args[0]
65
extra_args = extra_args[1:]
66
67
if mode == "check":
68
sys.exit(run_check(ruff, exclude_args, ALL_DIRS, extra_args))
69
elif mode == "format":
70
sys.exit(run_format(ruff, exclude_args, ALL_DIRS, extra_args))
71
else:
72
rc_check = run_check(ruff, exclude_args, ALL_DIRS, extra_args)
73
rc_format = run_format(ruff, exclude_args, ALL_DIRS, extra_args)
74
sys.exit(max(rc_check, rc_format))
75
76