name: Buildifier on: pull_request: paths: - '**/*.bzl' - '**/*.bazel' - 'BUILD*' - 'WORKSPACE*' push: paths: - '**/*.bzl' - '**/*.bazel' - 'BUILD*' - 'WORKSPACE*' branches: - master - release/* jobs: autoformat: name: Auto-format and Check runs-on: ubuntu-22.04 steps: - name: Check out code uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Install Dependencies run: | sudo wget -O /bin/buildifier https://github.com/bazelbuild/buildtools/releases/download/5.1.0/buildifier-linux-amd64 sudo chmod +x /bin/buildifier - name: Run buildifier run: | buildifier -mode=fix $(find . -name 'BUILD*' -o -name 'WORKSPACE*' -o -name '*.bzl' -o -name '*.bazel' -type f) - name: Verify buildifier shell: bash run: | # From: https://backreference.org/2009/12/23/how-to-match-newlines-in-sed/ # This is to leverage this workaround: # https://github.com/actions/toolkit/issues/193#issuecomment-605394935 function urlencode() { sed ':begin;$!N;s/\n/%0A/;tbegin' } if [[ $(git diff-index --name-only HEAD --) ]]; then for x in $(git diff-index --name-only HEAD --); do echo "::error file=$x::Please run buildifier.%0A$(git diff $x | urlencode)" done echo "${{ github.repository }} is out of style. Please run buildifier." exit 1 fi echo "${{ github.repository }} is formatted correctly."