Files
hackerlibultra/tools/check_format.py
someone2639 c366e0122a Format the Repo (#3)
* set build options

* remove COMPARE and MDOERN_* switches

* remove tools makefile

* AR patching is gone too since we want a fullly decomped version

* AR is modern

* remove cwd changes

* edit my own tool to fix compile errors

* compile files generated with my own tool instead of the originals

* inline modern_gcc makefile

* port mips toolchain detection logic

* add util.mk for find-command

* remove forced AR order and strip/mdebug removal commands

* add -mabi=32 to as flags

* formatting changes

* add clang format files

* formatting changes

* make libgultra CI work

* install mips gcc too

* add format check tools

* Add formatting to CI

* Add CI (#4)

* make libgultra CI work

* install mips gcc too

* remove make setup

---------

Co-authored-by: someone2639 <someone2639@gmail.com>

* we don't use clang-tidy

* use 120 width for formatting

* a

* address clang-tidy messing up

* test

* align consecutive macros and declarations

* only align macros for now

* SpaceAfterCStyleCast: false

* format headers too

* remove cast space switch because its false by default

* pointers on left

* AlignConsecutiveBitFields: true

* install clang-format and clang-tidy on gh actions

* and clang-tools

* show diff in format check tool

* make CI work

---------

Co-authored-by: someone2639 <someone2639@gmail.com>
🙏
2025-02-17 22:56:09 -05:00

83 lines
2.4 KiB
Python

# 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 = set(modified_files_str.splitlines())
all_src_files, all_extra_files = format.list_files_to_format()
# Split modified_files between source files and extra files (see format.py)
# This also filters out deleted files that no longer exist
modified_src_files_existing = list(modified_files.intersection(all_src_files))
modified_extra_files_existing = list(modified_files.intersection(all_extra_files))
return modified_src_files_existing, modified_extra_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, extra_files = get_modified_files_to_format(args.compare_to)
if args.verbose:
print("Formatting specific files:")
print(len(src_files), src_files)
print(len(extra_files), extra_files)
if not src_files and not extra_files:
if args.verbose:
print("Nothing to format")
exit(0)
else:
src_files, extra_files = format.list_files_to_format()
nb_jobs = multiprocessing.cpu_count()
git_status_pre = get_git_status()
format.format_files(src_files, extra_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)
print(subprocess.check_output("git diff".split(), text=True))
exit(1)
if __name__ == "__main__":
main()