#! /bin/sh

set -e

devices=

if [ -f /etc/default/liso ]
then
	. /etc/default/liso
fi

err=
tmp=$(mktemp -d)
trap 'rm -rf -- "$tmp"; case $err in ?*) echo "$err" >&2; esac' EXIT INT

cp /usr/lib/syslinux/isolinux-quiet.bin "$tmp/isolinux.bin"
cp /etc/liso/isolinux.cfg "$tmp/"

cd /boot

if [ -e vmlinuz ]
then
	cp vmlinuz initrd.img "$tmp/"
elif [ -e /vmlinuz ]
then
	cp /vmlinuz /initrd.img "$tmp/"
else
	read -r vmlinuz <<EOF
$(ls -vr vmlinuz-*)
EOF
	initrd=initrd.img-${vmlinuz#vmlinuz-}
	cp "$vmlinuz" "$tmp/vmlinuz"
	cp "$initrd" "$tmp/initrd.img"
fi

# -quiet isn't. grr.
err=$(genisoimage -quiet -input-charset UTF-8 -r -v -pad -V liso -b isolinux.bin -c isolinux.cat -boot-info-table -boot-load-size 4 -no-emul-boot -o boot.iso "$tmp" 2>&1)
err=

isohybrid -partok boot.iso

for dev in $devices
do
	case $dev in [!/]*)
		dev=/dev/disk/by-id/$dev
	esac
	# noxfer doesn't. grr.
	err=$(dd if=boot.iso of=$dev bs=1M oflag=direct 2>&1)
	err=
done
