mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-10 19:20:13 +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 {
|
stages {
|
||||||
stage('Check formatting') {
|
stage('Check formatting (full)') {
|
||||||
|
when {
|
||||||
|
branch 'main'
|
||||||
|
}
|
||||||
steps {
|
steps {
|
||||||
echo 'Checking formatting...'
|
echo 'Checking formatting on all files...'
|
||||||
sh 'tools/check_format.sh'
|
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') {
|
stage('Setup') {
|
||||||
|
|
22
format.py
22
format.py
|
@ -9,6 +9,7 @@ import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
|
from pathlib import Path
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
|
@ -150,6 +151,15 @@ def main():
|
||||||
action="store_true",
|
action="store_true",
|
||||||
help="Print the paths to the clang-* binaries used",
|
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("files", metavar="file", nargs="*")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-j",
|
"-j",
|
||||||
|
@ -175,10 +185,18 @@ def main():
|
||||||
f"Error: neither clang-apply-replacements nor clang-apply-replacements-{CLANG_VER} found (required to use -j)"
|
f"Error: neither clang-apply-replacements nor clang-apply-replacements-{CLANG_VER} found (required to use -j)"
|
||||||
)
|
)
|
||||||
|
|
||||||
if args.files:
|
if args.files or args.files_list:
|
||||||
files = args.files
|
files = []
|
||||||
|
files.extend(args.files)
|
||||||
|
if args.files_list:
|
||||||
|
files.extend(Path(args.files_list).read_text().split())
|
||||||
|
files = list(files)
|
||||||
extra_files = []
|
extra_files = []
|
||||||
|
if args.verbose:
|
||||||
|
print("Formatting specific files:", len(files), files)
|
||||||
else:
|
else:
|
||||||
|
if args.verbose:
|
||||||
|
print("Formatting all files")
|
||||||
files = glob.glob("src/**/*.c", recursive=True)
|
files = glob.glob("src/**/*.c", recursive=True)
|
||||||
extra_files = glob.glob("assets/**/*.xml", recursive=True)
|
extra_files = glob.glob("assets/**/*.xml", recursive=True)
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,35 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ $# -ne 1 ]
|
||||||
|
then
|
||||||
|
echo "Usage: $0 <full | modified>. Exiting."
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
STATUSOLD=`git status --porcelain`
|
STATUSOLD=`git status --porcelain`
|
||||||
|
|
||||||
|
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.py -j
|
||||||
if [ $? -ne 0 ]
|
FORMAT_EXIT_CODE=$?
|
||||||
|
else
|
||||||
|
echo "Unknown argument $1. Exiting."
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $FORMAT_EXIT_CODE -ne 0 ]
|
||||||
then
|
then
|
||||||
echo "Formatter failed. Exiting."
|
echo "Formatter failed. Exiting."
|
||||||
exit -1
|
exit -1
|
||||||
|
|
Loading…
Reference in a new issue