# Workflow derived from https://github.com/r-lib/actions/tree/master/examples
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
#
# NOTE: This workflow is overkill for most R packages and
# check-standard.yaml is likely a better choice.
# usethis::use_github_action("check-standard") will install it.
on:
  push:
    branches: [main, master]
    paths-ignore:
      - 'pkgdown/**'
      - '.github/workflows/pkgdown.yaml'
  pull_request:
    branches: [main, master]
    paths-ignore:
      - 'pkgdown/**'
      - '.github/workflows/pkgdown.yaml'


name: R-CMD-check

jobs:
  R-CMD-check:
    runs-on: ${{ matrix.config.os }}

    name: ${{ matrix.config.os }} (${{ matrix.config.r }}) [Pandoc ${{ matrix.config.pandoc }}]

    strategy:
      fail-fast: false
      matrix:
        config:
          # testing R release with last shipped pandoc version in RStudio IDE and new pandoc
          - {os: macOS-latest,   pandoc: '2.11.4', r: 'release'}
          - {os: macOS-latest,   pandoc: '2.14.2', r: 'release'}

          # TODO: issue on windows with pandoc 2.11.4 - change when fixed
          - {os: windows-latest, pandoc: '2.7.3', r: 'release'}
          # Use 3.6 to trigger usage of RTools35
          - {os: windows-latest, pandoc: '2.7.3', r: '3.6'}

          # Use older ubuntu to maximise backward compatibility
          - {os: ubuntu-18.04,   pandoc: '2.11.4', r: 'devel', http-user-agent: 'release'}
          - {os: ubuntu-18.04,   pandoc: 'devel', r: 'release'}
          - {os: ubuntu-18.04,   pandoc: '2.14.2', r: 'release'}
          - {os: ubuntu-18.04,   pandoc: '2.11.4', r: 'release'}
          - {os: ubuntu-18.04,   pandoc: '2.11.4', r: 'oldrel-1'}

    env:
      GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
      R_KEEP_PKG_SOURCE: yes

    steps:
      - uses: actions/checkout@v2

      - uses: r-lib/actions/setup-pandoc@v1
        if: matrix.config.pandoc != 'devel'
        with:
          pandoc-version: ${{ matrix.config.pandoc }}
      
      - uses: cderv/actions/setup-pandoc-nightly@nightly-pandoc
        if: matrix.config.pandoc == 'devel'

      - uses: r-lib/actions/setup-r@v1
        with:
          r-version: ${{ matrix.config.r }}
          http-user-agent: ${{ matrix.config.http-user-agent }}
          use-public-rspm: true

      - uses: r-lib/actions/setup-r-dependencies@v1
        with:
          extra-packages: rcmdcheck

      - uses: r-lib/actions/check-r-package@master

      - name: Show testthat output
        if: always()
        run: find check -name 'testthat.Rout*' -exec cat '{}' \; || true
        shell: bash

      - name: Upload check results
        if: failure()
        uses: actions/upload-artifact@main
        with:
          name: ${{ runner.os }}-r${{ matrix.config.r }}-results
          path: check
          
      - name: Test coverage
        if: success() && runner.os == 'Linux' && matrix.config.r == 'release' && matrix.config.pandoc == '2.11.4'
        run: |
          pak::pkg_install('covr')
          covr::codecov()
        shell: Rscript {0}
