name: CI
on:
    push:
        branches:
        - master
    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: Install Poetry
              uses: dschep/install-poetry-action@v1.3
              with:
                  create_virtualenvs: true
            - uses: actions/cache@v1
              id: cache
              with:
                  path: ~/.virtualenvs
                  key: poetry-${{ hashFiles('**/poetry.lock') }}
                  restore-keys: |
                      poetry-${{ hashFiles('**/poetry.lock') }}
            - name: Set Poetry config
              run: |
                  poetry config virtualenvs.in-project false
                  poetry config virtualenvs.path ~/.virtualenvs
            - name: Install Dependencies
              run: poetry install
              if: steps.cache.outputs.cache-hit != 'true'
            - name: "Flake8"
              run: poetry run flake8 relate course accounts tests

    mypy:
        name: Mypy
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v2
            - uses: actions/setup-python@v1
              with:
                  python-version: '3.x' 
            - name: Install Poetry
              uses: dschep/install-poetry-action@v1.3
              with:
                  create_virtualenvs: true
            - uses: actions/cache@v1
              id: cache
              with:
                  path: ~/.virtualenvs
                  key: poetry-${{ hashFiles('**/poetry.lock') }}
                  restore-keys: |
                      poetry-${{ hashFiles('**/poetry.lock') }}
            - name: Set Poetry config
              run: |
                  poetry config virtualenvs.in-project false
                  poetry config virtualenvs.path ~/.virtualenvs
            - name: Install Dependencies
              run: poetry install
              if: steps.cache.outputs.cache-hit != 'true'
            - name: "Mypy"
              run: poetry run mypy relate course

    cmdline:
        name: Command Line
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v2
            - uses: actions/setup-python@v1
              with:
                  python-version: '3.x' 
            - name: Install Poetry
              uses: dschep/install-poetry-action@v1.3
              with:
                  create_virtualenvs: true
            - uses: actions/cache@v1
              id: cache
              with:
                  path: ~/.virtualenvs
                  key: poetry-${{ hashFiles('**/poetry.lock') }}
                  restore-keys: |
                      poetry-${{ hashFiles('**/poetry.lock') }}
            - name: Set Poetry config
              run: |
                  poetry config virtualenvs.in-project false
                  poetry config virtualenvs.path ~/.virtualenvs
            - name: Install Dependencies
              run: poetry install
              if: steps.cache.outputs.cache-hit != 'true'
            - name: "Main Script"
              run: PY_EXE=$(poetry run which python) bash ./test-command-line-tool.sh $(poetry run which python)

    pytest:
        name: Pytest on Py${{ matrix.python-version }}
        runs-on: ubuntu-latest
        strategy:
            matrix:
                python-version: [3.6, 3.7, 3.8]
        steps:
        - uses: actions/checkout@v2
        - uses: actions/setup-python@v1
          with:
              python-version: ${{ matrix.python-version }}
        - name: Install Poetry
          uses: dschep/install-poetry-action@v1.3
        - name: Install Dependencies
          run: poetry install
        - name: "Main Script"
          run: |
              sudo apt-get install -y -qq gettext
              PY_EXE=$(poetry run which python) RL_CI_TEST=test bash ./run-tests-for-ci.sh

    pytest_expensive:
        name: Pytest Expensive on Py${{ matrix.python-version }}
        runs-on: ubuntu-latest
        strategy:
            matrix:
                python-version: [3.6, 3.7, 3.8]
        steps:
        - uses: actions/checkout@v2
        - uses: actions/setup-python@v1
          with:
              python-version: ${{ matrix.python-version }}
        - name: Install Poetry
          uses: dschep/install-poetry-action@v1.3
        - name: Install Dependencies
          run: poetry install
        - name: "Main Script"
          run: |
              sudo apt-get install -y -qq gettext
              PY_EXE=$(poetry run which python) RL_CI_TEST=test_expensive bash ./run-tests-for-ci.sh

# vim: sw=4

