|  | #!/bin/bash | 
|  |  | 
|  | # Copyright 2020 The IREE Authors | 
|  | # | 
|  | # Licensed under the Apache License v2.0 with LLVM Exceptions. | 
|  | # See https://llvm.org/LICENSE.txt for license information. | 
|  | # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
|  |  | 
|  | # Checks for tabs in files modified vs the specified reference commit (default | 
|  | # "main") | 
|  |  | 
|  | set -o pipefail | 
|  |  | 
|  | BASE_REF="${1:-main}" | 
|  |  | 
|  | declare -a excluded_files_patterns=( | 
|  | "^\.gitmodules$" | 
|  | "/third_party/" | 
|  | "^third_party/" | 
|  | "*Makefile*" | 
|  | # Symlinks make grep upset | 
|  | "^integrations/tensorflow/iree-dialects$" | 
|  | # Generated / Binary files | 
|  | ".svg" | 
|  | ) | 
|  |  | 
|  | # Join on | | 
|  | excluded_files_pattern="$(IFS="|" ; echo "${excluded_files_patterns[*]?}")" | 
|  |  | 
|  | readarray -t files < <(\ | 
|  | (git diff --name-only --diff-filter=d "${BASE_REF}" || kill $$) \ | 
|  | | grep -v -E "${excluded_files_pattern?}") | 
|  |  | 
|  | if (( ${#files[@]} == 0 )); then | 
|  | exit 0 | 
|  | fi; | 
|  |  | 
|  | diff="$(grep --with-filename --line-number --perl-regexp --binary-files=without-match '\t' "${files[@]}")" | 
|  |  | 
|  | grep_exit="$?" | 
|  |  | 
|  | if (( "${grep_exit?}" >= 2 )); then | 
|  | exit "${grep_exit?}" | 
|  | fi | 
|  |  | 
|  | if (( "${grep_exit?}" == 0 )); then | 
|  | echo "Changed files include tabs. Please use spaces."; | 
|  | echo "$diff" | 
|  | exit 1; | 
|  | fi |