#!/bin/bash

# ------------------------------------------------------------------------------
# Configurations
# ------------------------------------------------------------------------------
export IMG="${1}"
export LC_ALL=POSIX

RETCODE=0

: ${DIST=fc14}

if [ "${VERBOSE}" -ge 2 -o "${DEBUG}" == "1" ]; then
    set -x
else
    set -e
fi

. ./builder_setup >/dev/null
. ./umount_kill.sh >/dev/null

if ! [ $# -eq 1 ]; then
    echo "usage ${0} <img_file_name>"
    exit
fi

if [ "${VERBOSE}" == "1" ]; then
    export YUM_OPTS="${YUM_OPTS} -q"
fi

# ------------------------------------------------------------------------------
# Make sure INSTALLDIR exists
# ------------------------------------------------------------------------------
export INSTALLDIR="$(readlink -m mnt)"
mkdir -p "${INSTALLDIR}"

# ------------------------------------------------------------------------------
# Prepare for mount
# ------------------------------------------------------------------------------
echo "-> Preparing instalation of ${DIST} template..."
"${SCRIPTSDIR}/00_prepare.sh"

# ------------------------------------------------------------------------------
# Mount image and install core OS
# ------------------------------------------------------------------------------
if [ -f "${IMG}" ]; then
    echo "-> Image file already exists, assuming *update*..."
else
    echo "-> Initializing empty image..."
    truncate -s 10G "${IMG}" || exit 1

    echo "-> Creating filesystem..."
    mkfs.ext4 -q -F "${IMG}" || exit 1
fi

mount -o loop "${IMG}" "${INSTALLDIR}" || exit 1
trap "umount_kill $(readlink -m ${INSTALLDIR})" EXIT
"${SCRIPTSDIR}/01_install_core.sh"

# ------------------------------------------------------------------------------
# Install package groups
# ------------------------------------------------------------------------------
echo "-> Installing package groups..."
"${SCRIPTSDIR}/02_install_groups.sh"

# ------------------------------------------------------------------------------
# Cleanup
# ------------------------------------------------------------------------------
trap - EXIT

echo "-> Unmounting prepared_image..."
umount_kill "$(readlink -m ${INSTALLDIR})" || true

exit ${RETCODE}