#!/bin/bash
set -e

if [ "$1" = "configure" ]; then
    # --- 1. Base-Files / Dist-Backups ---
    if [ -f /etc/issue ] && [ ! -f /etc/issue.dist ]; then
        mv /etc/issue /etc/issue.dist
        mv /etc/issue.net /etc/issue.net.dist
        mv /usr/lib/os-release /usr/lib/os-release.dist
    fi
    cp -af /usr/share/tuxedo-base-files/create_boot_uki_base.sh /usr/sbin/
    chmod +x /usr/sbin/create_boot_uki_base.sh

    if [ -f /etc/motd ] && [ ! -f /etc/motd.dist ]; then
        mv /etc/motd /etc/motd.dist
    fi

    cp -af /usr/share/tuxedo-base-files/issue /etc/issue
    cp -af /usr/share/tuxedo-base-files/issue.net /etc/issue.net
    cp -af /usr/share/tuxedo-base-files/os-release /usr/lib/os-release
    cp -af /usr/share/tuxedo-base-files/motd /etc/motd

    mkdir -p /etc/initramfs-tools/conf.d/
    cp -af /usr/share/tuxedo-base-files/01-tuxedo /etc/initramfs-tools/conf.d/
    cp -af /usr/share/tuxedo-base-files/tuxedo.info /usr/share/python-apt/templates/tuxedo.info
    if [ -f /usr/share/tuxedo-base-files/99tuxedo-changelogs ]; then
	cp -af /usr/share/tuxedo-base-files/99tuxedo-changelogs /etc/apt/apt.conf.d/99tuxedo-d-changelogs
    fi

    # --- 2. GRUB-Divert & Wrapper Logik ---
    if ! ischroot; then
        # 1. System-Checks: Kein separates /boot UND FDE (LUKS) vorhanden
        if ! findmnt -M "/boot" >/dev/null 2>&1; then
	    ROOT_SOURCE=$(findmnt -n -o SOURCE /)
	    ROOT_DEV=$(printf '%s\n' "$ROOT_SOURCE" |sed 's/\[.*$//')
	    ROOT_DEV=$(readlink -f "$ROOT_DEV")
	    LUKS_RAW_UUID=$(lsblk -s -n -o FSTYPE,UUID "$ROOT_DEV" | awk '$1=="crypto_LUKS" {print $2; exit}')

            if [ -n "$LUKS_RAW_UUID" ]; then
                # Divert einrichten
                if [ ! -f /usr/sbin/grub-install.real ]; then
                    echo "==> Diverting original grub-install to grub-install.real..."
                    dpkg-divert --package tuxedo-base-files --add --rename \
                        --divert /usr/sbin/grub-install.real /usr/sbin/grub-install
                fi

                # Wrapper installieren
                if [ -f /usr/share/tuxedo-base-files/grub-install ]; then
                    echo "==> Installing custom Tuxedo grub-install wrapper..."
                    cp -af /usr/share/tuxedo-base-files/grub-install /usr/sbin/grub-install
                    chmod +x /usr/sbin/grub-install

                    # install localized grub
		    if [ -d "/boot/efi/EFI/TUXEDO" ] && find /boot/efi/EFI/TUXEDO/ -maxdepth 1 -name "grubx64.efi.bak-*" | grep -q .; then
			: # Backup already exists; skip reinstalling to avoid unnecessary churn
		    else
                	/usr/share/tuxedo-base-files/grub-install
		    fi
                else
                    echo "ERROR: /usr/share/tuxedo-base-files/grub-install not found!" >&2
                    exit 1
                fi

                # 2. Standalone UKI-Generierung
            	UKI_FILE="/boot/efi/EFI/BOOT/TUX.EFI"
		if [ -f "${UKI_FILE}" ] && [ -s "${UKI_FILE}" ]; then
		    echo "==> UKI Image already exists: ${UKI_FILE}"
		    OLD_HOOK_PATH="/etc/kernel/postinst.d/zz-tuxedo-uki"
		    if [ -f "$OLD_HOOK_PATH" ]; then
			echo "==> Building UKI Image via base scrip..."
			/usr/share/tuxedo-base-files/create_boot_uki_base.sh
		    fi
		else
            	    echo "==> Building UKI Image via base script..."
		    /usr/share/tuxedo-base-files/create_boot_uki_base.sh
		fi
		if ! grep -q "latest_kernel" /etc/initramfs/post-update.d/zz-tuxedo-uki; then
		    cp -af /usr/share/tuxedo-base-files/zz-tuxedo-uki /etc/initramfs/post-update.d/zz-tuxedo-uki
		fi
            fi
        fi
    fi
fi

#DEBHELPER#

exit 0
