host := "bl@flo-homeserver"
hagfisk_dir := "~/hagfisk"

# Build binary locally
build:
    echo "Building hagfisk binary..."
    cargo build --release

# Stop app service (must stop before DB operations)
stop-app:
    ssh {{host}} "systemctl --user stop hagfisk.service"

# Start app service
start-app:
    ssh {{host}} "systemctl --user start hagfisk.service"

# Restart app service
restart-app:
    ssh {{host}} "systemctl --user restart hagfisk.service"

# Deploy and restart (safe for regular updates)
deploy: build
    ssh -q {{host}} "rm -f {{hagfisk_dir}}/hagfisk"
    echo "Syncing binary to remote..."
    rsync -avz --progress ./target/release/hagfisk {{host}}:{{hagfisk_dir}}/hagfisk
    echo "Restoring SELinux contexts..."
    ssh -t -q {{host}} "sudo restorecon -RF {{hagfisk_dir}}"
    ssh -q {{host}} "systemctl --user daemon-reload"
    ssh -q {{host}} "systemctl --user restart hagfisk.service"

# Deploy with full re-ingest (stops service first)
deploy-reingest: build stop-app
    echo "Syncing binary to remote..."
    rsync -avz --progress ./target/release/hagfisk {{host}}:{{hagfisk_dir}}/hagfisk
    echo "Restoring SELinux contexts..."
    ssh -t -q {{host}} "sudo restorecon -RF {{hagfisk_dir}}"
    ssh -q {{host}} "systemctl --user daemon-reload"
    echo "Running full re-ingest..."
    ssh {{host}} "cd {{hagfisk_dir}} && ./hagfisk ingest --full"
    echo "Starting service..."
    ssh {{host}} "systemctl --user start hagfisk.service"

# Manual full ingest (assumes service is stopped)
ingest-full:
    ssh {{host}} "cd {{hagfisk_dir}} && ./hagfisk ingest --full"

# Stream logs from remote app
logs-app:
    ssh {{host}} "journalctl --user -u hagfisk -f"

# Show status of app
ps-app:
    ssh {{host}} "systemctl --user status hagfisk.service"

# Stream logs from remote ingest (manual run)
logs-ingest:
    ssh {{host}} "journalctl --user -u hagfisk-ingest -f"

# Show status of ingest
ps-ingest:
    ssh {{host}} "systemctl --user status hagfisk-ingest.service"
