rustsynth-sys 0.5.6

Low level bindings to VapourSynth
Documentation
name: Windows

on: [push, pull_request, workflow_dispatch]

jobs:
  build-msvc:
    runs-on: windows-latest

    steps:
    - uses: actions/checkout@v4

    - uses: microsoft/setup-msbuild@v2

    - name: Clone dependencies
      run: |
        git clone https://github.com/AviSynth/AviSynthPlus.git --depth 1
        git clone https://github.com/vapoursynth/vsrepo.git --depth 1
        git clone https://github.com/sekrit-twc/libp2p.git --depth 1
        git clone https://github.com/sekrit-twc/zimg.git --depth 1 --recurse-submodules --shallow-submodules

    - name: Setup Python 3.8
      uses: actions/setup-python@v5
      with:
        python-version: '3.8'

    - name: Install Python 3.8 packages
      run: |
        python -m pip install -U pip
        pip install -U setuptools wheel
        pip install -U --pre cython

    - name: Get Python 3.8 install path
      run: |
        $py_install_path = (Split-Path -Path (Get-Command python.exe).Path)
        echo "PYTHON38_PATH=$py_install_path" | Out-File -FilePath $env:GITHUB_ENV -Append

    - name: Setup Python 3.13
      uses: actions/setup-python@v5
      with:
        python-version: '3.13'

    - name: Install Python 3.13 packages
      run: |
        python -m pip install -U pip
        pip install -U setuptools wheel
        pip install -U --pre cython

    - name: Get Python 3.13 install path
      run: |
        $py_install_path = (Split-Path -Path (Get-Command python.exe).Path)
        echo "PYTHON_PATH=$py_install_path" | Out-File -FilePath $env:GITHUB_ENV -Append

    - name: Get version number
      run: |
        echo "VS_CURRENT_RELEASE=$(python -c "from pathlib import Path; print((Path.cwd() / 'VAPOURSYNTH_VERSION').resolve().read_text().split(' ')[-1].strip().split('-')[0])")" | Out-File -FilePath $env:GITHUB_ENV -Append

    - name: Build
      run: |
        $env:VSPYTHON38_PATH="${{ env.PYTHON38_PATH }}"
        $env:VSPYTHON_PATH="${{ env.PYTHON_PATH }}"
        msbuild msvc_project/VapourSynth.sln /t:Build /p:Configuration=Release /p:Platform=x64 /p:CurrentVersion=${{ env.VS_CURRENT_RELEASE }} /m

    - name: Package for Python 3.13
      run: |
        python setup.py bdist_wheel
        python setup.py sdist --formats=zip

    - name: Run test with Python 3.13
      run: |
        pip install .
        python -m unittest discover -s test -p "*test.py"

    - name: Setup Python 3.8 a second time
      uses: actions/setup-python@v5
      with:
        python-version: '3.8'

    - name: Package for Python 3.8
      run: |
        python setup.py bdist_wheel

    - name: Run test with Python 3.8
      run: |
        pip install .
        python -m unittest discover -s test -p "*test.py"

    - uses: actions/upload-artifact@v4
      with:
        name: vapoursynth
        path: dist

  test-windows:
    runs-on: windows-latest
    needs: build-msvc
    strategy:
      matrix:
        python: ["3.8", "3.13"]

    steps:
    - name: Setup Python ${{ matrix.python }}
      uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python }}

    - uses: actions/download-artifact@v4
      with:
        name: vapoursynth

    - name: Try installing
      run: |
        pip install vapoursynth --no-index --find-links .
        python -c "from vapoursynth import core; print(core.std.BlankClip())"

  publish:
    runs-on: ubuntu-latest
    needs: test-windows
    if: startsWith(github.event.ref, 'refs/tags/R') && !(contains(github.event.ref, 'RC'))
    permissions:
      id-token: write

    steps:
    - uses: actions/download-artifact@v4
      with:
        name: vapoursynth
        path: dist

    - uses: pypa/gh-action-pypi-publish@release/v1