#!/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