#!/bin/sh

PROG="${0##*/}"

. shell-error

exit_handler()
{
    local rc=$?
    trap - EXIT
    [ -n  "$TEMPDIR" ] && rm -rf "$TEMPDIR"
    [ -n "$LOCKDIR" ] && rm -rf "$LOCKDIR"
    exit $rc
}

usage()
{
    printf 'Usage: %s <template-dir>\n' "$PROG"
    exit 0
}

[ "$#" -eq 1 ] || usage
[ -d "$1" ] || usage

[ "$UID" -ne 0 ] || exec su -s /bin/sh -l _mkai -c "/usr/sbin/mkai $1"

LOCKDIR="$HOME/mkai.lock"
mkdir "$LOCKDIR" || fatal "already run"

trap exit_handler HUP INT QUIT TERM EXIT

TEMPDIR="$(mktemp -d -t mkai.XXXXXX)"
TEMPLATEDIR=/etc/mkai/template

cp -a "$TEMPLATEDIR"/* "$TEMPDIR"

mkdir -p -- "$TEMPDIR/isofiles/isolinux/pxelinux.cfg"
mkdir -p -- "$TEMPDIR/isofiles/Metadata"
mkdir -p -- "$TEMPDIR/base"

[ -s "$1/pxelinux.cfg" ] && cp -f "$1/pxelinux.cfg" "$TEMPDIR/isofiles/isolinux/pxelinux.cfg/default"
[ -s "$1/autoinstall.scm" ] && cp -f "$1/autoinstall.scm" "$TEMPDIR/isofiles/Metadata/autoinstall.scm"
[ -s "$1/vm-profile.scm" ] && cp -f "$1/vm-profile.scm" "$TEMPDIR/isofiles/Metadata/vm-profile.scm"
[ -s "$1/packages" ] && cp -f "$1/packages" "$TEMPDIR/base/packages"

spt -v "/var/lib/mkai" -p "$TEMPDIR"
