# Justfile for Sandcage
#
# Environment variables are loaded from `.env` automatically.
set shell := ["sh", "-cu"]
set windows-shell := ["sh", "-cu"]
set dotenv-load := true

export PYTHONIOENCODING := "utf-8"

# Default: list available recipes.
default:
    @just --list

# Run cargo check.
check:
    cargo check

# Run cargo build.
build:
    cargo build

# Run unit tests (fast, no Docker required).
test:
    cargo test --workspace --exclude sandcage-test

# Run drift-guard and CLI smoke tests (fast, no Docker).
test-drift:
    cargo test -p sandcage-test -- --test-threads=1

# Run functional tests (requires Docker + pre-built images).
test-functional:
    cargo test -p sandcage-test -- --ignored --test-threads=1

# Run all tests.
test-all: test test-drift test-functional

# Run Claude Code.
claude:
    claude --allow-dangerously-skip-permissions

# Export to public repo (force-with-lease push to main).
export *FLAGS:
    uv run python scripts/export.py push {{FLAGS}}

# Dry-run export (inspect without pushing).
export-dry:
    uv run python scripts/export.py push --dry-run

install:
    cargo install --path crates/sandcage
    sandcage build --force
