#!/bin/bash
set -eu

panic() {
  echo "error: $1" >&2
  exit 1
}

usage() {
  echo "Usage: $0 <extra-directory> <image-mountpoint> <images-dir> <host-type>" >&2
  exit 1
}

[ $# -eq 4 ] || usage

extra_directory="$1"
image_mountpoint="$2"
images_dir="$3"
hosttype="$4"

addons_dir="${images_dir}/boot/addons"
boot_directory="${image_mountpoint}/boot"

[ -d "$boot_directory" ] || panic "boot directory '$boot_directory' does not exist"

if ! mkdir -p "$extra_directory"; then
  panic "failed to create the extra directory '${extra_directory}'"
fi

# Install the host type specific command-line
cp "${boot_directory}/addons/${hosttype}.addon.efi" \
   "${extra_directory}/commandline.addon.efi.tmp"

# Install device-specific addons
if [ -d "${addons_dir}" ]; then
  for addon in "${addons_dir}"/*.addon.efi; do
    [ -f "$addon" ] || continue
    cp "$addon" "${extra_directory}/$(basename "$addon").tmp"
  done
fi

# Atomically rename all temporary files into place
rename -f 's/\.tmp$//' "${extra_directory}"/*.tmp
