From 5f8fe4a374b585b3c5bc2998d5ba8e02bea4ae3e Mon Sep 17 00:00:00 2001 From: Pierre Tellier Date: Sun, 9 Mar 2025 21:19:00 +0100 Subject: [PATCH] feat: precommit hook for google java format --- hooks/README.md | 2 ++ hooks/google-java-format | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 hooks/README.md create mode 100755 hooks/google-java-format diff --git a/hooks/README.md b/hooks/README.md new file mode 100644 index 0000000..c9eae1c --- /dev/null +++ b/hooks/README.md @@ -0,0 +1,2 @@ +# Useful hooks in this project +To use, just add the content of the wanted hook in `.git/hook/pre-commit`. You may need to use `chmod +x pre-commit` diff --git a/hooks/google-java-format b/hooks/google-java-format new file mode 100755 index 0000000..5155e6c --- /dev/null +++ b/hooks/google-java-format @@ -0,0 +1,24 @@ +#!/bin/bash + +# Path to the Google Java Formatter JAR +FORMATTER_JAR="$HOME/.local/share/java/google-java-format.jar" + +# Download the Google Java Formatter JAR if it doesn't exist +if [ ! -f "$FORMATTER_JAR" ]; then + echo "Downloading Google Java Formatter..." + mkdir -p "$(dirname "$FORMATTER_JAR")" + curl -L -o "$FORMATTER_JAR" https://github.com/google/google-java-format/releases/download/v1.20.0/google-java-format-1.20.0-all-deps.jar +fi + +# Format all staged Java files +STAGED_JAVA_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep "\.java$") + +if [ -n "$STAGED_JAVA_FILES" ]; then + echo "Formatting Java files..." + java -jar "$FORMATTER_JAR" --skip-sorting-imports --skip-reflowing-long-strings --aosp --replace $STAGED_JAVA_FILES + + # Re-stage the formatted files + git add $STAGED_JAVA_FILES +fi + +exit 0