#!/usr/local/bin/cbsd
#v10.0.4
globalconf="${workdir}/cbsd.conf";
CBSDMODULE="bhyve"
MYARG="jname"
MYOPTARG="mode"
MYDESC="Configure for jail"
ADDHELP="mode=list for list of jails external command\n"
EXTHELP="wf_jconfig.html"

set -e
. ${globalconf}
set +e

. ${subr}
. ${strings}
. ${tools}

[ -z "${1}" ] && select_jail_by_list -s "List of local VMs" -e bls -a "Off|On"
# -a "Off" -e bls -r 1
#[ -z "$jname" ] && select_jail_by_list -s "List of online VMs" -a "On" -e bls -r ${sqlreplica}

init $*

shift  # todo: jname and cmd may have reverse order

. ${jrcconf}
[ $? -eq 1 ] && log_err 1 "${MAGENTA}No such jail: ${GREEN}${jname}${NORMAL}"
[ "${emulator}" != "bhyve" ] && log_err 1 "${MAGENTA}Only for bhyve type VMs${NORMAL}"

CMDDIR="${jailsysdir}/${jname}/bin/"

if [ "${mode}" = "list" ]; then
	${ECHO} "${MAGENTA}Configure command available: ${GREEN}jconfig jname=${jname} <cmd>:${NORMAL}"
	[ -d "${CMDDIR}" ] && find ${CMDDIR} -type f -depth 1 -maxdepth 1 -exec basename {} \;
	exit 0
fi

[ -z "${cmd}" ] && cmd=${1}

shift
cfgargs="$@"

if [ -z "${cmd}" ]; then
	bsetup-tui jname=${jname} vm_ram vm_cpus vm_hostbridge astart ip4_addr vm_boot vm_iso_path vm_efi vm_console vm_vnc_port protected hidden \
	bhyve_generate_acpi bhyve_wire_memory bhyve_rts_keeps_utc bhyve_force_msi_irq bhyve_x2apic_mode bhyve_mptable_gen bhyve_ignore_msr_acc \
	cd_vnc_wait bhyve_vnc_resolution bhyve_vnc_tcp_bind vnc_password bhyve_vnc_vgaconf vm_cpu_topology bhyve_flags
elif [ -f "${CMDDIR}${cmd}" ]; then
	. ${CMDDIR}${cmd}
	myconf ${cfgargs}
fi
