# Copyright 2019 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

# Keep this in sync with scripts/lint.sh

name: Lint

on: [pull_request]

jobs:
  bazel_to_cmake:
    runs-on: ubuntu-18.04
    steps:
      - name: Checking out repository
        uses: actions/checkout@v2
      - name: Running bazel_to_cmake for IREE core
        run: ./build_tools/bazel_to_cmake/bazel_to_cmake.py --verbosity=2
      - name: Running bazel_to_cmake for IREE TF Integration Tests
        run: ./build_tools/bazel_to_cmake/bazel_to_cmake.py --root_dir=integrations/tensorflow/e2e --verbosity=2
      - name: Checking Diff
        run: |
          # Make sure to pick up new files that have been added.
          git add -A
          git diff HEAD --exit-code

  buildifier:
    runs-on: ubuntu-18.04
    steps:
      - name: Checking out repository
        uses: actions/checkout@v2
      - name: Fetching Base Branch
        # We have to explicitly fetch the base branch as well
        run: git fetch --no-tags --prune --depth=1 origin "${GITHUB_BASE_REF?}:${GITHUB_BASE_REF?}"
      - name: Downloading Buildifier
        run: |
          mkdir -p "${HOME?}/bin"
          wget https://github.com/bazelbuild/buildtools/releases/download/4.0.1/buildifier -O "${HOME?}/bin/buildifier"
          chmod +x "${HOME?}/bin/buildifier"
          echo "${HOME?}/bin" >> $GITHUB_PATH
      - name: Running buildifier on changed files
        run: |
          # Fail if the script fails (unfixable lint warnings) or it creates a
          # diff (fixable lint warnings or formatting).
          EXIT_CODE=0
          ./scripts/run_buildifier.sh "${GITHUB_BASE_REF?}" || EXIT_CODE=1
          git diff --exit-code
          exit "${EXIT_CODE?}"

  yapf:
    runs-on: ubuntu-18.04
    steps:
      - name: Checking out repository
        uses: actions/checkout@v2
      - name: Setting up python
        uses: actions/setup-python@v2
      - name: Fetching Base Branch
        # We have to explicitly fetch the base branch as well
        run: git fetch --no-tags --prune --depth=1 origin "${GITHUB_BASE_REF?}:${GITHUB_BASE_REF?}"
      - name: Install yapf
        run: |
          python3 -m pip install yapf==0.30.0
      - name: Run format_diff.py with yapf
        run: |
          git diff -U0 "${GITHUB_BASE_REF?}" | python3 third_party/format_diff/format_diff.py yapf -i
          git diff --exit-code
      - name: Instructions for fixing the above linting errors
        if: ${{ failure() }}
        run: |
          printf "You can fix the lint errors above by running\n"
          printf "  git diff -U0 "${GITHUB_BASE_REF?}" | python3 third_party/format_diff/format_diff.py yapf -i\n"

  pytype:
    runs-on: ubuntu-18.04
    steps:
      - name: Checking out repository
        uses: actions/checkout@v2
      - name: Setting up python
        uses: actions/setup-python@v2
        with:
          # Pytype does not support python3.9, which this action defaults to.
          python-version: '3.8'
      - name: Fetching Base Branch
        # We have to explicitly fetch the base branch as well
        run: git fetch --no-tags --prune --depth=1 origin "${GITHUB_BASE_REF?}:${GITHUB_BASE_REF?}"
      - name: Install pytype
        run: python3 -m pip install pytype
      - name: Run pytype on changed files
        run: ./build_tools/pytype/check_diff.sh "${GITHUB_BASE_REF?}"

  clang-format:
    if: ${{ false }}  # Disable until GitHub actions stop being broken: https://github.com/google/iree/runs/4794478921?check_suite_focus=true
    runs-on: ubuntu-18.04
    steps:
      - name: Installing dependencies
        run: |
          sudo apt-get update -qq
          sudo DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends clang-format-9
          wget https://raw.githubusercontent.com/llvm-mirror/clang/master/tools/clang-format/git-clang-format -O /tmp/git-clang-format
          chmod +x /tmp/git-clang-format
      - name: Checking out repository
        uses: actions/checkout@v2
      - name: Fetching Base Branch
        # We have to explicitly fetch the base branch as well
        run: git fetch --no-tags --prune --depth=1 origin "${GITHUB_BASE_REF?}:${GITHUB_BASE_REF?}"
      - name: Running clang-format on changed source files
        run: |
          /tmp/git-clang-format "${GITHUB_BASE_REF?}" --binary=clang-format-9 --style=file
          git diff --exit-code

  submodules:
    runs-on: ubuntu-18.04
    steps:
      - name: Checking out repository
        uses: actions/checkout@v2
      - name: Checking submodules
        run: ./scripts/git/submodule_versions.py check

  tabs:
    runs-on: ubuntu-18.04
    steps:
      - name: Checking out repository
        uses: actions/checkout@v2
      - name: Fetching Base Branch
        # We have to explicitly fetch the base branch as well
        run: git fetch --no-tags --prune --depth=1 origin "${GITHUB_BASE_REF?}:${GITHUB_BASE_REF?}"
      - name: Checking tabs
        run: ./scripts/check_tabs.sh "${GITHUB_BASE_REF?}"

  yamllint:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v2
      - name: yaml-lint
        uses: ibiqlik/action-yamllint@v1
        with:
          strict: true
          file_or_dir: .github/**/*.yml build_tools/buildkite/**/*.yml
