# Default to clang-format-14; override CLANG_FORMAT to use another 14.x binary # (distro pkg, muttleyxd static binary, uvx clang-format@14, ...). See docs/FORMATTING.md. CLANG_FORMAT="${CLANG_FORMAT:-clang-format-14}" # this line does quite a bit, so let's break it down # # find soh # use "find" to look in the "soh" directory # this ensures we don't try to format stuff in the submodules # # -type f # only look for files # # -name "*.c" -o -name "*.cpp" # find all .c and .cpp files # # ( -name "*.h" -o -name "*.hpp" ) ! -path "soh/src/**.h" ! -path "soh/include/**.h" # find all .h and .hpp files that aren't in soh/src or soh/include # this is because zret decomp only runs clang-format on c files # https://github.com/zeldaret/mm/blob/b7e5468ca16315a7e322055eff3d97fe980bbc25/format.py#L182 # # ! -path "soh/assets/*" # asset headers are autogenerated, don't fight them # # -print0 # separate paths with NUL bytes, avoiding issues with spaces in paths # # | eval "xargs -0 $CLANG_FORMAT -i --verbose" # use xargs to take each path we've found # and pass it as an argument to clang-format # verbose to print files being formatted and X out of Y status # eval so CLANG_FORMAT can carry arguments ("uvx clang-format@14") # or a quoted path with spaces; the NUL-separated file list reaches # xargs over the pipe, so it never passes through eval find soh -type f \( -name "*.c" -o -name "*.cpp" -o \( \( -name "*.h" -o -name "*.hpp" \) ! -path "soh/src/*" ! -path "soh/include/*" \) \) ! -path "soh/assets/*" -print0 | eval "xargs -0 $CLANG_FORMAT -i --verbose"