#!/usr/local/bin/cbsd
#v12.1.9
globalconf="${distdir}/cbsd.conf";
CBSDMODULE="build"
MYARG=""
MYOPTARG="ver arch target_arch basename platform"
MYDESC="Remove base dir"
ADDHELP="ver=12.2 for 12.2-RELEASE or ver=13 or ver=. for CURRENT/STABLE.\n"

. ${subrdir}/nc.subr

readconf buildworld.conf

stable=
ostable=
target_arch=
otarget_arch=
platform=
oplatform=
. ${cbsdinit}
[ -n "${target_arch}" ] && otarget_arch="${target_arch}"
[ -n "${platform}" ] && oplatform="${platform}"
. ${system}
. ${subrdir}/universe.subr

if [ "${mod_cbsd_queue_enabled}" = "YES" -a -z "${MOD_CBSD_QUEUE_DISABLED}" ]; then
	readconf cbsd_queue.conf
	[ -z "${cbsd_queue_backend}" ] && MOD_CBSD_QUEUE_DISABLED="1"
fi

# By default ver=current version
over="${ver}"
oarch="${arch}"

. ${subrdir}/build.subr

# auto-determine for stable if stable not specified
strpos --str="${ver}" --search="."
pos=$?
if [ ${pos} -eq 0 ]; then
	stable=1
	ostable=1
else
	stable=0
	ostable=0
fi

. ${subrdir}/build.subr

. ${subrdir}/time.subr
st_time=$( ${DATE_CMD} +%s )

init_supported_arch
init_target_arch

if [ -n "${basename}" ]; then
	init_basedir -b ${basename}
	_basename_args="basename=\"${basename}\""
else
	init_basedir
	_basename_args=
fi

init_srcdir

LOCKFILE=${ftmpdir}/$( ${miscdir}/cbsd_md5 ${MAKEOBJDIRPREFIX} ).lock

# make base lock
echo $$ > ${BASE_DIR_LOCKFILE}

# CBSD QUEUE
if [ "${mod_cbsd_queue_enabled}" = "YES" -a -z "${MOD_CBSD_QUEUE_DISABLED}" ]; then
	[ -n "${cbsd_removebase_queue_name}" ] && ${cbsd_queue_backend} cbsd_queue_name=${cbsd_removebase_queue_name} cmd=removebase id=base${ver}-${arch}-${stable} status=1
fi

if [ ! -d "${BASE_DIR}" ]; then
	[ -n "${oplatform}" ] && platform="${oplatform}"
	unregister_base arch=${arch} ver=${ver} stable=${stable} ${_basename_args} target_arch="${target_arch}" platform="${platform}"

	# CBSD QUEUE
	if [ "${mod_cbsd_queue_enabled}" = "YES" -a -z "${MOD_CBSD_QUEUE_DISABLED}" ]; then
		[ -n "${cbsd_removebase_queue_name}" ] && ${cbsd_queue_backend} cbsd_queue_name=${cbsd_removebase_queue_name} cmd=removebase id=base${ver}-${arch}-${stable} status=2
	fi

	err 1 "${N1_COLOR}No such dir: ${N2_COLOR}${BASE_DIR}${N0_COLOR}"
fi

if on_mounted "${BASE_DIR}"; then
	# CBSD QUEUE
	if [ "${mod_cbsd_queue_enabled}" = "YES" -a -z "${MOD_CBSD_QUEUE_DISABLED}" ]; then
		[ -n "${cbsd_removebase_queue_name}" ] && ${cbsd_queue_backend} cbsd_queue_name=${cbsd_removebase_queue_name} cmd=removebase id=base${ver}-${arch}-${stable} status=2
	fi

	${RM_CMD} -f ${LOCKFILE}
	err 1 "${N1_COLOR}Current dir in use. Please unmount first ${N2_COLOR}${BASE_DIR}${N0_COLOR}:\n$( /sbin/mount | ${GREP_CMD} ^${BASE_DIR} )"
fi

makelock ${LOCKFILE} "cleanup_bases"
[ "${platform}" != "Linux" ] && ${CHFLAGS_CMD} -R noschg ${BASE_DIR}
${RM_CMD} -rf ${BASE_DIR}
[ -n "${oplatform}" ] && platform="${oplatform}"

unregister_base arch=${arch} ver=${ver} stable=${stable} ${_basename_args} target_arch="${target_arch}" platform="${platform}"

[ -r ${BASE_DIR_LOCKFILE} ] && ${RM_CMD} -f ${BASE_DIR_LOCKFILE}

# remove etcupdate bootstrap if exist
[ -d "${srcdir}/src_${ver}/etcupdate" ] && ${RM_CMD} -rf ${srcdir}/src_${ver}/etcupdate
[ -f "${srcdir}/src_${ver}/etcupdate.tgz" ] && ${RM_CMD} -f ${srcdir}/src_${ver}/etcupdate.tgz
[ -d "${srcdir}/src_${ver}" ] && ${RMDIR_CMD} ${srcdir}/src_${ver} > /dev/null 2>&1 || true		# try to remove (empty?) dir

# CBSD QUEUE
if [ "${mod_cbsd_queue_enabled}" = "YES" -a -z "${MOD_CBSD_QUEUE_DISABLED}" ]; then
	[ -n "${cbsd_removebase_queue_name}" ] && ${cbsd_queue_backend} cbsd_queue_name=${cbsd_removebase_queue_name} cmd=removebase id=base${ver}-${arch}-${stable} status=2
fi

end_time=$( ${DATE_CMD} +%s )
diff_time=$(( end_time - st_time ))
diff_time=$( displaytime ${diff_time} )
${ECHO} "${N1_COLOR}${CBSD_APP} done ${N2_COLOR}in ${diff_time}${N0_COLOR}"
