post_install() {
  local theme_name="parch-grub-theme"
  local src="/usr/share/grub/themes/${theme_name}"
  local dst="/boot/grub/themes/${theme_name}"

  echo "Activating ${theme_name}..."

  mkdir -p "${dst}/icons"

  for f in \
    theme.txt background.png logo.png \
    unifont-16.pf2 \
    din2014_regular_18.pf2 din2014_regular_20.pf2 din2014_regular_23.pf2 \
    terminus-14.pf2 terminus-16.pf2 \
    select_w.png select_c.png select_e.png; do
    if [ -f "${src}/$f" ]; then
      cp "${src}/$f" "${dst}/"
    fi
  done

  cp -r "${src}/icons/"*.png "${dst}/icons/"

  if grep -q "^GRUB_THEME=" /etc/default/grub; then
    sed -i "s|^GRUB_THEME=.*|GRUB_THEME=\"${dst}/theme.txt\"|" /etc/default/grub
  else
    echo "GRUB_THEME=\"${dst}/theme.txt\"" >> /etc/default/grub
  fi

  if ! grep -q "^GRUB_GFXMODE=" /etc/default/grub; then
    echo "GRUB_GFXMODE=1920x1080" >> /etc/default/grub
  fi

  local font_loader="/etc/grub.d/09_parch_theme"
  cat > "${font_loader}" << 'EOF'
#!/bin/sh
for f in unifont-16.pf2 terminus-14.pf2 terminus-16.pf2 din2014_regular_18.pf2 din2014_regular_20.pf2 din2014_regular_23.pf2; do
  echo "loadfont /boot/grub/themes/parch-grub-theme/$f"
done
EOF
  chmod +x "${font_loader}"

  if command -v grub-mkconfig > /dev/null 2>&1; then
    grub-mkconfig -o /boot/grub/grub.cfg
  elif command -v update-grub > /dev/null 2>&1; then
    update-grub
  fi
}

post_upgrade() {
  post_install
}

pre_remove() {
  local theme_name="parch-grub-theme"
  local dst="/boot/grub/themes/${theme_name}"

  echo "Deactivating ${theme_name}..."

  rm -rf "${dst}"

  sed -i '/^GRUB_THEME=/d' /etc/default/grub

  rm -f /etc/grub.d/09_parch_theme

  if command -v grub-mkconfig > /dev/null 2>&1; then
    grub-mkconfig -o /boot/grub/grub.cfg
  elif command -v update-grub > /dev/null 2>&1; then
    update-grub
  fi
}
