mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +00:00
70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
import argparse
|
||
|
import os
|
||
|
import pathlib
|
||
|
import re
|
||
|
import subprocess
|
||
|
import sys
|
||
|
|
||
|
script_name = pathlib.Path(__file__).resolve().name
|
||
|
|
||
|
lines_to_skip = re.compile(
|
||
|
r"^($| *//|\};|#import |.+ includes .+|\[[^\]]+\]"
|
||
|
r"|interface |dictionary |enum |namespace |typedef |callback )"
|
||
|
)
|
||
|
|
||
|
parser = argparse.ArgumentParser()
|
||
|
parser.add_argument("--overwrite-inplace", action=argparse.BooleanOptionalAction)
|
||
|
parser.add_argument('filenames', nargs='*')
|
||
|
args = parser.parse_args()
|
||
|
|
||
|
|
||
|
def find_files_here_or_argv():
|
||
|
if args.filenames:
|
||
|
raw_list = args.filenames
|
||
|
else:
|
||
|
process = subprocess.run(["git", "ls-files"], check=True, capture_output=True)
|
||
|
raw_list = process.stdout.decode().strip("\n").split("\n")
|
||
|
return filter(lambda filename: filename.endswith(".idl"), raw_list)
|
||
|
|
||
|
|
||
|
def run():
|
||
|
"""Lint WebIDL files checked into git for four leading spaces on each line."""
|
||
|
files_without_four_leading_spaces = set()
|
||
|
did_fail = False
|
||
|
for filename in find_files_here_or_argv():
|
||
|
lines = []
|
||
|
with open(filename, "r") as f:
|
||
|
for line_number, line in enumerate(f, start=1):
|
||
|
if lines_to_skip.match(line):
|
||
|
lines.append(line)
|
||
|
continue
|
||
|
if not line.startswith(" "):
|
||
|
if args.overwrite_inplace:
|
||
|
line = " " + line.lstrip()
|
||
|
lines.append(line)
|
||
|
continue
|
||
|
did_fail = True
|
||
|
files_without_four_leading_spaces.add(filename)
|
||
|
print(
|
||
|
f"{filename}:{line_number} error: Line does not start with four spaces:{line.rstrip()}")
|
||
|
lines.append(line)
|
||
|
if args.overwrite_inplace:
|
||
|
with open(filename, "w") as f:
|
||
|
f.writelines(lines)
|
||
|
|
||
|
if files_without_four_leading_spaces:
|
||
|
print("\nWebIDL files that have lines without four leading spaces:",
|
||
|
" ".join(files_without_four_leading_spaces))
|
||
|
if not args.overwrite_inplace:
|
||
|
print(
|
||
|
f"\nTo fix the WebIDL files in place, run: ./Meta/{script_name} --overwrite-inplace")
|
||
|
if did_fail:
|
||
|
sys.exit(1)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
os.chdir(os.path.dirname(__file__) + "/..")
|
||
|
run()
|