#! /bin/sh
set -x

PREREQ=""
DESCRIPTION="Loading preseed file..."

. /scripts/casper-functions

prereqs ()
{
	echo "$PREREQ"
}

case $1 in
# get pre-requisites
    prereqs)
        prereqs
        exit 0
        ;;
esac

. /scripts/lupin-helpers
PRESEED="/preseed.cfg"

find_preseed(){
    preseed_path=
    for x in $(cat /proc/cmdline); do
        case ${x} in
            find_preseed=*)
                preseed_path=${x#find_preseed=}
                ;;
        esac
    done
    find_path "${preseed_path}" || return 1
    return 0
}

fix_preseed(){
    #TBD what follows tries to find Linux devices if preseed is generated from another OS
    #a proper fix should be to find reliable device mappings in the preseed-generator
    
    #Find Linux device of User Folder for importing settings by m-a
    user_folder=$(grep "#UserFolder" ${PRESEED} | sed 's/[[:space:]]*$//')
    user_folder=${user_folder#'#UserFolder='}
    dev=${PRESEED_DEVICE}
    if find_path  "${user_folder}"; then
        dev="${FOUNDDEV}"
    fi    
    dev=${dev#/dev/}
    sed -i "s:MADEVICE:${dev}:g" ${PRESEED}
    
    #Find Linux device of loopinstall folder
    loopinstall_folder=$(grep "#LoopInstallFolder" ${PRESEED} | sed 's/[[:space:]]*$//')
    loopinstall_folder=${loopinstall_folder#'#LoopInstallFolder='}
    dev=${PRESEED_DEVICE}
    if find_path  "${loopinstall_folder}"; then
        dev="${FOUNDDEV}"
    fi
    check_loopinstall_folder ${dev} ${loopinstall_folder} 
    disk="$(echo "$dev" | sed 's/[0-9]*$//')"
    partn=${dev#${disk}} 
    sed -i "s:LIDISK:$disk:g" ${PRESEED}
    sed -i "s:LIPARTITION:$partn:g" ${PRESEED}
}

check_loopinstall_folder(){
    dev=${1}
    loopinstall_folder=${2}
    
    #TBD Check whether LOOPINSTALL_FOLDER is vergin or not
    #Can we install on top of an existing installation?
    #Shall we overwrite? ignore and simply boot the live CD or panic?
    #Do we do the check here or later on?
}

if find_preseed; then
    PRESEED_DEVICE="${FOUNDDEV}"
    PRESEED_FOLDER=$(dirname "${FOUNDPATH}")
    #copy over preseed 
    if [ "${PRESEED%/*}" ]; then
        mkdir -p "${PRESEED%/*}"
    fi
    cp "${FOUNDPATH}" "${PRESEED}"
    if [ -e "${PRESEED_FOLDER}/override_files" ]; then
        cp -a "${PRESEED_FOLDER}/override_files" "${rootmnt}/tmp/"
    fi
    #fix parameters that cannot be set from a non-linux OS
    fix_preseed    
    find_path_cleanup
fi

