#!/usr/local/bin/cbsd
#v10.1.5
CBSDMODULE="helpers"
MYARG="devs mnt pool"
MYOPTARG="arch ver swap quiet srcdata url raid ext_populate"
MYDESC="mfsBSD ZFS install script"
ADDHELP="ext_populate - path to external script for populate \$mnt\n\
devs - comma-separated disk list: ada0,ada1\n
raid - raidz|mirror\n"
EXTHELP="modules/pkg.d"

# ${_MYDIR}/zfsinstall -u /usr/freebsd-dist ${DSKARG} -p zroot -m ${MPT}

. ${subrdir}/nc.subr

. ${cbsdinit}

. ${system}

# store original
over="${ver}"
oarch="${arch}"

# get default jailskeldir
readconf jail-freebsd-default.conf

#defines
_MYDIR=$( /usr/bin/dirname `${REALPATH_CMD} $0` )
noname=0
raidz=

set -e
	. ${_MYDIR}/zfsinstall.subr
set +e

if [ -n "${srcdata}" ]; then
	[ ! -d "${srcdata}" ] && err 1 "${N1_COLOR}No such srcdata: ${N2_COLOR}${srcdata}${N0_COLOR}"
fi

if [ -z "${ext_populate}" ]; then
	# for populate_freebsd_world
	data="${mnt}"
	baserw=1
	applytpl=1
fi

[ -z "${quiet}" ] && quiet="0"

SWAP_ARG=""
RAID_ARG=""

[ -n "${swap}" -a "${swap}" != "0" ] && SWAP_ARG="-s ${swap}"
[ -n "${raid}" ] && RAID_ARG="-r ${raid}"

if [ -z "${ext_populate}" ]; then
	readconf buildworld.conf
	. ${subrdir}/universe.subr
	. ${subrdir}/freebsd_world.subr

	. ${subrdir}/build.subr

	init_target_arch
	init_srcdir
	init_supported_arch
	init_basedir
	init_kerneldir

	[ -z "${ver}" ] && ver=$( ${SYSCTL_CMD} -n kern.osrelease| ${CUT_CMD} -d - -f 1 )
	get_base -v ${ver}
fi

# still no BASE?
if [ ! -x ${BASE_DIR}/bin/sh ]; then
	err 1 "${N1_COLOR}zfsinstall: no such base dir: ${N2_COLOR}${BASE_DIR}${N0_COLOR}"
fi

OPTS="-d \"${devs}\" -p ${pool} -m ${mnt} ${SWAP_ARG} ${RAID_ARG}"
[ -n "${url}" ] && OPTS="${OPTS} -u ${url}"

[ ! -d "${mnt}" ] && mkdir -p ${mnt}

echo zfsinstall_run ${OPTS}
zfsinstall_run ${OPTS}
