Pre-commit script for iOS projects for automated code review
Step 1. Navigate to project directory using terminal
Example
cd ~/myProjectsFolder/XYZProjectGitCheckout/
Step 2. Further navigate to .git
folders
.git
foldersExample
cd .git/
You must have .git
folder inside your local check-out. If it's not there, you must be at wrong place.
Step 3. Check if hooks
folder exists or not. If not create one and move inside that folder.
hooks
folder exists or not. If not create one and move inside that folder.mkdir .hooks # optional step
cd .hooks
Step 4. Make sure that you're at valid directory.
pwd
# output should be as follows
# ~/myProjectsFolder/XYZProjectGitCheckout/.git/hooks
Step 5. Create a file named pre-commit
pre-commit
(Yes. Without any extension) and put following contents inside that file.
count=`swiftlint lint --enable-all-rules --quiet | wc -l | awk '{print $1}' | bc`
if [ $count -gt 0 ]
then
echo "Please correct swift-lint errors"
echo "\n--------------------------------\n"
swiftlint lint --quiet
exit 1
else
echo "Code quality check done."
echo "\nThank you for keeping the code clean."
echo "\nCommiting code"
exit 0
fi
Step 6. Apply executable permissions.
chmod 777 pre-commit
# Example output
# total 16
# drwxr-xr-x 4 sagar Other Users 136 Apr 4 12:29 .
# drwxr-xr-x 12 sagar Other Users 408 Apr 4 12:19 ..
# -rwxr-xr-x 1 sagar Other Users 177 Apr 4 11:42 README.sample
# -rwxrwxrwx 1 sagar Other Users 300 Apr 4 12:29 pre-commit
Step 7. Try to commit the code. In my case it shows following errors because code in not well organized.
sagar (master +) ADemoProject $ git commit -m "Removing files a b c"
Please correct swift-lint errors
--------------------------------
/Users/sagar/Desktop/ADemoProject/ADemoProject/ViewController.swift:23: warning: Vertical Whitespace Violation: Limit vertical whitespace to a single empty line. Currently 2. (vertical_whitespace)
/Users/sagar/Desktop/ADemoProject/ADemoProject/ViewController.swift:25: warning: Trailing Newline Violation: Files should have a single trailing newline. (trailing_newline)
Last updated
Was this helpful?