ddnet/scripts/fix_style.py

47 lines
1.2 KiB
Python
Raw Normal View History

2020-09-10 20:58:30 +00:00
#!/usr/bin/env python3
import os
import subprocess
import sys
2020-12-02 14:22:26 +00:00
import argparse
os.chdir(os.path.dirname(__file__) + "/..")
def recursive_file_list(path):
result = []
2020-12-02 14:22:26 +00:00
for dirpath, _, filenames in os.walk(path):
result += [os.path.join(dirpath, filename) for filename in filenames]
return result
IGNORE_FILES = [
"src/engine/client/keynames.h",
"src/engine/keys.h",
]
def filter_ignored(filenames):
return [filename for filename in filenames
if filename not in IGNORE_FILES
and not filename.startswith("src/game/generated/")]
def filter_cpp(filenames):
return [filename for filename in filenames
if any(filename.endswith(ext) for ext in ".c .cpp .h".split())]
def reformat(filenames):
subprocess.check_call(["clang-format", "-i"] + filenames)
def warn(filenames):
return subprocess.call(["clang-format", "-Werror", "--dry-run"] + filenames)
def main():
p = argparse.ArgumentParser(description="Check and fix style of changed files")
p.add_argument("-n", "--dry-run", action="store_true", help="Don't fix, only warn")
args = p.parse_args()
filenames = filter_ignored(filter_cpp(recursive_file_list("src")))
if not args.dry_run:
reformat(filenames)
else:
sys.exit(warn(filenames))
if __name__ == "__main__":
main()