Add check for expected line endings
Check that the EOL used in the file corresponds to the expected one for its extension, in addition to checking that EOLs are consistent. Closes https://github.com/wxWidgets/wxWidgets/pull/2228
This commit is contained in:
committed by
Vadim Zeitlin
parent
a6f6f5de27
commit
2161e5270f
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd `dirname "$0"`/../..
|
cd $(dirname "$0")/../..
|
||||||
|
|
||||||
find . \( \
|
find . \( \
|
||||||
-path './.git' -prune -o \
|
-path './.git' -prune -o \
|
||||||
@@ -13,23 +13,70 @@ find . \( \
|
|||||||
-o -type f -print0 |
|
-o -type f -print0 |
|
||||||
(
|
(
|
||||||
while IFS= read -r -d '' file; do
|
while IFS= read -r -d '' file; do
|
||||||
|
|
||||||
|
# skip binary files
|
||||||
case "$file" in
|
case "$file" in
|
||||||
*.ani | *.bmp | *.chm | *.dia | *.gif | *.gz | *.hlp | *.icns | *.ico | *.jpg | *.mo | *.mpg | *.pcx | *.pdf | *.png | *.pnm | *.tga | *.tif | *.ttf | *.wav | *.zip )
|
*.ani | *.bmp | *.chm | *.cur | *.dia | *.gif | *.gz | *.hlp | *.icns | *.ico | *.jpg | *.mo | *.mpg | *.pcx | *.pdf | *.png | *.pnm | *.pyc | *.tga | *.tif | *.ttf | *.wav | *.zip )
|
||||||
continue
|
continue
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# get used EOL
|
||||||
read dos unix mac <<< $(dos2unix --info=dum "$file" | awk '{print $1, $2, $3}')
|
read dos unix mac <<< $(dos2unix --info=dum "$file" | awk '{print $1, $2, $3}')
|
||||||
if [[ "$dos" -eq "0" ]] && [[ "$unix" -eq "0" ]]; then
|
if [[ "$dos" -eq 0 ]] && [[ "$unix" -eq 0 ]]; then
|
||||||
:
|
:
|
||||||
elif [[ "$dos" -eq "0" ]] && [[ "$mac" -eq "0" ]]; then
|
elif [[ "$dos" -eq 0 ]] && [[ "$mac" -eq 0 ]]; then
|
||||||
:
|
:
|
||||||
elif [[ "$unix" -eq "0" ]] && [[ "$mac" -eq "0" ]]; then
|
elif [[ "$unix" -eq 0 ]] && [[ "$mac" -eq 0 ]]; then
|
||||||
:
|
:
|
||||||
else
|
else
|
||||||
echo "$file has mixed EOL"
|
echo "ERROR - mixed EOL: $file"
|
||||||
|
rc=$((rc+1))
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# empty file
|
||||||
|
if [[ "$dos" -eq 0 ]] && [[ "$unix" -eq 0 ]] && [[ "$mac" -eq 0 ]]; then
|
||||||
|
continue;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# determine expected EOL
|
||||||
|
warn_expected_eol_unknown=0
|
||||||
|
case "$file" in
|
||||||
|
*.applescript | *.apspec | *.bkgen | *.bkl | *.c | *.C | *.cmake | *.cpp | *.css | *.cxx | *.guess | *.h | *.htm | *.html | *.iface | *.in | *.js | *.json | *.log | *.lua | *.m4 | *.mm | *.manifest | *.md | *.mk | *.mms | *.opt | *.patch | *.pbxproj | *.pl | *.plist | *.po | *.py | *.sh | *.sub | *.svg | *.tex | *.txt | *.TXT | *.unx | *.vms | *.xcconfig | *.xcscheme | *.xcworkspacedata | *.xbm | *.xml | *.xpm | *.xrc | *.yml )
|
||||||
|
expected_eoltype=unix
|
||||||
|
;;
|
||||||
|
*.bat | *.bcc | *.gcc | *.iss | *.props | *.rc | *.sln | *.vc | *.vcproj | *.vcxproj | *.vcxproj.filters )
|
||||||
|
expected_eoltype=dos
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
# warn_expected_eol_unknown=1
|
||||||
|
expected_eoltype=
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# check for filename without extension
|
||||||
|
if [[ "$expected_eoltype" = "" ]]; then
|
||||||
|
fullfile=$(basename -- "$file")
|
||||||
|
if [[ "${fullfile:1}" != *"."* ]]; then
|
||||||
|
warn_expected_eol_unknown=0
|
||||||
|
expected_eoltype=unix
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$warn_expected_eol_unknown" -eq 1 ]]; then
|
||||||
|
echo "WARNING - no expected EOL specified: $file"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check if expected EOL matches used EOL
|
||||||
|
if [[ "$expected_eoltype" = "unix" ]] && [[ "$unix" -eq 0 ]]; then
|
||||||
|
echo "ERROR - wrong EOL, expected unix: $file"
|
||||||
|
rc=$((rc+1))
|
||||||
|
elif [[ "$expected_eoltype" = "dos" ]] && [[ "$dos" -eq 0 ]]; then
|
||||||
|
echo "ERROR - wrong EOL, expected dos: $file"
|
||||||
rc=$((rc+1))
|
rc=$((rc+1))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
exit $rc
|
exit $rc
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user