#!/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$"
)

# 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
