#!/usr/local/bin/cbsd
CBSDMODULE="xen"
MYARG="jname"
MYOPTARG="mode"
MYDESC="Configure XEN domain"
ADDHELP="\
 mode=list for list of jails external command\n\
"
EXTHELP="wf_jconfig"

. ${subrdir}/nc.subr
. ${tools}	# select_jail_by_list

[ -z "${1}" ] && select_jail_by_list -s "List of local VMs" -e xls -a "Off|On"

. ${cbsdinit}

shift  # todo: jname and cmd may have reverse order

. ${subrdir}/rcconf.subr
[ $? -eq 1 ] && log_err 1 "${N1_COLOR}no such vm: ${N2_COLOR}${jname}${N0_COLOR}"
[ "${emulator}" != "xen" ] && log_err 1 "${N1_COLOR}only for xen type VMs${N0_COLOR}"

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

if [ "${mode}" = "list" ]; then
	${ECHO} "${N1_COLOR}Configure command available: ${N2_COLOR}xconfig jname=${jname} <cmd>:${N0_COLOR}"
	[ -d "${CMDDIR}" ] && ${FIND_CMD} ${CMDDIR} -mindepth 1 -maxdepth 1 -type f -exec ${BASENAME_CMD} {} \;
	exit 0
fi

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

shift
cfgargs="$@"

if [ -z "${cmd}" ]; then
	myargs="vm_ram vm_cpus astart ip4_addr vm_boot vm_iso_path vm_vnc_port protected hidden \
	cd_vnc_wait xen_vnc_resolution xen_vnc_tcp_bind vnc_password on_poweroff on_reboot on_crash \
	spice_default xen_spice_tcp_bind xen_spice_resolution spice_password soundhw debug_engine \
	xen_hap xen_nestedhvm"

	sorted_myargs=$( for i in ${myargs}; do
		echo ${i}
	done | ${SORT_CMD} -n )

	xsetup-tui jname=${jname} ${myargs}
elif [ -f "${CMDDIR}${cmd}" ]; then
	. ${CMDDIR}${cmd}
	myconf ${cfgargs}
fi

exit 0
