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 "
911GIT_DIFF=$( git diff --diff-filter=d --staged --name-only)
1012
1113while 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
3857done <<< " $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
4264fi
4365
4466exit 0
0 commit comments