forked from wizacode/php-etl
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpre-commit.sample
More file actions
executable file
·80 lines (69 loc) · 2.59 KB
/
Copy pathpre-commit.sample
File metadata and controls
executable file
·80 lines (69 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/sh
# If you want to allow non-ASCII filenames set this variable to true.
allownonascii=$(git config --type=bool hooks.allownonascii)
if git rev-parse --verify HEAD >/dev/null 2>&1
then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=$(git hash-object -t tree /dev/null)
fi
# Redirect output to stderr.
exec 1>&2
# Cross platform projects tend to avoid non-ASCII filenames; prevent
# them from being added to the repository. We exploit the fact that the
# printable range starts at the space character and ends with tilde.
if [ "$allownonascii" != "true" ] &&
# Note that the use of brackets around a tr range is ok here, (it's
# even required, for portability to Solaris 10's /usr/bin/tr), since
# the square bracket bytes happen to fall in the designated range.
test $(git diff --cached --name-only --diff-filter=A -z $against |
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
then
cat <<\EOF
Error: Attempt to add a non-ASCII file name.
This can cause problems if you want to work with people on other platforms.
To be portable it is advisable to rename the file.
If you know what you are doing you can disable this check using:
git config hooks.allownonascii true
EOF
exit 1
fi
if [ "$(git diff --cached --name-only --diff-filter=ACMR $against | grep '[.]php' | grep ' ')" != '' ]
then
echo 'PHP file names should not contain spaces.'
git diff --cached --name-only --diff-filter=ACMR $against | grep '[.]php' | grep ' '
echo "Fix the error before commit!"
exit 1
fi
if [ "$(git diff --cached --name-only --diff-filter=ACMR $against | grep '[.]php')" != "" ]
then
echo "Running PHP-CS-fixer."
config=.php_cs$(test -f .php_cs || printf .dist)
git diff --cached --name-only --diff-filter=ACMR $against | grep '[.]php' | \
xargs ./vendor/bin/php-cs-fixer fix -v --using-cache=no --dry-run --allow-risky=yes --config=$config
if [ $? != 0 ]
then
echo "Fix the error before commit!"
exit 1
fi
echo "Running PHPStan level 6."
git diff --cached --name-only --diff-filter=ACMR $against | grep '[.]php' | \
xargs ./vendor/bin/phpstan --memory-limit=256M analyze
if [ $? != 0 ]
then
echo "Fix the error before commit!"
exit 1
fi
fi
if [ "$(git diff --cached --name-only --diff-filter=ACMR $against | grep '[.]php')" != "" ]
then
echo "Running Code Sniffer for src."
git diff --cached --name-only --diff-filter=ACMR $against | grep --null '[.]php' | tr \\n \\0 | \
xargs -0 ./vendor/bin/phpcs
if [ $? != 0 ]
then
echo "Fix the error before commit!"
exit 1
fi
fi