Skip to content

Commit 3d2c6c3

Browse files
committed
Improved pre-commit hook in case SwiftLint build phase needs to be removed
1 parent db88093 commit 3d2c6c3

1 file changed

Lines changed: 29 additions & 7 deletions

File tree

hooks/pre-commit

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
# echo "[PRE-COMMIT] Format Ruby files"
44
# bundle exec rufo .
55

6-
FILES_REFORMATTED=0
6+
SWIFTFORMAT_REFORMATTED=0
7+
SWIFTLINT_REFORMATTED=0
8+
SWIFTLINT_VIOLATIONS=0
79

8-
echo "[PRE-COMMIT] Linting files"
10+
echo "[PRE-COMMIT] Linting files:\n"
911
GIT_DIFF=$(git diff --diff-filter=d --staged --name-only)
1012

1113
while read FILE; do
@@ -26,19 +28,39 @@ while read FILE; do
2628
# export PATH to find mint
2729
export PATH="/opt/homebrew/bin:$PATH"
2830

31+
# SwiftFormat
2932
BEFORE_SWIFTFORMAT_CHECKSUM=$(cat "$FILE" | shasum)
3033
mint run swiftformat "${FILE}" --config .swiftformat &> /dev/null
3134
AFTER_SWIFTFORMAT_CHECKSUM=$(cat "$FILE" | shasum)
3235

3336
if [[ "$BEFORE_SWIFTFORMAT_CHECKSUM" != "$AFTER_SWIFTFORMAT_CHECKSUM" ]]; then
34-
echo "[PRE-COMMIT] [Warning] $FILE reformatted automatically. Please review, stage and commit"
35-
((FILES_REFORMATTED++))
37+
echo "[PRE-COMMIT] [Warning] SwiftFormat reformatted $FILE. Please review, stage and commit."
38+
((SWIFTFORMAT_REFORMATTED++))
3639
fi
37-
fi
40+
41+
# SwiftLint autocorrect
42+
BEFORE_SWIFTLINT_CHECKSUM=$(cat "$FILE" | shasum)
43+
mint run swiftlint autocorrect --config .swiftlint.yml --quiet "${FILE}" &> /dev/null
44+
AFTER_SWIFTLINT_CHECKSUM=$(cat "$FILE" | shasum)
45+
46+
if [[ "$BEFORE_SWIFTLINT_CHECKSUM" != "$AFTER_SWIFTLINT_CHECKSUM" ]]; then
47+
echo "[PRE-COMMIT] [Warning] SwiftLint autocorrected $FILE. Please review, stage and commit."
48+
((SWIFTLINT_REFORMATTED++))
49+
fi
50+
51+
# SwiftLint check for non-correctable issues
52+
mint run swiftlint lint "${FILE}" --config .swiftlint.yml --quiet --strict --reporter emoji
53+
if [[ $? -ne 0 ]]; then
54+
((SWIFTLINT_VIOLATIONS++))
55+
fi
56+
fi
3857
done <<< "$GIT_DIFF"
3958

40-
if [[ "$FILES_REFORMATTED" -gt 0 ]]; then
41-
exit 1
59+
if [[ "$SWIFTFORMAT_REFORMATTED" -gt 0 || "$SWIFTLINT_REFORMATTED" -gt 0 || "$SWIFTLINT_VIOLATIONS" -gt 0 ]]; then
60+
echo "\nSwiftFormat reformatted files: $SWIFTFORMAT_REFORMATTED"
61+
echo "SwiftLint autocorrected files: $SWIFTLINT_REFORMATTED"
62+
echo "SwiftLint violations: $SWIFTLINT_VIOLATIONS"
63+
exit 1
4264
fi
4365

4466
exit 0

0 commit comments

Comments
 (0)