name: CI
on:
    push:
        branches:
        - main
    pull_request:
        paths-ignore:
        - 'doc/*.rst'
    schedule:
        - cron:  '17 3 * * 0'

jobs:
    flake8:
        name: Flake8
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v2
        -
            uses: actions/setup-python@v1
            with:
                python-version: '3.x'
        -   name: "Main Script"
            run: |
                curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/prepare-and-run-flake8.sh
                . ./prepare-and-run-flake8.sh boxtree test examples

    pylint:
        name: Pylint
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v2
        -   name: "Main Script"
            run: |
                sed 's/python=3/python=3.7/' .test-conda-env-py3.yml > .test-conda-env.yml
                CONDA_ENVIRONMENT=.test-conda-env.yml
                USE_CONDA_BUILD=1
                curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/prepare-and-run-pylint.sh
                . ./prepare-and-run-pylint.sh boxtree test/test_*.py

    docs:
        name: Documentation
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v2
        -
            uses: actions/setup-python@v1
            with:
                python-version: '3.x'
        -   name: "Main Script"
            run: |
                CONDA_ENVIRONMENT=.test-conda-env-py3.yml
                curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/ci-support.sh
                . ci-support.sh
                build_py_project_in_conda_env
                build_docs

    pytest3:
        name: Conda Python 3
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v2
        -   name: "Main Script"
            run: |
                CONDA_ENVIRONMENT=.test-conda-env-py3.yml
                export MPLBACKEND=Agg
                curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project-within-miniconda.sh
                . ./build-and-test-py-project-within-miniconda.sh

    py3example:
        name: Python 3 Examples
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v2
        -   name: "Main Script"
            run: |
                CONDA_ENVIRONMENT=.test-conda-env-py3.yml
                curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/build-py-project-within-miniconda.sh
                . ./build-py-project-within-miniconda.sh
                curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/run-examples.sh
                . ./run-examples.sh

    downstream_tests:
        strategy:
            matrix:
                downstream_project: [pytential]
        name: Tests for downstream project ${{ matrix.downstream_project }}
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v2
        -   name: "Main Script"
            env:
                DOWNSTREAM_PROJECT: ${{ matrix.downstream_project }}
            run: |
                git clone "https://github.com/inducer/$DOWNSTREAM_PROJECT.git"
                cd "$DOWNSTREAM_PROJECT"
                echo "*** $DOWNSTREAM_PROJECT version: $(git rev-parse --short HEAD)"
                sed -i "/egg=boxtree/ c git+file://$(readlink -f ..)#egg=boxtree" requirements.txt
                export CONDA_ENVIRONMENT=.test-conda-env-py3.yml
                # Avoid slow or complicated tests in downstream projects
                export PYTEST_ADDOPTS="-k 'not (slowtest or octave or mpi)'"
                curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/main/ci-support.sh
                . ./ci-support.sh
                build_py_project_in_conda_env
                test_py_project

# vim: sw=4
