name: "Windows Release packaging"

on:
  workflow_dispatch:
    inputs:
      cu:
        description: 'cuda version'
        required: true
        type: string
        default: "129"

      python_minor:
        description: 'python minor version'
        required: true
        type: string
        default: "13"

      python_patch:
        description: 'python patch version'
        required: true
        type: string
        default: "6"
#  push:
#    branches:
#      - master

jobs:
  package_comfyui:
    permissions:
        contents: "write"
        packages: "write"
        pull-requests: "read"
    runs-on: windows-latest
    steps:
        - uses: actions/cache/restore@v4
          id: cache
          with:
            path: |
              cu${{ inputs.cu }}_python_deps.tar
              update_comfyui_and_python_dependencies.bat
            key: ${{ runner.os }}-build-cu${{ inputs.cu }}-${{ inputs.python_minor }}
        - shell: bash
          run: |
            mv cu${{ inputs.cu }}_python_deps.tar ../
            mv update_comfyui_and_python_dependencies.bat ../
            cd ..
            tar xf cu${{ inputs.cu }}_python_deps.tar
            pwd
            ls

        - uses: actions/checkout@v4
          with:
            fetch-depth: 150
            persist-credentials: false
        - shell: bash
          run: |
            cd ..
            cp -r ComfyUI ComfyUI_copy
            curl https://www.python.org/ftp/python/3.${{ inputs.python_minor }}.${{ inputs.python_patch }}/python-3.${{ inputs.python_minor }}.${{ inputs.python_patch }}-embed-amd64.zip -o python_embeded.zip
            unzip python_embeded.zip -d python_embeded
            cd python_embeded
            echo 'import site' >> ./python3${{ inputs.python_minor }}._pth
            curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
            ./python.exe get-pip.py
            ./python.exe -s -m pip install ../cu${{ inputs.cu }}_python_deps/*
            sed -i '1i../ComfyUI' ./python3${{ inputs.python_minor }}._pth

            rm ./Lib/site-packages/torch/lib/dnnl.lib #I don't think this is actually used and I need the space
            rm ./Lib/site-packages/torch/lib/libprotoc.lib
            rm ./Lib/site-packages/torch/lib/libprotobuf.lib
            cd ..

            git clone --depth 1 https://github.com/comfyanonymous/taesd
            cp taesd/*.safetensors ./ComfyUI_copy/models/vae_approx/

            mkdir ComfyUI_windows_portable
            mv python_embeded ComfyUI_windows_portable
            mv ComfyUI_copy ComfyUI_windows_portable/ComfyUI

            cd ComfyUI_windows_portable

            mkdir update
            cp -r ComfyUI/.ci/update_windows/* ./update/
            cp -r ComfyUI/.ci/windows_nvidia_base_files/* ./
            cp ../update_comfyui_and_python_dependencies.bat ./update/

            cd ..

            "C:\Program Files\7-Zip\7z.exe" a -t7z -m0=lzma2 -mx=9 -mfb=128 -md=768m -ms=on -mf=BCJ2 ComfyUI_windows_portable.7z ComfyUI_windows_portable
            mv ComfyUI_windows_portable.7z ComfyUI/new_ComfyUI_windows_portable_nvidia_cu${{ inputs.cu }}_or_cpu.7z

            cd ComfyUI_windows_portable
            python_embeded/python.exe -s ComfyUI/main.py --quick-test-for-ci --cpu

            python_embeded/python.exe -s ./update/update.py ComfyUI/

            ls

        - name: Upload binaries to release
          uses: svenstaro/upload-release-action@v2
          with:
                repo_token: ${{ secrets.GITHUB_TOKEN }}
                file: new_ComfyUI_windows_portable_nvidia_cu${{ inputs.cu }}_or_cpu.7z
                tag: "latest"
                overwrite: true

