name: build

on: [push, pull_request]

jobs:
  build:

    runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        python: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "pypy3"]
        os: [ubuntu-latest, windows-latest]
        include:
          - python: "2.7"
            tox_env: "py27-pytest30"
          - python: "3.5"
            tox_env: "py35-pytest30"
          - python: "3.6"
            tox_env: "py36-pytest30"
          - python: "3.7"
            tox_env: "py37-pytest30"
          - python: "3.8"
            tox_env: "py38-pytest30"
          - python: "3.9"
            tox_env: "py39-pytest30"
          - python: "pypy3"
            tox_env: "pypy3-pytest30"

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python }}
    - name: Test
      run: |
        pipx run tox -e ${{ matrix.tox_env }}  

  deploy:

    if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')

    runs-on: ubuntu-latest

    needs: build

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: "3.7"
    - name: Install wheel
      run: |
        python -m pip install --upgrade pip
        pip install wheel
    - name: Build package
      run: |
        python setup.py sdist bdist_wheel
    - name: Publish package to PyPI
      uses: pypa/gh-action-pypi-publish@master
      with:
        user: __token__
        password: ${{ secrets.pypi_token }}
