# Upload a single demo space
default:
    @just --list

upload path:
    python upload_space.py demo/{{path}}

# Upload all demo spaces
upload-all:
    python upload_space.py demo --all

# Run a demo with uvicorn
run name:
    uvicorn demo.{{name}}.app:app --port 8000

# Run the gradio ui for a demo
gradio name:
    MODE=UI python demo/{{name}}/app.py

# Run a demo with phone mode
phone name:
    MODE=PHONE python demo/{{name}}/app.py

call name:
    MODE=PHONE python demo/{{name}}/app.py

# Upload the latest wheel file to PyPI using twine
publish:
    #!/usr/bin/env python
    import glob
    import os
    from pathlib import Path
    
    # Find all wheel files in dist directory
    wheels = glob.glob('dist/*.whl')
    if not wheels:
        print("No wheel files found in dist directory")
        exit(1)
    
    # Sort by creation time to get the latest
    latest_wheel = max(wheels, key=os.path.getctime)
    print(f"Uploading {latest_wheel}")
    os.system(f"twine upload {latest_wheel}")


# Build the package
build:
    gradio cc build --no-generate-docs

# Format the code
format:
    ruff format .
    ruff check --fix .
    ruff check --select I --fix .

docs:
    mkdocs serve -a localhost:8081