name: Wheels

on:
  workflow_dispatch:
  pull_request:
  push:
    branches: [ master ]

jobs:
  build:

    runs-on: ${{ matrix.os }}
    defaults:
      run:
        shell: bash
    env:
      PYTHONIOENCODING: utf-8
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-20.04, macos-latest, windows-2019]
        python-version: [3.7, 3.8, 3.9, '3.10']

    steps:
      - name: Set git crlf/eol
        run: |
          git config --global core.autocrlf false
          git config --global core.eol lf

      - uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip wheel
          pip install tox tox-gh-actions

      - name: Build dist pkgs
        run: |
          tox -e deploy

      - name: Upload artifacts
        if: matrix.python-version == 3.8 && runner.os == 'Linux'
        uses: actions/upload-artifact@v3
        with:
          name: wheels
          path: ./dist/*.whl

  check_artifact:
    name: Check wheel artifact
    needs: [build]
    runs-on: ${{ matrix.os }}
    defaults:
      run:
        shell: bash
    env:
      PYTHONIOENCODING: utf-8
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-2019]
        python-version: [3.8, '3.10']

    steps:
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}

      # download all artifacts to project dir
      - uses: actions/download-artifact@v3

      - name: Check wheel install
        run: |
          pip install pyusb
          bash -c 'export WHL=$(ls wheels/*.whl); python -m pip install $WHL'
          cp210x-program.py --version
