#!/bin/bash

set -eu
set -x

# AST2400
PALMETTO_MTD_URL='https://jenkins.openbmc.org/job/ci-openbmc/distro=ubuntu,label=docker-builder,target=palmetto/lastStableBuild/artifact/openbmc/build/tmp/deploy/images/palmetto/obmc-phosphor-image-palmetto.static.mtd'
PALMETTO_MTD="$(basename "$PALMETTO_MTD_URL")"

# AST2500
WITHERSPOON_MTD_URL='https://jenkins.openbmc.org/job/ci-openbmc/distro=ubuntu,label=docker-builder,target=witherspoon/lastStableBuild/artifact/openbmc/build/tmp/deploy/images/witherspoon/obmc-phosphor-image-witherspoon.ubi.mtd'
WITHERSPOON_MTD="$(basename "$WITHERSPOON_MTD_URL")"

# AST2600
TACOMA_WIC_XZ_URL='https://jenkins.openbmc.org/job/ci-openbmc/distro=ubuntu,label=docker-builder,target=witherspoon-tacoma/lastStableBuild/artifact/openbmc/build/tmp/deploy/images/witherspoon-tacoma/obmc-phosphor-image-witherspoon-tacoma.wic.xz'
TACOMA_WIC_XZ="$(basename "$TACOMA_WIC_XZ_URL")"
TACOMA_MMC="$(basename "$TACOMA_WIC_XZ_URL" .xz)"

TACOMA_FITIMAGE_URL='https://jenkins.openbmc.org/job/ci-openbmc/distro=ubuntu,label=docker-builder,target=witherspoon-tacoma/lastStableBuild/artifact/openbmc/build/tmp/deploy/images/witherspoon-tacoma/fitImage-obmc-phosphor-initramfs-witherspoon-tacoma-witherspoon-tacoma'
TACOMA_FITIMAGE="$(basename "$TACOMA_FITIMAGE_URL")"

TACOMA_KERNEL=$(mktemp --suffix .kernel)
TACOMA_DTB=$(mktemp --suffix .dtb)
TACOMA_INITRD=$(mktemp --suffix .initrd)

cleanup() {
    rm -f "$PALMETTO_MTD"
    rm -f "$WITHERSPOON_MTD"
    rm -f "$TACOMA_WIC_XZ" "$TACOMA_MMC"
    rm -f "$TACOMA_FITIMAGE"
    rm -f "$TACOMA_KERNEL" "$TACOMA_DTB $TACOMA_INITRD"
}

trap cleanup EXIT 2

# AST2400
wget "$PALMETTO_MTD_URL"
# shellcheck disable=SC2016 # 'expect' strings
expect \
    -c "spawn qemu-system-arm \
            -M palmetto-bmc \
            -drive file=${PALMETTO_MTD},if=mtd,format=raw \
            -nographic \
            -net nic \
            -net user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:2443-:443,hostname=qemu" \
    -c 'set timeout 120' \
    -c 'expect timeout { exit 1 } "login:"' \
    -c 'spawn sshpass -p 0penBmc
            ssh -o UserKnownHostsFile=/dev/null
                -o StrictHostKeyChecking=no
                -p2222
                root@localhost
                journalctl -b' \
    -c 'expect -i $spawn_id eof'

# AST2500
wget "$WITHERSPOON_MTD_URL"
# shellcheck disable=SC2016 # 'expect' strings
expect \
    -c "spawn qemu-system-arm \
            -M witherspoon-bmc \
            -drive file=${WITHERSPOON_MTD},if=mtd,format=raw \
            -nographic \
            -net nic \
            -net user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:2443-:443,hostname=qemu" \
    -c 'set timeout 120' \
    -c 'expect timeout { exit 1 } "login:"' \
    -c 'spawn sshpass -p 0penBmc
            ssh -o UserKnownHostsFile=/dev/null
                -o StrictHostKeyChecking=no
                -p2222
                root@localhost
                journalctl -b' \
    -c 'expect -i $spawn_id eof'

# AST2600
wget "$TACOMA_WIC_XZ_URL"
unxz "$TACOMA_WIC_XZ"
truncate -s 16G "$TACOMA_MMC"

wget "$TACOMA_FITIMAGE_URL"
dumpimage -T flat_dt -p 0 -o "$TACOMA_KERNEL" "$TACOMA_FITIMAGE"
dumpimage -T flat_dt -p 1 -o "$TACOMA_DTB" "$TACOMA_FITIMAGE"
dumpimage -T flat_dt -p 2 -o "$TACOMA_INITRD" "$TACOMA_FITIMAGE"

# shellcheck disable=SC2016 # 'expect' strings
expect \
    -c "spawn qemu-system-arm -M tacoma-bmc \
            -kernel $TACOMA_KERNEL \
            -dtb $TACOMA_DTB \
            -initrd $TACOMA_INITRD \
            -drive file=${TACOMA_MMC},if=sd,format=raw,index=2 \
            -net nic \
            -net user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:2443-:443,hostname=qemu \
            -nographic \
            -append \"console=ttyS4,115200n8 rootwait root=PARTLABEL=rofs-a\"" \
    -c 'set timeout 120' \
    -c 'expect timeout { exit 1 } "login:"' \
    -c 'spawn sshpass -p 0penBmc
            ssh -o UserKnownHostsFile=/dev/null
                -o StrictHostKeyChecking=no
                -p2222
                root@localhost
                journalctl -b' \
    -c 'expect -i $spawn_id eof'
