31 lines
928 B
Bash
Executable File
31 lines
928 B
Bash
Executable File
#!/bin/sh
|
|
set -o pipefail
|
|
|
|
fail=0
|
|
|
|
for file in *.tex *.cls; do
|
|
basename="$(basename -- "$file")"
|
|
filefail=0
|
|
|
|
(grep -n $'\t' "$file" | sed 's/\t/↹/g') && echo -e "$file: Found tab (expected only spaces)\n" && filefail=1
|
|
(grep -n '\s$' "$file" | sed 's/\s/·/g') && echo -e "$file: Trailing whitespace\n" && filefail=1
|
|
[ "${basename##*.}" = "tex" ] && (grep -nE '^ [^&]*\\\\' "$file") && echo -e "$file: Forced linebreak outside of table\n" && filefail=1
|
|
[[ -x "$file" ]] && echo -e "$file: Executable bit is set (but filetype does not need to be executable)\n" && filefail=1
|
|
|
|
if [ "$filefail" = "1" ]; then
|
|
fail=1
|
|
echo # additional newline after each failed file
|
|
fi
|
|
done
|
|
|
|
if [ "$CI" = "true" ]; then
|
|
pdfs=$(find . -iname "*.pdf" -not -path "./attachments/*")
|
|
[ -n "$pdfs" ] && echo -e "Found PDF files not in ./attachments/:\n$pdfs" && fail=1
|
|
fi
|
|
|
|
if [ "$fail" = "1" ]; then
|
|
exit 1
|
|
else
|
|
echo "Linting passed"
|
|
fi
|