#!/bin/bash

set -eu

igconf isy image_idp_enable || exit 0

opts=()
pmap_installed=false

pmap="${IGconf_image_outputdir}/provisionmap.json"

# Validate an installed Provisioning Map against its schema
if [ -f "$pmap" ] ; then
   pmap --schema "$IGconf_image_pmap_schema" --file "$pmap" ||
      die "IDP: Installed Provisioning Map failed validation."
   pmap_installed=true
   opts+=('-m' "$pmap")
else
   warn "IDP: No Provisioning Map installed. Raspberry Pi provisioning flow unsupported."
fi

# Only genimage output is supported for IDP flow
if [ "${IGconf_image_provider:-}" = "genimage" ] && [ -f ${1}/genimage.cfg ] ; then
   image2json -g ${1}/genimage.cfg "${opts[@]}" > ${1}/image.json ||
      die "IDP: Doc generation failed."

   # Validate IDP doc against IDP schema
   pmap --schema "$IGconf_image_idp_schema" --file "${1}/image.json" ||
      die "IDP: Image Description Provisioning doc failed validation."

   # Validate spliced PMAP within the IDP doc against the PMAP schema
   if $pmap_installed ; then
      pmap --schema "$IGconf_image_pmap_schema" --file "${1}/image.json" ||
         die "IDP: Merged PMAP failed validation."
   fi
fi

msg "IDP: Description written to ${1}/image.json"
