mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-05 23:44:53 +00:00
Check format: only check modified files, v2 (#1680)
* Check format: only check modified files, v2 * cheeky z_play edit * format * rename z_play.c -> z_play_.c * Revert "rename z_play.c -> z_play_.c" This reverts commit9da9e76309
. * rm z_moji.c * Revert "rm z_moji.c" This reverts commitbd2d5acb5a
.
This commit is contained in:
parent
5c926fea0f
commit
d65fb6ed28
4 changed files with 81 additions and 72 deletions
77
tools/check_format.py
Normal file
77
tools/check_format.py
Normal file
|
@ -0,0 +1,77 @@
|
|||
# SPDX-FileCopyrightText: 2024 zeldaret
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
import subprocess
|
||||
import argparse
|
||||
import difflib
|
||||
import multiprocessing
|
||||
import glob
|
||||
import os.path
|
||||
import sys
|
||||
|
||||
sys.path.insert(0, os.curdir)
|
||||
import format
|
||||
|
||||
sys.path.pop(0)
|
||||
|
||||
|
||||
def get_git_status():
|
||||
return subprocess.check_output("git status --porcelain".split(), text=True)
|
||||
|
||||
|
||||
def get_modified_files_to_format(compare_to):
|
||||
modified_files_str = subprocess.check_output(
|
||||
["git", "diff", "--name-only", compare_to], text=True
|
||||
)
|
||||
modified_files = modified_files_str.splitlines()
|
||||
modified_c_files = [
|
||||
f
|
||||
for f in modified_files
|
||||
if f.startswith("src" + os.path.sep) and f.endswith(".c")
|
||||
]
|
||||
modified_c_files_existing = [f for f in modified_c_files if os.path.exists(f)]
|
||||
return modified_c_files_existing
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--verbose", action="store_true")
|
||||
parser.add_argument("--compare-to", dest="compare_to")
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.compare_to:
|
||||
src_files = get_modified_files_to_format(args.compare_to)
|
||||
if args.verbose:
|
||||
print("Formatting specific files:", len(src_files), src_files)
|
||||
if not src_files:
|
||||
if args.verbose:
|
||||
print("Nothing to format")
|
||||
exit(0)
|
||||
else:
|
||||
src_files = glob.glob("src/**/*.c", recursive=True)
|
||||
|
||||
nb_jobs = multiprocessing.cpu_count()
|
||||
|
||||
git_status_pre = get_git_status()
|
||||
|
||||
format.format_files(src_files, [], nb_jobs)
|
||||
|
||||
git_status_post = get_git_status()
|
||||
|
||||
if git_status_pre != git_status_post:
|
||||
print(
|
||||
"Misformatted files found."
|
||||
" Run ./format.py and verify codegen is not impacted."
|
||||
)
|
||||
for l in difflib.unified_diff(
|
||||
git_status_pre.splitlines(),
|
||||
git_status_post.splitlines(),
|
||||
"Old git status",
|
||||
"New git status",
|
||||
):
|
||||
print(l)
|
||||
exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue