name: CI
on:
  - push
  - pull_request
jobs:
  test:
    name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
    runs-on: ${{ matrix.os }}
    continue-on-error: ${{ matrix.allow_failure }}
    strategy:
      fail-fast: false
      matrix:
        version: ['1.6', '1']
        os: [ubuntu-latest, macos-latest, windows-latest]
        arch: [x64]
        allow_failure: [false]
        include:
          - version: '1'
            os: macos-latest
            arch: arm64
            allow_failure: false
          - version: 'nightly'
            os: ubuntu-latest
            arch: x64
            allow_failure: true
          - version: 'nightly'
            os: macos-latest
            arch: x64
            allow_failure: true
          - version: 'nightly'
            os: windows-latest
            arch: x64
            allow_failure: true
    steps:
      - uses: actions/checkout@v2
      - uses: julia-actions/setup-julia@v1
        with:
          version: ${{ matrix.version }}
          arch: ${{ matrix.arch }}
      - uses: actions/cache@v1
        env:
          cache-name: cache-artifacts
        with:
          path: ~/.julia/artifacts
          key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }}
          restore-keys: |
            ${{ runner.os }}-test-${{ env.cache-name }}-
            ${{ runner.os }}-test-
            ${{ runner.os }}-
      - uses: julia-actions/julia-buildpkg@v1
      - uses: julia-actions/julia-runtest@v1
      - uses: julia-actions/julia-processcoverage@v1
      - uses: codecov/codecov-action@v1
        with:
          file: lcov.info
  docs:
    name: Documentation
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: julia-actions/setup-julia@v1
        with:
          version: '1'
      - run: |
          julia --project=docs -e '
            using Pkg
            Pkg.develop(PackageSpec(path=pwd()))
            Pkg.instantiate()'
      - run: |
          julia --project=docs -e '
            using Documenter: DocMeta, doctest
            using LinearOperators
            DocMeta.setdocmeta!(LinearOperators, :DocTestSetup, :(using LinearOperators); recursive=true)
            doctest(LinearOperators)'
      - run: julia --project=docs docs/make.jl
        env:
          JULIA_PKG_SERVER: ""
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }}