distributable:
  url: https://github.com/oobabooga/text-generation-webui/archive/refs/tags/{{version.tag}}.tar.gz

provides:
  - bin/text-generation-webui

versions:
  github: oobabooga/text-generation-webui

dependencies:
  python.org: ~3.10
  pkgx.sh: ^1

entrypoint: pgkx ./entrypoint.sh

display-name: text generation web UI

platforms: darwin

# TODO https://github.com/oobabooga/text-generation-webui/blob/385229313fd728f6e7573895564253d98b9826da/docs/llama.cpp.md?plain=1#L4
# TODO  entry
build:
  dependencies:
    gnu.org/coreutils: '*'
  working-directory: text-generation-webui-{{version.raw}}
  script:
    # pkg expects all the files from its checkout
    - |
      mkdir -p {{prefix}}/venv/bin
      cp -R . {{prefix}}/venv/bin
    - working-directory: '{{prefix}}/venv/bin'
      run: rm -rf docker .github docs .gitignore *.md

    - |
      python -m venv {{prefix}}/venv
      source {{prefix}}/venv/bin/activate

    # these requirements are separate as they vary by platform
    - pip install torch torchvision torchaudio

    # requirements_apple_intel.txt links to a missing version
    # of llama.cpp
    - run: |
        sed -i.bak -e's/llama_cpp_python-0.2.11-cp310-cp310-macosx_13_0_x86_64.whl/llama_cpp_python-0.2.11-cp310-cp310-macosx_12_0_x86_64.whl/' requirements_apple_intel.txt
        rm requirements_apple_intel.txt.bak
      if: darwin #/x86-64
    - pip install -r $REQS

    # pkg expects to be run with CWD set to its checkout
    - working-directory: '{{prefix}}/venv/bin'
      run: |
        echo '#!/usr/bin/env python' > text-generation-webui
        echo 'import os' >> text-generation-webui
        echo 'os.chdir(os.path.dirname(os.path.abspath(__file__)))' >> text-generation-webui
        cat server.py >> text-generation-webui
        chmod +x text-generation-webui
        rm server.py

    - python-venv-stubber.sh text-generation-webui

    - cp ../props/entrypoint.sh {{prefix}}
  env:
    linux:
      REQS: requirements.txt
    darwin/aarch64:
      REQS: requirements_apple_silicon.txt
    darwin/x86-64:
      REQS: requirements_apple_intel.txt

test:
  qa-required: true
  script: text-generation-webui --help
