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
|