# This workflow will:
#
#   * install Python dependencies
#   * lint with a single version of Python
#
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: PR-Checks

on:
  pull_request:
    branches: [ develop ]

jobs:
  flake8:
    runs-on: ubuntu-18.04

    steps:

    ####################################################################
    # Checkout the necessary commits
    ####################################################################
    # We need the repo from the 'head' of the PR, not what it's
    # based on.
    - name: Checkout head commits
      # https://github.com/actions/checkout
      uses: actions/checkout@v2
      with:
        repository: ${{github.event.pull_request.head.repo.full_name}}
        fetch-depth: 0

    # But we do need the base references
    - name: Fetch base commits
      env:
        BASE_REPO_URL: ${{github.event.pull_request.base.repo.svn_url}}
        BASE_REPO_OWNER: ${{github.event.pull_request.base.repo.owner.login}}

      run: |
        # Add the 'base' repo as a new remote
        git remote add ${BASE_REPO_OWNER} ${BASE_REPO_URL}
        # And then fetch its references
        git fetch ${BASE_REPO_OWNER}
    ####################################################################
    
    ####################################################################
    # Get Python set up
    ####################################################################
    - name: Set up Python 3.7
      uses: actions/setup-python@v2
      with:
        python-version: 3.7
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install flake8
        if [ -f requirements-dev.txt ]; then pip install -r requirements-dev.txt; elif [ -f requirements.txt ]; then pip install -r requirements.txt ; fi
    ####################################################################

    ####################################################################
    # Show full github context to aid debugging.
    ####################################################################
    - name: Show github context
      run: |
        env
        cat $GITHUB_EVENT_PATH
    ####################################################################

    ####################################################################
    # Lint with flake8
    ####################################################################
    - name: Lint with flake8
      env:
        BASE_REPO_URL: ${{github.event.pull_request.base.repo.svn_url}}
        BASE_REPO_OWNER: ${{github.event.pull_request.base.repo.owner.login}}
        BASE_REF: ${{github.base_ref}}

      run: |
        # Explicitly check for some errors
        # E9 - Runtime (syntax and the like)
        # F63 - 'tests' checking
        # F7 - syntax errors
        # F82 - undefined checking
        git diff "refs/remotes/${BASE_REPO_OWNER}/${BASE_REF}" -- | flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --diff
        # Can optionally add `--exit-zero` to the flake8 arguments so that
        # this doesn't fail the build.
        git diff "refs/remotes/${BASE_REPO_OWNER}/${BASE_REF}" -- | flake8 . --count --statistics --diff
    ####################################################################
