From 96a4b8c279940c22b5db62b88d7987ec6cadef51 Mon Sep 17 00:00:00 2001 From: Tharre Date: Mon, 23 Apr 2018 02:46:40 +0200 Subject: Add pre-commit hook that checks code formatting --- .hooks/pre-commit | 34 ++++++++++++++++++++++++++++++++++ pom.xml | 22 ++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100755 .hooks/pre-commit diff --git a/.hooks/pre-commit b/.hooks/pre-commit new file mode 100755 index 0000000..0f4c49a --- /dev/null +++ b/.hooks/pre-commit @@ -0,0 +1,34 @@ +#!/bin/sh + +trap 'rm -rf "$temp_dir"' EXIT +temp_dir=".tmp" + +IFS=' +' +for staged_file in $(git diff --cached --name-only); do + [ -f "${staged_file}" ] || continue + [ "${staged_file##*.}" = "java" ] || continue + + check_files=y + mkdir -p "$temp_dir/$(dirname "$staged_file")" + git show :"$staged_file" > "$temp_dir/$staged_file" +done +unset IFS + +[ -z "$check_files" ] && exit 0 + +printf "%s\n" "-a -n --set-exit-if-changed" > "$temp_dir/gf_config" + +find "$temp_dir" -name '*.java' >> "$temp_dir/gf_config" + +output=$(./mvnw -q exec:java \ + -Dexec.mainClass="com.google.googlejavaformat.java.Main" \ + -Dexec.args="@$temp_dir/gf_config") + +if [ $? != 0 ]; then + echo 'Run "./mvnw -q com.coveo:fmt-maven-plugin:format" first.' >&2 + echo "Following files were rejected by the formatter:" >&2 + escaped=$(printf '%s\n' "$temp_dir/" | sed 's/[[\.*^$/]/\\&/g') + printf "%s\n" "$output" | sed "s/$escaped/ /" >&2 + exit 1 +fi diff --git a/pom.xml b/pom.xml index 172ff4f..c0587cc 100644 --- a/pom.xml +++ b/pom.xml @@ -23,9 +23,11 @@ 4.12 2.18.0 + 1.5 2.21.0 3.1.1 + 2.4.0 @@ -83,6 +85,11 @@ ${mockito.version} test + + com.google.googlejavaformat + google-java-format + ${google-java-format.version} + @@ -131,6 +138,21 @@ + + com.coveo + fmt-maven-plugin + ${fmt-maven-plugin.version} + + + + + + + format + + + + -- cgit v1.2.3-70-g09d2