Adding egrep hook; better iteration for whitespace; improving local tests

This commit is contained in:
DarkFeather 2023-01-25 22:31:55 -06:00
parent 133f231726
commit 16c864e161
Signed by: DarkFeather
GPG Key ID: 1CC1E3F4ED06F296
7 changed files with 24 additions and 14 deletions

View File

@ -47,7 +47,7 @@ function logstatement() {
## Storage functions ## ## Storage functions ##
function addfs() { function addfs() {
if [ -z "$1" ] || [ -z "$2" ] || (echo "$3" | egrep -v -E '^[0-9]{1,4}'); then if [ -z "$1" ] || [ -z "$2" ] || (echo "$3" | grep -v -E '^[0-9]{1,4}'); then
echo "Need a filesystem(1), volume group path(2), and size (3)" echo "Need a filesystem(1), volume group path(2), and size (3)"
return return
fi fi
@ -139,7 +139,7 @@ function prompt-var() {
fi fi
inputtime="0" inputtime="0"
#echo "$0 is checking for $1 -- currently set to <${!1}>" #echo "$0 is checking for $1 -- currently set to <${!1}>"
while [ -z "${!1}" ] || (echo "${!1}" | egrep -v '^[-0-9a-zA-Z ,.@]{1,50}$' &>/dev/null); do while [ -z "${!1}" ] || (echo "${!1}" | grep -v -E '^[-0-9a-zA-Z ,.@]{1,50}$' &>/dev/null); do
printf "%s: " "$2"; printf "%s: " "$2";
read $1; read $1;
if [ "${!1}" == "OPT" ] || [ $inputtime -gt $maxattempts ]; then exit 0; fi if [ "${!1}" == "OPT" ] || [ $inputtime -gt $maxattempts ]; then exit 0; fi
@ -254,7 +254,7 @@ function getmagnetlink {
function findaninixcheckouts { function findaninixcheckouts {
### Find git checkouts in $pwd that are from AniNIX/Foundation ### Find git checkouts in $pwd that are from AniNIX/Foundation
find . -type f -name config -exec egrep -l 'url[[:space:]]=[[:space:]]/srv/foundation|url[[:space:]]=[[:space:]]https://(foundation.)aninix.net|url[[:space:]]=[[:space:]]([a-zA-Z0-9])+@(foundation.)aninix.net' {} \; 2>/dev/null | sed 's#.git/config$##' find . -type f -name config -exec grep -l -E 'url[[:space:]]=[[:space:]]/srv/foundation|url[[:space:]]=[[:space:]]https://(foundation.)aninix.net|url[[:space:]]=[[:space:]]([a-zA-Z0-9])+@(foundation.)aninix.net' {} \; 2>/dev/null | sed 's#.git/config$##'
} }
function aninixgitstatus { function aninixgitstatus {

View File

@ -9,6 +9,7 @@
# Run all our checking scripts. # Run all our checking scripts.
for script in $(find `dirname "$0"`/scripts.d -type f); do for script in $(find `dirname "$0"`/scripts.d -type f); do
echo "Running ${script}"
"$script" "$script"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "$script" failed checks. echo "$script" failed checks.

7
Hooks/scripts.d/egrep Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
if git ls-files | xargs --delimiter='\n' grep -irlE 'egrep' | grep -v 'Hooks/scripts.d/egrep' ; then
echo 'Egrep has been deprecated as of GNU grep 3.8 -- replace `egrep` with `grep -E`.'
echo https://www.gnu.org/software/grep/manual/grep.html
exit 1
fi

View File

@ -1,8 +1,11 @@
#!/bin/bash
# This script ensures that repos can commit personal hooks in the ./precommit-hooks folder. # This script ensures that repos can commit personal hooks in the ./precommit-hooks folder.
for script in `find precommit-hooks -type f`; do if [ -d precommit-hooks ]; then
for script in `find precommit-hooks -type f`; do
if ! bash "$script"; then if ! bash "$script"; then
echo "Local script $script failed checks." echo "Local script $script failed checks."
exit 1 exit 1
fi fi
done done
fi

View File

@ -2,13 +2,12 @@
# Sourced from https://github.com/git/git/blob/master/templates/hooks--pre-commit.sample # Sourced from https://github.com/git/git/blob/master/templates/hooks--pre-commit.sample
if git ls-files | xargs egrep -irl '\s\+$' ; then if git ls-files | xargs --delimiter='\n' grep -irlE '\s\+$'; then
echo The above lines have trailing whitespace. Run "sed -i 's/\s\+$//'" on the affected files. echo The above lines have trailing whitespace. Run "sed -i 's/\s\+$//'" on the affected files.
exit 1 exit 1
fi fi
if git rev-parse --verify HEAD >/dev/null 2>&1 if git rev-parse --verify HEAD >/dev/null 2>&1; then
then
against=HEAD against=HEAD
else else
# Initial commit: diff against an empty tree object # Initial commit: diff against an empty tree object

View File

@ -2,7 +2,7 @@ import os
import pytest import pytest
def test_hooks_exec(): def test_hooks_exec():
fh = os.popen("find Hooks -type f -exec ls -l {} \\; | egrep ^-rw-") fh = os.popen("find Hooks -type f -exec ls -l {} \\; | grep -E ^-rw-")
output = fh.read() output = fh.read()
retcode = fh.close() retcode = fh.close()
assert retcode == 256 and output == '' assert retcode == 256 and output == ''

View File

@ -2,7 +2,7 @@ import os
import pytest import pytest
def test_bash_import(): def test_bash_import():
fh = os.popen("/bin/bash -c 'source Bash/header; [ `declare -F | wc -l` -eq `egrep -c ^function\\ Bash/header` ]'", mode='r', buffering=-1) fh = os.popen("/bin/bash -c 'source Bash/header; [ `declare -F | wc -l` -eq `grep -E -c ^function\\ Bash/header` ]'", mode='r', buffering=-1)
output = fh.read() output = fh.read()
retcode = fh.close() retcode = fh.close()
assert retcode == None assert retcode == None