#!/bin/sh
#
# @author Markus Raab <elektra@markus-raab.org>
# @brief Reformats the whole source code
# @date 18.02.2016
# @tags reformat

SCRIPTS_DIR=$(dirname "$0")
# shellcheck disable=SC1091 source=include-common
. "${SCRIPTS_DIR}/include-common"

MIN_VERSION=6
CLANG_FORMAT=$(command -v clang-format-$MIN_VERSION.0 || command -v clang-format)

if [ -n "$CLANG_FORMAT" ]; then
	LOCATION="$CLANG_FORMAT"
	VERSION=$("$CLANG_FORMAT" --version 2> /dev/null)
	MAJOR_VERSION=$(printf '%s' "$VERSION" | sed -E 's/.* ([0-9]+)\.[0-9].[0-9][ -].*/\1/')
	[ "$MAJOR_VERSION" -ge $MIN_VERSION ] 2> /dev/null || unset CLANG_FORMAT
fi

if [ -z "${CLANG_FORMAT}" ]; then
	printf 'ClangFormat:   %s\n' "$LOCATION"
	printf 'Version Info:  %s\n' "$VERSION"
	printf 'Major Version: %s\n' "$MAJOR_VERSION"
	echo "Please install clang-format $MIN_VERSION, or 7"
	exit 1
fi

cd "$SOURCE" || {
	printf 'Unable to change into source directory'
	exit 1
}

for FILE in $(find . -name '*.[ch]' -or -name '*.[ch]pp' -or -name '*.[ch].in' | grep -E -v '^./src/tools/gen'); do
	"$CLANG_FORMAT" -style=file -i "$FILE"
done
