gnu-social/bin/pre-commit

41 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env sh
root="$(git rev-parse --show-toplevel)"
# get the list of changed files
staged_files="$(git status --porcelain | sed -rn "s/^[^ ][ ] (.*)/\1/p")"
if (! (: "${SKIP_ALL?}") 2>/dev/null) && (! (: "${SKIP_CS_FIX?}") 2>/dev/null); then
echo "Running php-cs-fixer on edited files"
files=""
for staged in ${staged_files}; do
# work only with existing files
if [ -f "${staged}" ] && expr "${staged}" : '^.*\.php$' > /dev/null; then
# use php-cs-fixer and get flag of correction
files="${staged} ${files}"
fi
done
if [ -n "${files}" ]; then
prev="${PWD}"
cd "${root}" && make cs-fixer "${files}" || exit 1
cd "${prev}" || exit 1
fi
fi
if (! (: "${SKIP_ALL?}") 2>/dev/null) && (! (: "${SKIP_DOC_CHECK?}") 2>/dev/null); then
echo "Running php-doc-checker"
if echo "${staged_files}" | grep -F ".php" > /dev/null 2>&1; then
prev="${PWD}"
cd "${root}" && make doc-check < /dev/tty || exit 1
cd "${prev}" || exit 1
fi
fi
if (! (: "${SKIP_ALL?}") 2>/dev/null) && (! (: "${SKIP_PHPSTAN?}") 2>/dev/null); then
echo "Running phpstan"
make phpstan
fi
# Only commit if there wasn't an error
exit $?