set dotenv-load := true

remote_user := env('SOUNDCORE_DEVICE_FAKER_REMOTE_USER')
remote_host := env('SOUNDCORE_DEVICE_FAKER_REMOTE_HOST')
remote_path := "~/soundcore-device-faker"
log_level := "INFO"

# hci-socket:0 for raspberry pi, or usb:0 for usb bluetooth adapter

remote_transport_spec := env('SOUNDCORE_DEVICE_FAKER_REMOTE_TRANSPORT_SPEC')

alias fmt := format
format:
    ruff format

lint:
    ruff check

sync-remote:
    rsync -rlptvh . {{ remote_user }}@{{ remote_host }}:{{ remote_path }} --include="**.gitignore" --exclude="/.git" --filter=":- .gitignore" --delete-after

sync-remote-watch: sync-remote
    #!/usr/bin/env bash
    while inotifywait -r -e modify,create,delete .; do
        just sync-remote
    done

init-remote: sync-remote
    #!/usr/bin/env bash
    set -euxo pipefail
    ssh -t {{ remote_user }}@{{ remote_host }} <<EOF
    cd {{ remote_path }}

    if [ ! -d venv ]; then
        echo creating venv
        python3 -m venv venv
    fi

    echo activating venv
    source ./venv/bin/activate

    echo installing dependencies
    pip install .
    EOF

run-remote device:
    #!/usr/bin/env bash
    set -euxo pipefail
    ssh -tt {{ remote_user }}@{{ remote_host }} <<'EOF'
    cd {{ remote_path }}
    sudo capsh \
        --caps="cap_net_admin+eip cap_setpcap,cap_setuid,cap_setgid+ep" \
        --keep=1 \
        --user="$USER" \
        --addamb=cap_net_admin \
        -- -c "source ./venv/bin/activate && LOG_LEVEL={{ log_level }} ./main.py {{ remote_transport_spec }} ./devices/{{ device }}.toml"
    EOF
