#!/bin/sh
# One read-only peer-list command for Goblin Modem and Inkline Outpost.
set -eu
usage() {
    printf '%s\n' 'Usage: gotenna-peers' \
        'List discovered mesh names, IPv6/IPv4 addresses, hops and connection roles.' \
        'For goTenna Mesh radios using Goblin Modem or Inkline Outpost.' \
        'Reads the running radio controller; does not connect or probe peers.' \
        '' \
        'goTenna and goTenna Mesh are trademarks of goTenna, Inc.' \
        'These independent projects are not affiliated with or endorsed by goTenna, Inc.'
}
case "$#:${1:-}" in
    0:) ;;
    1:-h|1:--help) usage; exit 0;;
    *) usage >&2; exit 2;;
esac

# Resolve installer symlinks on macOS as well as Linux, without readlink -f.
self=$0
case "$self" in */*) ;; *) self=$(command -v "$self");; esac
while [ -L "$self" ]; do
    target=$(readlink "$self")
    case "$target" in
        /*) self=$target;;
        *) self=$(dirname "$self")/$target;;
    esac
done
base=$(CDPATH= cd -- "$(dirname "$self")" && pwd)

if [ -x "$base/gotenna-data" ]; then
    exec "$base/gotenna-data" peers
fi
for driver in "$base/goblin-radio" "$base/../build/goblin-radio"; do
    if [ -x "$driver" ]; then
        exec "$driver" ctl peers
    fi
done
printf '%s\n' 'gotenna-peers: Install Goblin Modem or the Inkline Outpost bundle first.' >&2
exit 1
