Skip to content

Commit

Permalink
Add pre-commit hook to remove cursors.
Browse files Browse the repository at this point in the history
This patch adds a pre-commit hook specifically for *NIX systems to
remove the cursor byte from all files under `src/`.

The reason why I chose python is because it is assumed that most *NIX
systems already come with it pre-installed.

Signed-off-by: xSlendiX <[email protected]>
  • Loading branch information
xslendix committed Feb 26, 2023
1 parent e65f27c commit 06a79a1
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 0 deletions.
33 changes: 33 additions & 0 deletions meta/check_code.py
Original file line number Diff line number Diff line change
@@ -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)

8 changes: 8 additions & 0 deletions meta/install_hooks.sh
Original file line number Diff line number Diff line change
@@ -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/.

25 changes: 25 additions & 0 deletions meta/pre-commit
Original file line number Diff line number Diff line change
@@ -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}"

0 comments on commit 06a79a1

Please sign in to comment.