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

# 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?}")

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
