# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Presubmits

on:
  pull_request:
    types: [opened, ready_for_review, synchronize]

jobs:
  # Run clang-format and verify there are no errors. We don't want to bother
  # building until we've at least got clean code.
  # TODO(benvanik): add other checks (license, etc).
  lint:
    name: Code Style Check
    runs-on: ubuntu-18.04
    steps:
    - name: Installing dependencies
      run: |
        sudo add-apt-repository -y "deb http://mirror.enzu.com/ubuntu/ eoan main universe"
        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 latest version and all submodules
      run: |
        git config --global remote.origin.fetch '+refs/pull/*:refs/remotes/origin/pull/*'
        git clone https://github.com/$GITHUB_REPOSITORY $GITHUB_WORKSPACE --no-checkout --no-tags
        git checkout $GITHUB_SHA
    - name: Running clang-format on changed source files
      # TODO(benvanik): actually filter to changed files.
      run: |
        /tmp/git-clang-format origin/master --binary=clang-format-9
        git diff --exit-code
