2016-01-18 23:38:49 +00:00
#!/bin/bash
2016-01-19 08:15:30 +00:00
DIR = ` dirname $0 `
2016-01-18 23:38:49 +00:00
EXIT_CODE = 0
2018-01-02 15:28:17 +00:00
cat $DIR /dictionary.dic | tr '\n' '|' | sed 's/\x27/\\x27/g' > /tmp/dictionary_processed
2016-01-19 08:42:31 +00:00
2018-01-02 15:28:17 +00:00
DICT_REGEXP = $( cat /tmp/dictionary_processed | sed 's/|/[^[:alnum:]]\\|/g' )
DICT_REGEXP_EOF = $( cat /tmp/dictionary_processed | sed 's/|$//g' | sed 's/|/$\\|/g' )
2016-01-19 15:25:59 +00:00
DICT_REGEXP = " $DICT_REGEXP $DICT_REGEXP_EOF $"
2016-01-19 12:50:18 +00:00
2018-01-02 15:28:17 +00:00
git diff HEAD^ --name-status | grep "^D" -v | sed 's/^.\t//g' | grep " \.md $" > /tmp/changed_files
go build -o /tmp/spell-checker $DIR /spell-checker.go
2016-01-18 23:38:49 +00:00
while read FILE; do
echo -n " Проверка файла $FILE на опечатки... " ;
2017-01-13 17:40:40 +00:00
2018-01-02 15:28:17 +00:00
OUTPUT = $( cat " $FILE " | sed " s/ $DICT_REGEXP //gi " | sed 's/https\?:[^ ]*//g' | sed "s/[(][^)]*\.md[)]//g" | hunspell -d russian-aot-utf8,ru_RU,de_DE-utf8,en_US-utf8 | /tmp/spell-checker) ;
2016-01-19 15:36:03 +00:00
OUTPUT_EXIT_CODE = $?
2016-01-18 23:38:49 +00:00
2016-01-19 15:36:03 +00:00
if [ $OUTPUT_EXIT_CODE -ne 0 ] ; then
EXIT_CODE = 1
2016-01-18 23:38:49 +00:00
echo "ошибка" ;
2016-01-19 15:25:59 +00:00
echo " $OUTPUT " ;
2016-01-18 23:38:49 +00:00
else
echo "пройдена" ;
fi
2016-01-19 08:42:31 +00:00
2018-01-02 15:28:17 +00:00
rm -f /tmp/file.html
blackfriday-tool $FILE /tmp/file.html
2016-01-18 23:38:49 +00:00
2018-01-02 15:28:17 +00:00
if [ -f "/tmp/file.html" ] ; then
grep -Po '(?<=href=")http[^"]*(?=")' "/tmp/file.html" > /tmp/links
2017-01-12 23:27:07 +00:00
2018-01-02 15:28:17 +00:00
if [ -s /tmp/links ] ; then
2017-01-13 09:34:55 +00:00
echo " Проверка файла $FILE на недоступные ссылки... " ;
2017-01-13 17:40:40 +00:00
2017-01-12 23:27:07 +00:00
while read LINK; do
2017-01-13 01:14:17 +00:00
REGEXP_LINK = $( echo $LINK | sed 's/[]\.|$(){}?+*^[]/\\&/g' )
2017-01-12 23:27:07 +00:00
LINK = $( echo " $LINK " | sed -e 's/\[/\\\[/g' -e 's/\]/\\\]/g' -e 's/\&/\&/g' )
status = $( curl --insecure -XGET -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" -m 10 -L -s --head -w %{ http_code} $LINK -o /dev/null)
2017-01-13 09:29:29 +00:00
expectedStatus = $( grep -oP " [^,]+, $REGEXP_LINK $" files/known_url.csv | cut -d',' -f1)
2017-01-12 23:27:07 +00:00
if [ -z " $expectedStatus " ] ; then
expectedStatus = "200"
fi
2017-01-13 01:24:06 +00:00
if [ " $status " != " $expectedStatus " -a " $status " != "200" ] ; then
2017-01-12 23:27:07 +00:00
EXIT_CODE = 1
2017-01-13 17:40:40 +00:00
echo " Ссылка $LINK ... недоступна с кодом $status , ожидается $expectedStatus " ;
echo
2017-01-12 23:27:07 +00:00
fi
2018-01-02 15:28:17 +00:00
done < /tmp/links
2017-01-12 23:27:07 +00:00
echo
fi
fi
2018-01-02 15:28:17 +00:00
echo
done < /tmp/changed_files
2017-01-12 23:27:07 +00:00
2016-01-19 08:52:01 +00:00
exit $EXIT_CODE