|
|
|
#!/bin/bash
|
|
|
|
# This is a script which can be included in a pre-commit hook to auto format code using specified
|
|
|
|
# tools. In this script we utilize black for python and intelliJ for Java.
|
|
|
|
|
|
|
|
# Only run if black is installed
|
|
|
|
if hash black 2>/dev/null; then
|
|
|
|
|
|
|
|
# Find all of the .py files in the current git repo, apply black formatting to them and then
|
|
|
|
# add them again
|
|
|
|
cached_files=$(git diff --cached --name-status | \
|
|
|
|
grep -v '^D' | grep '\.py' | \
|
|
|
|
sed 's/[A-Z][ \t]*//')
|
|
|
|
|
|
|
|
# Only run if we have cached python files
|
|
|
|
if [ "$cached_files" ]; then
|
|
|
|
black --line-length 100 $cached_files \
|
|
|
|
&& git add $cached_files \
|
|
|
|
|| exit 1
|
|
|
|
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
else
|
|
|
|
echo "Black isn't installed so not formatting python code"
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Only run if intellij is set up
|
|
|
|
if hash idea.sh 2>/dev/null; then
|
|
|
|
# Apply intellij
|
|
|
|
cached_files=$(git diff --cached --name-status | \
|
|
|
|
grep -v '^D' | grep '\.java' | \
|
|
|
|
sed 's/[A-Z][ \t]*//')
|
|
|
|
|
|
|
|
|
|
|
|
if [ "$cached_files" ]; then
|
|
|
|
idea.sh format -allowDefaults $cached_files 2>/dev/null \
|
|
|
|
&& git add $cached_files \
|
|
|
|
|| exit 1
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
echo "intellij isn't installed so not formatting java code"
|
|
|
|
fi
|