name: Release

on:
  push:
    # release on tag push
    tags:
      - '*'

jobs:
  wheels:

    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 != 'Windows'
      uses: actions/upload-artifact@v3
      with:
        name: wheels
        path: ./dist/*.whl

  create_release:
    name: Create Release
    needs: [wheels]
    runs-on: ubuntu-20.04

    steps:
      - name: Get version
        id: get_version
        run: |
          echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
          echo ${{ env.VERSION }}

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

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

      - name: Generate changes file
        uses: sarnold/gitchangelog-action@master
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}

      - name: Create release
        id: create_release
        uses: softprops/action-gh-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ env.VERSION }}
          name: Release v${{ env.VERSION }}
          body_path: CHANGES.md
          draft: false
          prerelease: false
          files: |
            wheels/cp210x*.whl
