# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

name: Python Release Build
on:
  push:
    tags: ["*-rc*"]
    branches: ["master"]

jobs:
  generate-license:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - name: Generate license file
        run: python ./dev/create_license.py
      - uses: actions/upload-artifact@v2
        with:
          name: python-wheel-license
          path: LICENSE.txt

  build-python-mac-win:
    needs: [generate-license]
    name: Mac/Win
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.11"]
        os: [macos-latest, windows-latest]
    steps:
      - uses: actions/checkout@v2

      - uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}

      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install maturin==0.13.7

      - run: rm LICENSE.txt
      - name: Download LICENSE.txt
        uses: actions/download-artifact@v2
        with:
          name: python-wheel-license
          path: .

      - name: Build Python package
        run: maturin build --release --strip --locked

      - name: List Windows wheels
        if: matrix.os == 'windows-latest'
        run: dir target\wheels\

      - name: List Mac wheels
        if: matrix.os != 'windows-latest'
        run: find target/wheels/

      - name: Archive wheels
        uses: actions/upload-artifact@v2
        with:
          name: dist
          path: target/wheels/*

  build-manylinux:
    needs: [generate-license]
    name: Manylinux
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: rm LICENSE.txt
      - name: Download LICENSE.txt
        uses: actions/download-artifact@v2
        with:
          name: python-wheel-license
          path: .
      - run: cat LICENSE.txt
      - name: Build wheels
        run: |
          export RUSTFLAGS='-C target-cpu=skylake'
          docker run --rm -v $(pwd):/io \
            --workdir /io \
            ghcr.io/pyo3/maturin:v0.13.7 \
            build --release --manylinux 2010 --locked
      - name: Archive wheels
        uses: actions/upload-artifact@v2
        with:
          name: dist
          path: target/wheels/*

  # NOTE: PyPI publish needs to be done manually for now after release passed the vote
  # release:
  #   name: Publish in PyPI
  #   needs: [build-manylinux, build-python-mac-win]
  #   runs-on: ubuntu-latest
  #   steps:
  #     - uses: actions/download-artifact@v2
  #     - name: Publish to PyPI
  #       uses: pypa/gh-action-pypi-publish@master
  #       with:
  #         user: __token__
  #         password: ${{ secrets.pypi_password }}
