#!/bin/sh
# Installer der ISO auf tty1. Mit bashclub.config=<URL> auf der Kernel-
# Befehlszeile unbeaufsichtigt (Konfiguration laden, installieren, ausschalten).
share=/usr/share/bashclub-install
cfg=/run/bashclub-install/install.yaml
log=/var/log/bashclub-install.log
mkdir -p /run/bashclub-install

# Markenfarben auf die Konsolenpalette legen (nur Linux-Konsole, nicht seriell),
# aus product.env (CONSOLE_PALETTE), bei bashclub OS: 0 black #2a2c30,
# 3 brown #f07d1a, 4 blue #3b3e44, 7 lightgray #b8bbc0
CONSOLE_PALETTE=""
# shellcheck disable=SC1091 # liegt auf der ISO
. "$share/product.env"
# Kernel-Meldungen nicht auf die Konsole (z. B. WLAN-Treiber beim Verbinden),
# sie überschreiben sonst die Dialoge; im Journal und in dmesg bleiben sie
dmesg -n 1 2>/dev/null || true

if [ "$(tty)" = /dev/tty1 ]; then
	# Große Schrift bei hoher Auflösung (sonst ist der Assistent winzig);
	# FONTSIZE für das installierte System misst der Installer selbst
	# shellcheck disable=SC2046
	setfont $(bashclub-install font) 2>/dev/null || true
	for color in $CONSOLE_PALETTE; do
		printf '\033]P%s%s' "${color%%=*}" "${color#*=}"
	done
	printf '\033[0;37;40m\033[2J\033[H'
fi

# Nach der Installation direkt über den Kernel ausschalten bzw. neu starten:
# Das Live-System bleibt sonst nach „Reached target poweroff“ stehen. Sicher,
# weil die Pools exportiert sind und das Live-System nichts zu sichern hat.
power() { # o = aus, b = Neustart
	sync
	sleep 2
	echo "$1" >/proc/sysrq-trigger
}

# Menüeintrag „bashclub-Schlüssel einschreiben“: vormerken, neu starten; shim
# zeigt dann den MokManager (aus GRUB gestartet war er verzerrt)
if grep -q 'bashclub\.mok=import' /proc/cmdline; then
	bashclub-install mok
	[ $? -eq 11 ] && power b
fi

url=$(sed -n 's/.*bashclub\.config=\([^ ]*\).*/\1/p' /proc/cmdline)
if [ -n "$url" ]; then
	exec >/dev/console 2>&1
	echo "bashclub-install: unbeaufsichtigt mit $url"
	for _ in $(seq 30); do curl -fsS -o "$cfg" "$url" && break; sleep 2; done
	if bashclub-install install "$cfg" --packages "$share/packages" --log "$log"; then
		echo "bashclub-install: FERTIG"
		power o
	else
		echo "bashclub-install: FEHLGESCHLAGEN"
		tail -30 "$log"
	fi
	exit 0
fi

while :; do
	bashclub-install tui --packages "$share/packages" --log "$log" --output "$cfg"
	case $? in
	0 | 11) power b ;;
	*) clear; bash -l ;;
	esac
done
