|  | #!/bin/bash | 
|  |  | 
|  | # Copyright 2021 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 buildifier formatting and lint in files modified vs the specified | 
|  | # reference commit (default "main") | 
|  | # See https://github.com/bazelbuild/buildtools/tree/master/buildifier | 
|  |  | 
|  | set -o pipefail | 
|  |  | 
|  | BASE_REF="${1:-main}" | 
|  |  | 
|  | declare -a included_files_patterns=( | 
|  | "/BUILD$" | 
|  | "\.bazel$" | 
|  | "/WORKSPACE$" | 
|  | "\.bzl$" | 
|  | ) | 
|  |  | 
|  | declare -a excluded_files_patterns=( | 
|  | "/third_party/" | 
|  | "^third_party/" | 
|  | ) | 
|  |  | 
|  | # Join on | | 
|  | included_files_pattern="$(IFS="|" ; echo "${included_files_patterns[*]?}")" | 
|  | excluded_files_pattern="$(IFS="|" ; echo "${excluded_files_patterns[*]?}")" | 
|  |  | 
|  | readarray -t files < <(\ | 
|  | (git diff --name-only --diff-filter=d "${BASE_REF}" || kill $$) \ | 
|  | | grep -E "${included_files_pattern?}" \ | 
|  | | grep -v -E "${excluded_files_pattern?}") | 
|  |  | 
|  | if (( ${#files[@]} == 0 )); then | 
|  | echo "No Bazel files changed" | 
|  | exit 0 | 
|  | fi | 
|  |  | 
|  | echo "Fixing formatting with Buildifier" | 
|  | buildifier "${files[@]}" | 
|  |  | 
|  | echo "Fixing automatically fixable lint with Buildifier" | 
|  | buildifier -lint=fix "${files[@]}" | 
|  |  | 
|  | echo "Checking complicated lint with Buildifier" | 
|  | # Sometimes people don't write docstrings and I am not going to make that | 
|  | # blocking. | 
|  | buildifier -lint=warn -warnings=-module-docstring,-function-docstring "${files[@]}" |