From 61d8ef65c8a27d4e2b5f8cf177ef0b9fdceac549 Mon Sep 17 00:00:00 2001
From: SebastianRoseneck <55637012+SebastianRoseneck@users.noreply.github.com>
Date: Wed, 14 Apr 2021 11:30:16 +0200
Subject: [PATCH] TSK-1587: Pre-commit hook to ensure that all java files are
formatted properly
---
.gitignore | 3 +++
pom.xml | 7 +++++++
qa/hooks/pre-commit | 21 +++++++++++++++++++++
3 files changed, 31 insertions(+)
create mode 100644 qa/hooks/pre-commit
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