#!/usr/bin/env bash
#
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

CLANG_FORMAT=@@CLANG_FORMAT@@
MODE=@@MODE@@
WORKSPACE="@@WORKSPACE@@"
clang_format=$(realpath "$CLANG_FORMAT")

if [[ ! -z "${WORKSPACE}" ]]; then
    REPO="$(dirname "$(realpath ${WORKSPACE})")"
    cd ${REPO} || exit 1
elif [[ ! -z "${BUILD_WORKSPACE_DIRECTORY+is_set}" ]]; then
    cd ${BUILD_WORKSPACE_DIRECTORY} || exit 1
else
    echo "Neither WORKSPACE nor BUILD_WORKSPACE_DIRECTORY were set."
    echo "If this is a test rule, add 'workspace = \"//:WORKSPACE\"' to your rule."
    exit 1
fi

if [[ $# != 0 ]]; then
    FILES="$*"
else
    FILES=$(find . \
        -type f \
        @@EXCLUDE_PATTERNS@@ \
        \( @@INCLUDE_PATTERNS@@ \) \
        -print)
fi

case "$MODE" in
    diff)
        RESULT=0
        for f in $FILES; do
            diff -Naur "$f" <(${clang_format} ${f})
            RESULT=$(($RESULT | $?))
        done
        exit $RESULT
        ;;
    fix)
        echo "$FILES" | xargs ${clang_format} -i
        ;;
    *)
        echo "Unknown mode: $MODE"
        exit 1
esac
