ro-crate-rs 0.4.6

Library for creating, modifying and reading RO-Crates
Documentation
name: Python

on:
  push:
    branches: [ "main" ]
    tags:     
      - '*'
  pull_request:
    branches: [ "main" ]

env: 
  PACKAGE_NAME: rocraters
  PYTHON_VERSION: "3.10" # to build abi3 wheels

permissions: 
  contents: read

jobs:
  macos:
    runs-on: macos-latest
    if: "startsWith(github.ref, 'refs/tags/')"
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: ${{ env.PYTHON_VERSION }}
      - uses: dtolnay/rust-toolchain@stable
      - name: Build wheels - x86_64
        uses: PyO3/maturin-action@v1
        with:
          args: --release --out dist --sdist -m python/Cargo.toml
      - name: Build wheels - universal2
        uses: PyO3/maturin-action@v1
        with:
          target: universal2-apple-darwin
          args: --release --out dist --find-interpreter --manifest-path python/Cargo.toml
          sccache: 'true'
      - name: Upload wheels
        uses: actions/upload-artifact@v4
        with:
          name: wheels-macos-universal2-apple-darwin
          path: dist
 
  windows:
    runs-on: windows-latest
    if: "startsWith(github.ref, 'refs/tags/')"
    strategy:
      matrix:
        target: [x64, x86]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: ${{ env.PYTHON_VERSION }}
          architecture: ${{ matrix.target }}
      - uses: dtolnay/rust-toolchain@stable
      - name: Build wheels
        uses: PyO3/maturin-action@v1
        with:
          target: ${{ matrix.target }}
          args: --release --out dist --find-interpreter --manifest-path python/Cargo.toml
          sccache: 'true'
      - name: Upload wheels
        uses: actions/upload-artifact@v4
        with:
          name: wheels-windows-${{ matrix.target }}
          path: dist

  linux:
    runs-on: ubuntu-latest
    if: "startsWith(github.ref, 'refs/tags/')"
    strategy:
      matrix:
        target: [x86_64, i686]
    steps:
    - uses: actions/checkout@v4
    - name: Install dependencies
      run: sudo apt-get update && sudo apt-get install -y pkg-config libssl-dev
    - uses: actions/setup-python@v5
      with:
        python-version: ${{ env.PYTHON_VERSION }}
        architecture: x64
    - name: Build wheels
      uses: PyO3/maturin-action@v1
      with:
        target: ${{ matrix.target }}
        manylinux: auto
        args: --release --out dist --find-interpreter --manifest-path python/Cargo.toml
        sccache: 'true'
    - name: Upload wheels
      uses: actions/upload-artifact@v4
      with:
        name: wheels-linux-${{ matrix.target }}
        path: dist

  release:
    name: Release
    runs-on: ubuntu-latest
    if: "startsWith(github.ref, 'refs/tags/')"
    needs: [linux, windows, macos]
    permissions:
      contents: write
    steps:
      - uses: actions/download-artifact@v4
      - name: Publish to PyPI
        uses: PyO3/maturin-action@v1
        env:
          MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_RELEASE }}
        with:
          command: upload
          args: --non-interactive --skip-existing wheels-*/*