name: CI
on:
    push:
        branches:
        - main
    pull_request:
    schedule:
        - cron:  '17 3 * * 0'

jobs:
    ruff:
        name: Ruff
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v4
        -   name: "Main Script"
            run: |
                pipx install ruff
                ruff check

    typos:
        name: Typos
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v4
        -   uses: crate-ci/typos@master

    mypy:
        name: Mypy
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v4
        -
            uses: actions/setup-python@v5
            with:
                python-version: '3.x'
        -   name: "Main Script"
            run: |
                curl -L -O https://tiker.net/ci-support-v0
                . ./ci-support-v0
                build_py_project_in_conda_env
                python -m pip install mypy
                mypy $(get_proj_name)

    pylint:
        name: Pylint
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v4
        -   name: "Main Script"
            run: |
                USE_CONDA_BUILD=1
                EXTRA_INSTALL="pyvisfile scipy matplotlib"
                curl -L -O https://tiker.net/ci-support-v0
                . ci-support-v0
                build_py_project
                run_pylint "$(basename $GITHUB_REPOSITORY)" examples/*.py test/*.py

    docs:
        name: Documentation
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v4
        -   name: "Main Script"
            run: |
                CONDA_ENVIRONMENT=.test-conda-env-py3.yml
                curl -L -O https://tiker.net/ci-support-v0
                . ci-support-v0
                build_py_project_in_conda_env
                build_docs

    pytest:
        name: Conda Pytest
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v4
        -   name: "Main Script"
            run: |
                grep -v symengine .test-conda-env-py3.yml > .test-conda-env.yml
                CONDA_ENVIRONMENT=.test-conda-env.yml
                curl -L -O 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

    pytest_symengine:
        name: Conda Pytest Symengine
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v4
        -   name: "Main Script"
            run: |
                curl -L -O 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

    examples:
        name: Conda Examples
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v4
        -   name: "Main Script"
            run: |
                grep -v symengine .test-conda-env-py3.yml > .test-conda-env.yml
                CONDA_ENVIRONMENT=.test-conda-env.yml
                curl -L -O https://tiker.net/ci-support-v0
                . ci-support-v0
                EXTRA_INSTALL="pyvisfile scipy"
                build_py_project_in_conda_env
                run_examples

    downstream_tests:
        strategy:
            matrix:
                downstream_project: [pytential]
        name: Tests for downstream project ${{ matrix.downstream_project }}
        runs-on: ubuntu-latest
        steps:
        -   uses: actions/checkout@v4
        -   name: "Main Script"
            env:
                DOWNSTREAM_PROJECT: ${{ matrix.downstream_project }}
            run: |
                curl -L -O https://tiker.net/ci-support-v0
                . ./ci-support-v0
                if [[ "$DOWNSTREAM_PROJECT" == "pytential" && "$GITHUB_HEAD_REF" == "e2p" ]]; then
                    DOWNSTREAM_PROJECT=https://github.com/isuruf/pytential.git@e2p
                fi
                test_downstream "$DOWNSTREAM_PROJECT"

# vim: sw=4
