diff --git a/.gitignore b/.gitignore index dd9573367..a1ea94c35 100644 --- a/.gitignore +++ b/.gitignore @@ -64,3 +64,6 @@ Thumbs.db # jenv on mac /.java-version + +# java-format +.java-format-cache diff --git a/pom.xml b/pom.xml index 0d6558cd6..3395c7274 100644 --- a/pom.xml +++ b/pom.xml @@ -32,6 +32,7 @@ 8.41.1 + 1.10.0 3.1.2 3.2.0 3.8.1 @@ -98,6 +99,12 @@ pom import + + + com.google.googlejavaformat + google-java-format + ${version.google-java-format} + diff --git a/qa/hooks/pre-commit b/qa/hooks/pre-commit new file mode 100644 index 000000000..f418feda9 --- /dev/null +++ b/qa/hooks/pre-commit @@ -0,0 +1,21 @@ +#!/bin/bash +set -e # fail fast + +VERSION=$( [[ "$(grep "" < "pom.xml")" =~ .*\>([^\<]+)\<.* ]] && echo "${BASH_REMATCH[1]}" ) +[[ -z "$VERSION" ]] && echo "Could not find version. Aborting commit." && exit 1 + +REPOSITORY_URL="https://github.com/google/google-java-format/releases/download/v${VERSION}/" +JAR_NAME="google-java-format-${VERSION}-all-deps.jar" +JAR_DOWNLOAD_URL="$REPOSITORY_URL$JAR_NAME" + +CACHE_DIR=".java-format-cache" + +mkdir -p "$CACHE_DIR" +[[ ! -f "$CACHE_DIR/$JAR_NAME" ]] && curl -LJf "$JAR_DOWNLOAD_URL" -o "$CACHE_DIR/$JAR_NAME" + +changed_java_files=$(git diff --cached --name-only --diff-filter=ACMR | grep ".*java$" || true) +if [ -n "$changed_java_files" ] +then + java -jar "$CACHE_DIR/$JAR_NAME" --replace --skip-sorting-imports $changed_java_files; + git add $changed_java_files; +fi