#!/bin/sh # Create a link to this file at .git/hooks/pre-commit to # force PEP8 validation prior to committing # # Ignored violations: # # W504: Line break after binary operator # E501: Line too long exec 1>&2 EXIT=0 RED='\033[0;31m' YELLOW='\033[0;33m' NOCOLOR='\033[0m' if [ -d ./venv/ ]; then VENV="$PWD/venv" if [ -e $VENV/bin/python ]; then PATH=$VENV/bin:$PATH elif [ -e $VENV/Scripts/python.exe ]; then PATH=$VENV/Scripts:$PATH fi fi if [ ${NOVALIDATE} ]; then echo "${YELLOW}Skipping validation checks${NOCOLOR}" exit $EXIT fi echo "Validating PEP8 compliance..." pycodestyle --ignore=W504,E501 --exclude=node_modules netbox/ if [ $? != 0 ]; then EXIT=1 fi echo "Checking for missing migrations..." python netbox/manage.py makemigrations --dry-run --check if [ $? != 0 ]; then EXIT=1 fi git diff --cached --name-only | if grep --quiet 'netbox/project-static/' then echo "Checking UI ESLint, TypeScript, and Prettier compliance..." yarn --cwd "$PWD/netbox/project-static" validate if [ $? != 0 ]; then EXIT=1 fi fi if [ $EXIT != 0 ]; then printf "${RED}COMMIT FAILED${NOCOLOR}\n" fi exit $EXIT