#!/bin/bash
set -euo pipefail
checkpoint=/storage/.mykos-checkpoint
if [[ -f "$checkpoint/restore.request" ]]; then
    [[ -f "$checkpoint/memory.gz" && ! -L "$checkpoint/memory.gz" ]] || { echo 'Missing VM memory checkpoint' >&2; exit 1; }
    grep -q '^\. finish.sh' /run/entry.sh || { echo 'Unsupported VM entry script' >&2; exit 1; }
    cat > /run/mykos-checkpoint-load <<'LOAD'
#!/bin/bash
set -euo pipefail
exec gzip -dc /storage/.mykos-checkpoint/memory.gz
LOAD
    chmod 0700 /run/mykos-checkpoint-load
    cat > /run/mykos-checkpoint-restore <<'RESTORE'
# Loaded after the image has constructed its complete QEMU arguments.
ARGS+=" -incoming exec:/run/mykos-checkpoint-load -S"
waitForBoot() { return 0; }
RESTORE
    sed -i '/^\. finish.sh/a\ . /run/mykos-checkpoint-restore' /run/entry.sh
    sed -i 's/Booting /Restoring checkpoint for /g' /run/entry.sh
    # One-shot restore: later container starts boot its current disks normally.
    mv "$checkpoint/restore.request" "$checkpoint/restore.consumed"
fi
exec /run/entry.sh
