huak 0.0.8-alpha.2

A Python package manager written in Rust inspired by Cargo.
Documentation
name: Release
# This top level GH Action Workflow controls what tasks on run when a release is triggered.

on:
  release:
    types: [published]

jobs:
  # The 'linux' job uses the manylinux docker image to build wheels that can be used by most linux distros.
  linux:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        # These are the CPU architectures...
        target: [x86_64, i686]
    steps:
      - uses: actions/checkout@v3

      - name: build wheels
        # see example at https://github.com/messense/crfs-rs/blob/main/.github/workflows/Python.yml
        uses: messense/maturin-action@v1
        with:
          target: ${{ matrix.target }}
          manylinux: auto
          args: --release --out dist --features openssl

      - name: Upload wheels
        uses: actions/upload-artifact@v2
        with:
          name: wheels
          path: dist

  # Windows job is pretty straight forward, no containers. Runs on Windows, for Windows.
  windows:
    runs-on: windows-latest
    strategy:
      matrix:
        target: [x64, x86]
    steps:
      - uses: actions/checkout@v3

        # since we don't have a requirements.txt file in the project root, setup-python needs one.
      - name: check requirements.txt
        run: |
          if (!(Test-Path requirements.txt))
          {
          New-Item -itemType File -Name requirements.txt
          }
      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'
          architecture: ${{ matrix.target }}

      - name: Install Rust toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          profile: minimal
          default: true

      - name: Build wheels
        uses: messense/maturin-action@v1
        with:
          target: ${{ matrix.target }}
          args: --release --out dist --features openssl

      - name: Save wheels
        uses: actions/upload-artifact@v2
        with:
          name: wheels
          path: dist

  macos:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v3

        # since we don't have a requirements.txt file in the project root, setup-python needs one.
      - name: check requirements.txt
        run: |
          if [[ ! -f requirements.txt ]]; then
            touch requirements.txt
          fi

      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'

      - name: Install Rust toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          profile: minimal
          default: true

      - name: Build wheels - universal2
        uses: messense/maturin-action@v1
        with:
          args: --release --universal2 --out dist --features openssl

      - name: Upload wheels
        uses: actions/upload-artifact@v2
        with:
          name: wheels
          path: dist

  release:
    name: Release
    runs-on: ubuntu-latest
    needs: [macos, linux, windows]
    steps:
      - name: Download Saved artifacts
        uses: actions/download-artifact@v2
        with:
          name: wheels

      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'

      - name: Publish to PyPI
        env:
          TWINE_USERNAME: __token__
          TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
          # use 'twine upload --repository testpypi --skip-existing *' to upload to http://test.pypi.org
        run: |
          pip install --upgrade twine
          twine upload --skip-existing *