#!/bin/sh

set -e

cd /tmp

# extract. BSD tar auto recognises compression, unlike GNU tar
# only if stdin is a tty, if so need files volume mounted...
test -t 0 || bsdtar xzf -

setvar TGZ = "$(find . -name '*.tgz' -or -name '*.tar.gz')"
test -n $TGZ && bsdtar xzf $TGZ

setvar EFI_ISO = "$(find . -name '*efi.iso')"
setvar ISO = "$(find . -name '*.iso')"
setvar RAW = "$(find . -name '*.raw')"
setvar INITRD = "$(find . -name '*.img')"
setvar KERNEL = "$(find . -name vmlinuz64 -or -name '*bzImage')"
setvar CMDLINE = "$(find . -name '*-cmdline')"

if test -n $EFI_ISO
{
	setvar ARGS = ""-pflash /usr/share/ovmf/bios.bin -usbdevice tablet -cdrom $EFI_ISO -boot d -drive file=systemdisk.img,format=raw""
} elif test -n $ISO
{
	setvar ARGS = ""-cdrom $ISO -drive file=systemdisk.img,format=raw""
} elif test -n $RAW
{
	# should test with more drives
	setvar ARGS = ""-drive file=$RAW,format=raw""
} elif test -n $KERNEL
{
	setvar ARGS = ""-kernel $KERNEL""
	if test -n $INITRD
	{
		setvar ARGS = ""$ARGS -initrd $INITRD""
	}
	setvar ARGS = ""$ARGS -drive file=systemdisk.img,format=raw""
} else {
	echo "no recognised boot media" >2
	exit 1
}

echo $ARGS | grep -q systemdisk && qemu-img create -f raw systemdisk.img 256M

if test -n ${CMDLINE}
{
	setvar APPEND = "$(cat $CMDLINE)"
} else {
	setvar APPEND = ""$[join(ARGV)]""
}
if test -z ${APPEND}
{
	setvar APPEND = ""console=ttyS0""
}

if test -z $EFI_ISO && test -z $ISO
{
	setvar ARGS = ""-append \"${APPEND}\" ${ARGS}""
}

eval qemu-system-x86_64 -machine q35,accel=kvm:tcg -device virtio-rng-pci -nographic -vnc none -m 1024 $ARGS