mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-13 04:39:36 +00:00
Only check formatting on modified files (#1673)
* only check formatting on modified files (attempt 1) * foreshadow maximum command string length being an issue and pass files list using a file * rm temp file list otherwise it shows in git status and counts as a "formatting diff"... * cheeky z_play modif * format
This commit is contained in:
parent
87a886df5b
commit
44408ce219
3 changed files with 66 additions and 7 deletions
20
Jenkinsfile
vendored
20
Jenkinsfile
vendored
|
@ -4,10 +4,24 @@ pipeline {
|
|||
}
|
||||
|
||||
stages {
|
||||
stage('Check formatting') {
|
||||
stage('Check formatting (full)') {
|
||||
when {
|
||||
branch 'main'
|
||||
}
|
||||
steps {
|
||||
echo 'Checking formatting...'
|
||||
sh 'tools/check_format.sh'
|
||||
echo 'Checking formatting on all files...'
|
||||
sh 'tools/check_format.sh full'
|
||||
}
|
||||
}
|
||||
stage('Check formatting (modified)') {
|
||||
when {
|
||||
not {
|
||||
branch 'main'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
echo 'Checking formatting on modified files...'
|
||||
sh 'tools/check_format.sh modified'
|
||||
}
|
||||
}
|
||||
stage('Setup') {
|
||||
|
|
22
format.py
22
format.py
|
@ -9,6 +9,7 @@ import shutil
|
|||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
from functools import partial
|
||||
from typing import List
|
||||
|
||||
|
@ -150,6 +151,15 @@ def main():
|
|||
action="store_true",
|
||||
help="Print the paths to the clang-* binaries used",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--files-list",
|
||||
dest="files_list",
|
||||
help="A file listing the files to format",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--verbose",
|
||||
action="store_true",
|
||||
)
|
||||
parser.add_argument("files", metavar="file", nargs="*")
|
||||
parser.add_argument(
|
||||
"-j",
|
||||
|
@ -175,10 +185,18 @@ def main():
|
|||
f"Error: neither clang-apply-replacements nor clang-apply-replacements-{CLANG_VER} found (required to use -j)"
|
||||
)
|
||||
|
||||
if args.files:
|
||||
files = args.files
|
||||
if args.files or args.files_list:
|
||||
files = []
|
||||
files.extend(args.files)
|
||||
if args.files_list:
|
||||
files.extend(Path(args.files_list).read_text().split())
|
||||
files = list(files)
|
||||
extra_files = []
|
||||
if args.verbose:
|
||||
print("Formatting specific files:", len(files), files)
|
||||
else:
|
||||
if args.verbose:
|
||||
print("Formatting all files")
|
||||
files = glob.glob("src/**/*.c", recursive=True)
|
||||
extra_files = glob.glob("assets/**/*.xml", recursive=True)
|
||||
|
||||
|
|
|
@ -1,8 +1,35 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ $# -ne 1 ]
|
||||
then
|
||||
echo "Usage: $0 <full | modified>. Exiting."
|
||||
exit -1
|
||||
fi
|
||||
|
||||
STATUSOLD=`git status --porcelain`
|
||||
./format.py -j
|
||||
if [ $? -ne 0 ]
|
||||
|
||||
if [ $1 = 'modified' ]
|
||||
then
|
||||
FILES_LIST=.tmp_format_modified_files_list.txt
|
||||
git show --name-only --format='' origin/main.. | grep 'src/.*\.c' | sort | uniq > $FILES_LIST
|
||||
if [ ${PIPESTATUS[0]} -ne 0 ] # git show failed
|
||||
then
|
||||
echo "Listing modified files failed. Exiting."
|
||||
exit -1
|
||||
fi
|
||||
./format.py --verbose -j`nproc` --files-list $FILES_LIST
|
||||
FORMAT_EXIT_CODE=$?
|
||||
rm $FILES_LIST
|
||||
elif [ $1 = 'full' ]
|
||||
then
|
||||
./format.py -j
|
||||
FORMAT_EXIT_CODE=$?
|
||||
else
|
||||
echo "Unknown argument $1. Exiting."
|
||||
exit -1
|
||||
fi
|
||||
|
||||
if [ $FORMAT_EXIT_CODE -ne 0 ]
|
||||
then
|
||||
echo "Formatter failed. Exiting."
|
||||
exit -1
|
||||
|
|
Loading…
Reference in a new issue