name: Build and upload to PyPI

on: [push]

jobs:
  build_wheels:
    name: Build ${{ matrix.archs }} ${{ matrix.build }} wheels on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-20.04]
        archs: ["x86_64, i686", "aarch64", "ppc64le", "s390x"]
        build: ["manylinux", "musllinux"]
        include:
          - os: windows-2019
            archs: "AMD64"
          - os: windows-2019
            archs: "x86"
          - os: macos-10.15
            archs: "x86_64, arm64"

    steps:
      - name: Disable git autocrlf
        run: |
          git config --global core.autocrlf false
          git config --global core.eol lf

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

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1.2.0
        if: runner.os == 'Linux'

      - name: Build wheels
        uses: pypa/cibuildwheel@v2.11.2
        env:
          CIBW_ARCHS: "${{ matrix.archs }}"
          CIBW_BUILD: "${{ matrix.build && '*-' || ''}}${{ matrix.build }}*"
          CIBW_PRERELEASE_PYTHONS: "${{ !startsWith(github.ref, 'refs/tags/v') }}"

      - uses: actions/upload-artifact@v2
        with:
          path: ./wheelhouse/*.whl


  build_sdist:
    name: Build sdist
    runs-on: ubuntu-20.04
    strategy:
      matrix:
        python-version: ['3.10']
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
          submodules: recursive

      - 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 -U pip 'setuptools>=45' 'setuptools-scm>=6.2'

      - name: Build sdist
        run: python setup.py build sdist

      - uses: actions/upload-artifact@v2
        with:
          path: dist/*.tar.gz


  upload_pypi:
    name: Upload to (Test) PyPI
    needs: [build_wheels, build_sdist]
    runs-on: ubuntu-20.04
    if: github.event_name == 'push' && github.repository == 'ifduyue/python-xxhash'
    steps:
      - uses: actions/download-artifact@v2
        with:
          name: artifact
          path: dist

      - name: Upload to Test PyPI
        uses: pypa/gh-action-pypi-publish@v1.4.2
        with:
          user: __token__
          password: ${{ secrets.PYPI_TEST_TOKEN }}
          skip_existing: true
          repository_url: https://test.pypi.org/legacy/

      - name: Upload to PyPI
        if: startsWith(github.ref, 'refs/tags/v')
        uses: pypa/gh-action-pypi-publish@v1.4.2
        with:
          user: __token__
          password: ${{ secrets.PYPI_TOKEN }}
          skip_existing: true
