# CI to release the project for Linux, Windows, and MacOS

name: Upload Preview Packages

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  macos:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: "3.7"
      - uses: dtolnay/rust-toolchain@stable
        with:
          targets: aarch64-apple-darwin
      - name: Build wheels - x86_64
        uses: PyO3/maturin-action@v1
        with:
          target: x86_64
          args: -i python --release --out dist --no-sdist
      - name: Build wheels - universal2
        uses: PyO3/maturin-action@v1
        with:
          args: -i python --release --universal2 --out dist --no-sdist
      - name: Upload wheels
        uses: actions/upload-artifact@v3
        with:
          name: wheels
          path: dist

  windows:
    runs-on: windows-latest
    strategy:
      matrix:
        target: [x64, x86]
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: "3.7"
          architecture: ${{ matrix.target }}
      - uses: dtolnay/rust-toolchain@stable
      - name: Build wheels
        uses: PyO3/maturin-action@v1
        with:
          target: ${{ matrix.target }}
          args: -i python3.7 --release --out dist --no-sdist
      - name: Upload wheels
        uses: actions/upload-artifact@v3
        with:
          name: wheels
          path: dist

  linux:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        target: [x86_64, i686]
    steps:
      - uses: actions/checkout@v3
      - uses: dtolnay/rust-toolchain@stable
      - uses: actions/setup-python@v4
        with:
          python-version: "3.7"
      - name: Build Wheels
        uses: PyO3/maturin-action@v1
        with:
          target: ${{ matrix.target }}
          manylinux: auto
          args: -i python3.7 --out dist --no-sdist
      - name: Upload wheels
        uses: actions/upload-artifact@v3
        with:
          name: wheels
          path: dist

  linux-cross:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python: [{ abi: "cp37-cp37m" }]
        target: [aarch64, armv7, s390x, ppc64le]
    steps:
      - uses: actions/checkout@v3
      - name: Build Wheels
        uses: PyO3/maturin-action@v1
        env:
          PYO3_CROSS_LIB_DIR: /opt/python/${{ matrix.python.abi }}/lib
        with:
          target: ${{ matrix.target }}
          manylinux: auto
          args: -i python3.7 --release --out dist --no-sdist
      - name: Upload wheels
        uses: actions/upload-artifact@v3
        with:
          name: wheels
          path: dist
