Skip to content

Instantly share code, notes, and snippets.

@rimian
Forked from edisonywh/pre-commit
Last active October 27, 2022 23:37
Show Gist options
  • Save rimian/1c9d8466082f449adc226357c6484b76 to your computer and use it in GitHub Desktop.
Save rimian/1c9d8466082f449adc226357c6484b76 to your computer and use it in GitHub Desktop.
Run Rubocop in Git's pre-commit hook
```
#!/bin/sh
echo "\nRunning Rubocop 🚓 💨 💨 💨\n"
declare -a ERRORS=()
for file in $(git diff --cached --name-only | grep -E '.rb')
do
ERRORS+=("$(rubocop $file | grep -e 'C:' -e 'E:')")
done
if [[ "$ERRORS" != "" ]]; then
echo "\n 🚨 BEE-BOP! There are some things that you need to fix before commiting!\n"
history -p "${ERRORS[@]}"
exit 1
fi
echo "Done! Rubocop has no complaints! ✅\n"
exit 0
```
#####
Two steps to get it working:
1) Run this command in your root directory: `cp .git/hooks/pre-commit.sample .git/hooks/pre-commit && chmod +x .git/hooks/pre-commit`
2) Replace the content of the file with the bash script above.
NOTE:
- The first line tells it what intepreter to use, here it's using bash. You can do #!/bin/sh ruby if you want to write a Ruby script.
- `mv` command is to rename the `.githook` from a sample to a legit one. Then `chmod` makes it executable so that it'll actually run.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment