#!/bin/bash
#
# Script for merging SMBIOS information into Clover
#
# Copyright (C) tonymacx86 LLC
#
#	$1 = SMBIOS source plist to merge
#	$2 = Destination folder containing config.plist
#	$3 = SMBIOS model to generate serial number for
#	$4 = Python serial number generator script
#

SMBIOS_PLIST="${1}"
DESTINATION="${2}" # Ignore passed value for now
SMBIOS_MODEL="${3}"
SERIAL_GENERATOR="${4}"

CLOVER_EFI="/Volumes/EFI"
CLOVER_ESP="/Volumes/ESP"

CLOVER_PATH="False"

if [ -d ${CLOVER_EFI} ] && [ ! -d ${CLOVER_ESP} ] ; then
			CLOVER_PATH=${CLOVER_EFI}
		else if [ -d ${CLOVER_ESP} ] && [ ! -d ${CLOVER_EFI} ] ; then
			CLOVER_PATH=${CLOVER_ESP}
		else if [ ${CLOVER_PATH} = "False" ] ; then
				echo -e "\n!!! EFI volume not found exiting !!!\n\n"
			exit 1
		fi
	fi
fi

DESTINATION="${CLOVER_PATH}/EFI/CLOVER"

NEW_SERIAL=$("${SERIAL_GENERATOR}" "${SMBIOS_MODEL}")

if cp "${SMBIOS_PLIST}" "${DESTINATION}"; then
	cd "${DESTINATION}"
else
    echo -e "\n Unable to copy SMBIOS to destination"
    exit 1
fi

if [ $(grep -c ProductName "${DESTINATION}/config.plist") -eq 1 ]; then
    /usr/libexec/PlistBuddy -c "Delete SMBIOS" "${DESTINATION}/config.plist"
    /usr/libexec/PlistBuddy -c "Add SMBIOS dict" "${DESTINATION}/config.plist"
    /usr/libexec/PlistBuddy -c "Add SMBIOS:Trust bool" "${DESTINATION}/config.plist"
else
    echo -e "\n No SMBIOS in ${DESTINATION}/config.plist"
fi

if /usr/libexec/PlistBuddy -c "Merge ${SMBIOS_MODEL} SMBIOS" "${DESTINATION}/config.plist"; then
    rm "${DESTINATION}/${SMBIOS_MODEL}"
    echo -e "\n Merged "${SMBIOS_MODEL}" SMBIOS in ${DESTINATION}/config.plist"
else
    echo -e "\n Unable to merge SMBIOS"
    exit 1
fi

if /usr/libexec/PlistBuddy -c "Set :SMBIOS:SerialNumber $NEW_SERIAL" "${DESTINATION}/config.plist"; then
	echo -e "\n Generated New Serial Number for "${SMBIOS_MODEL}" SMBIOS in ${DESTINATION}/config.plist"
    exit 0
else
    echo -e "\n Unable to merge new serial number into SMBIOS"
    exit 1
fi
