6 from typing
import List
8 IGNORE_DIRS = [
"build"]
9 EXTENSIONS = [
".cpp",
".hpp"]
12 def main(dirs: List[str], fix: bool):
13 changed_paths: List[str] = []
15 for dirpath, dirnames, filenames
in os.walk(root):
17 dirnames[:] = filter(
lambda d: d
not in IGNORE_DIRS, dirnames)
19 for name
in filenames:
20 path = os.path.join(dirpath, name)
21 if any(name.endswith(ext)
for ext
in EXTENSIONS):
23 subprocess.check_call([
"clang-format",
"-i", path])
27 subprocess.check_output([
"clang-format", path])
32 with open(path,
"r")
as f:
33 orig = [line.rstrip(
"\n")
for line
in f]
34 diff = difflib.unified_diff(
38 tofile=f
"clang-format {path}",
46 changed_paths.append(path)
50 print(f
"{len(changed_paths)} files need to be formatted:")
51 for path
in changed_paths:
57 if __name__ ==
"__main__":
58 parser = argparse.ArgumentParser(
59 description=
"Run clang-format and display changed files."
62 "dirs", help=
"List of directories to search", nargs=
"+")
63 parser.add_argument(
"--fix", action=
"store_true")
64 args = parser.parse_args()
65 sys.exit(
main(**vars(args)))