#!/bin/bash
git diff --cached --name-only | while read FILE; do
if [[ "$FILE" =~ ^.+(php)$ ]]; then
if [[ -f $FILE ]]; then
# php lint
php -l "$FILE" 1> /dev/null
if [ $? -ne 0 ]; then
echo -e "\e[1;31m\tPhp linting error.\e[0m" >&2
exit 1
fi
# phpcs
${rootpath}/vendor/bin/phpcs --standard="${rootpath}/Build/Config/phpcs.xml" --encoding=utf-8 -n -p $FILE
if [ $? -ne 0 ]; then
echo -e "\e[1;31m\tCode Sniffer error.\e[0m" >&2
exit 1
fi
# phpmd
${rootpath}/vendor/bin/phpmd $FILE text ${rootpath}/Build/Config/phpmd.xml --exclude *tests* --minimumpriority 1
if [ $? -ne 0 ]; then
echo -e "\e[1;31m\tMess Detector error.\e[0m" >&2
exit 1
fi
fi
fi
# Html/template checks
if [[ "$FILE" =~ ^.+(tpl\.php|html)$ ]]; then
# Invalid and empty attributes
if [[ -n $(grep -E '=\"[\#\$\%\^\&\*\(\)\\/\ ]*\"' $FILE) ]]; then
echo -e "\e[1;31m\tFound invalid attribute.\e[0m" >&2
grep -E '=\"[\#\$\%\^\&\*\(\)\\/\ ]*\"' $FILE >&2
exit 1
fi
# Invalid class/id names
if [[ -n $(grep -E '(id|class)=\"[a-zA-Z]*[\#\$\%\^\&\*\(\)\\/\ ]+[a-zA-Z]*\"' $FILE) ]]; then
echo -e "\e[1;31m\tFound invalid class/id.\e[0m" >&2
grep -E '(id|class)=\"[a-zA-Z]*[\#\$\%\^\&\*\(\)\\/\ ]+[a-zA-Z]*\"' $FILE >&2
exit 1
fi
# Images must have a alt= attribute *error*
if [[ -n $(grep -P '(\)' $FILE) ]]; then
echo -e "\e[1;31m\tFound missing image alt attribute.\e[0m" >&2
grep -P '(\
)' $FILE >&2
exit 1
fi
# Input elements must have a type= attribute *error*
if [[ -n $(grep -P '(\)' $FILE) ]]; then
echo -e "\e[1;31m\tFound missing input type attribute.\e[0m" >&2
grep -P '(\)' $FILE >&2
exit 1
fi
# Form fields must have a name *error*
if [[ -n $(grep -P '(\)' $FILE) ]]; then
echo -e "\e[1;31m\tFound missing form element name.\e[0m" >&2
grep -P '(\)' $FILE >&2
exit 1
fi
# Form must have a id, action and method *error*
if [[ -n $(grep -P '(\