#!/bin/sh
set -eu
PREFIX=/var/run/incus_agent

mkdir -p "${PREFIX}/.mnt"

# Functions.
mount_9p() {
    kldload virtio_p9fs >/dev/null 2>&1 || true
    mount -t p9fs -o ro agent "${PREFIX}/.mnt" >/dev/null 2>&1
}

fail() {
    echo "$1, failing"
    exit 1
}

# Mount the agent share.
mount_9p || fail "Couldn't mount 9p, failing."

# Transfer the agent binary.
rm -f "${PREFIX}/incus-agent"
cp -a "${PREFIX}/.mnt/incus-agent.freebsd.$(uname -m)" "${PREFIX}/incus-agent"
chown root:wheel "${PREFIX}/incus-agent"

# Unmount the temporary mount.
umount "${PREFIX}/.mnt"
rmdir "${PREFIX}/.mnt"

# Re-exec the agent.
exec "${PREFIX}/incus-agent" "$@"
