# This GitHub action is used to compare API state snapshots of Main
# to Head of the PR in order to validate releases are not breaking 
# backwards compatibility. 
#
# This GitHub action will fail if there are incompatible changes.
#
name: "Inform Incompatible PRs"
on:
  pull_request:
    paths-ignore:
      - 'cmd/builder/**'
    branches:
      - main

jobs:
  Check-Compatibility:
    runs-on: macos-latest
    steps:

      - name: Checkout-Main
        uses: actions/checkout@v2
        with: 
          ref: ${{ github.base_ref }}
          path: ${{ github.base_ref }}

      - name: Checkout-HEAD
        uses: actions/checkout@v2 
        with: 
          path: ${{ github.head_ref }}

      - name: Setup Go
        uses: actions/setup-go@v2.2.0
        with:
          go-version: 1.17

      - name: Install-Tools
        run: |
          cd ${{ github.base_ref }}
          make install-tools 
      
      # Generate apidiff states of Main
      - name: Generate-States
        run: |
          cd ${{ github.base_ref }}
          make apidiff-build
          
      # Compare apidiff states of Main with PR
      - name: Compare-States
        env: 
          CI: true
          COMPARE_OPTS: -d "../${{ github.base_ref }}/internal/data/apidiff"
        run: |
          cd ${{ github.head_ref }}
          make apidiff-compare
      
      # Fail GitHub Action if there are incompatible changes
      - name: Check-States
        env: 
          CI: true
          COMPARE_OPTS: -d "../${{ github.base_ref }}/internal/data/apidiff" -c
        run: |
          cd ${{ github.head_ref }}
          make apidiff-compare
