|  | #!/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 |