40 lines
1004 B
Bash
40 lines
1004 B
Bash
![]() |
#!/bin/bash
|
||
|
|
||
|
if [ -z "$BUILD_DIR" ]; then BUILD_DIR=./build; fi
|
||
|
if [ -z "$COLOBOT_LINT" ]; then COLOBOT_LINT=colobot-lint; fi
|
||
|
|
||
|
diff_files="$(git diff --name-only "$@")"
|
||
|
if [ "$diff_files" == "" ]; then
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
files=""
|
||
|
root="$(git rev-parse --show-toplevel)"
|
||
|
for file in $diff_files; do
|
||
|
files="$files $root/$file"
|
||
|
done
|
||
|
|
||
|
output_filters=$(git diff --unified=0 "$@" | \
|
||
|
awk '
|
||
|
match($0, /^\+\+\+ b\/(.*)$/, cap) {
|
||
|
file=cap[1];
|
||
|
}
|
||
|
match($0, /^@@.* \+([^,]*),?(.*) @@/, cap) {
|
||
|
if (cap[2] == "0") {
|
||
|
// nothing (lines removed)
|
||
|
} else if (cap[2] == "") {
|
||
|
// single line
|
||
|
print "-output-filter " file ":" cap[1] ":" cap[1];
|
||
|
} else {
|
||
|
// line range
|
||
|
print "-output-filter " file ":" cap[1] ":" (cap[1] + cap[2] - 1);
|
||
|
}
|
||
|
}
|
||
|
')
|
||
|
|
||
|
if [ "$output_filters" == "" ]; then
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
$COLOBOT_LINT -p $BUILD_DIR $output_filters $files
|