diff --git a/meta/check_code.py b/meta/check_code.py new file mode 100755 index 000000000..4bcfd4248 --- /dev/null +++ b/meta/check_code.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 + +import os +from pathlib import Path + +os.chdir(os.path.realpath(os.path.dirname(__file__))+'/../src') + +for f in Path(os.getcwd()).glob('**/*'): + if not f.is_file(): + continue + + if not os.path.basename(f).lower().endswith('.zc'): + continue + + contents = b'' + with open(f, 'r+b') as file: + contents = file.read() + + n = contents.find(b'\x05') + byte = contents[n] + + if n == -1: continue + if contents[n-1] == 0 or contents[n-1] > 127: continue + if n+1 < len(contents) and contents[n+1] == 5: continue + if contents[n-1] <= 0x1F and (not contents[n-1] in b'\n\r'): continue + if n+1 < len(contents) and contents[n+1] <= 0x1F and (not contents[n+1] in b'\n\r'): continue + + contents = contents[0:n:] + + file.seek(0) + file.truncate() + file.write(contents) + diff --git a/meta/install_hooks.sh b/meta/install_hooks.sh new file mode 100755 index 000000000..7b6af2b53 --- /dev/null +++ b/meta/install_hooks.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +script_path=$(cd -P -- "$(dirname -- "$0")" && pwd -P) +cd "${script_path}/.." || exit 1 + +mkdir -p .git/hooks +cp meta/pre-commit .git/hooks/. + diff --git a/meta/pre-commit b/meta/pre-commit new file mode 100755 index 000000000..2d971ac38 --- /dev/null +++ b/meta/pre-commit @@ -0,0 +1,25 @@ +#!/bin/sh + +set -e + +script_path=$(cd -P -- "$(dirname -- "$0")" && pwd -P) +cd "${script_path}/.." || exit 1 +pwd | grep -q '.git' && cd .. + +RED='\033[0;31m' +GREEN='\033[0;32m' +NC='\033[0m' # No Color + +FAILURES=0 + +set +e + +echo "Running meta/check_code.sh" +if time meta/check_code.sh "$@" && git diff --exit-code; then + echo -e "[${GREEN}GOOD${NC}]: meta/check_code.sh" +else + echo -e "[${RED}FAIL${NC}]: meta/check_code.sh" + ((FAILURES+=1)) +fi + +exit "${FAILURES}"