#!/bin/sh
#
# The Vyatta Autoinstall generator temporarily redirects default.target to
# vyatta-autoinstall.target, if an unattended installation is requested
# through the kernel command line.
#
# Also see SYSTEMD.GENERATOR(7)
#

set -e

if ! grep -qs vyatta-autoinstall /proc/cmdline
then
    exit 0
fi

NORMAL_DIR="${1:-/tmp}"
EARLY_DIR="${2:-/tmp}"

# temporarily change boot target
mkdir -p "${NORMAL_DIR}"
ln -fs "/lib/systemd/system/vyatta-autoinstall.target" \
   "${NORMAL_DIR}/default.target"

# temporarily prevent configd from starting serial consoles
ln -fs "/dev/null" "${EARLY_DIR}/serial-getty@.service"

read -r CMDLINE </proc/cmdline

# Reading kernel command line
for _PARAMETER in ${CMDLINE}
do
    case "${_PARAMETER}" in
        vyatta-autoinstall|vyatta-autoinstall=*)
            VYATTA_AUTOINSTALL_URL=$(echo "${_PARAMETER}" | \
		sed -ne 's/vyatta-autoinstall=\([^ ]*\).*/\1/p')
            ;;
        vyatta-autoinstall.debug|vyatta-autoinstall.debug=*)
            VYATTA_AUTOINSTALL_DEBUG="true"
            VYATTA_AUTOINSTALL_URL=$(echo "${_PARAMETER}" | \
		sed -ne 's/vyatta-autoinstall.debug=\([^ ]*\).*/\1/p')

            ;;
    esac
done

OVERRIDE_DIR="${NORMAL_DIR}/vyatta-autoinstall.service.d"

mkdir -p "${OVERRIDE_DIR}"
cat > "${OVERRIDE_DIR}"/environment.conf <<EOF
# Automatically generated by vyatta-autoinstall-generator

[Service]
Environment="VYATTA_AUTOINSTALL_ARGS=${VYATTA_AUTOINSTALL_URL:+-c ${VYATTA_AUTOINSTALL_URL}} -r auto -y"
Environment="VYATTA_AUTOINSTALL_DEBUG=${VYATTA_AUTOINSTALL_DEBUG}"
EOF

if [ "$VYATTA_AUTOINSTALL_DEBUG" == "true" ];
then
    cat > "${OVERRIDE_DIR}"/debug.conf <<EOF
# Automatically generated by vyatta-autoinstall-generator

[Service]
ExecStart=-/bin/sh -c "/sbin/sulogin --force"
EOF
fi
