#!/usr/bin/env bash
set -euo pipefail
source "$(dirname "$0")/_beagle-racket"

if [[ $# -lt 2 ]]; then
    echo "usage: beagle-fields <RecordName> <file-or-dir> ..." >&2
    exit 2
fi

# Route through daemon if running
PORTFILE="${BEAGLE_DAEMON_PORTFILE:-/var/tmp/beagle-daemon.port}"
if [[ -f "$PORTFILE" ]]; then
    port=$(cat "$PORTFILE")
    if (exec 3<>/dev/tcp/127.0.0.1/"$port") 2>/dev/null; then
        exec 3<>/dev/tcp/127.0.0.1/"$port"
        echo "fields $*" >&3
        read -r response <&3
        exec 3>&-
        echo "$response" | python3 -c "
import json, sys
data = json.load(sys.stdin)
if not data.get('ok'):
    print(data.get('error', 'unknown error'), file=sys.stderr); sys.exit(1)
for r in data.get('results', []):
    print(r['record'])
    for f in r.get('fields', []):
        print(f'  {f[\"name\"]} : {f[\"type\"]}    accessor: {f[\"accessor\"]}')
"
        exit 0
    fi
fi

"$RACKET" -e "(require beagle/private/query) (run-query (cons \"fields\" (vector->list (current-command-line-arguments))))" -- "$@"
