#!/bin/bash -e

n=$1
s=$2
output_file=$3
format=$4 # indicates the format we want i.e. "gp" or "legacy".  If absent, "gp" is applied.

# Do not overwrite a file this same data as that triggers re-builds for no reason
new_output_file="${output_file}-tmp"

echo "#ifndef ${n}_UUID" > ${new_output_file}

if [ -z "${format}" ]; then
    echo "#define ${n}_UUID { 0x${s:0:8}, 0x${s:8:4}, 0x${s:12:4}, { 0x${s:16:2}, 0x${s:18:2}, 0x${s:20:2}, 0x${s:22:2}, 0x${s:24:2}, 0x${s:26:2}, 0x${s:28:2}, 0x${s:30:2} }} " >> ${new_output_file}
else
    if [ "${format}" == "legacy" ]; then
        echo "#define ${n}_UUID {{ 0x${s:0:2}, 0x${s:2:2}, 0x${s:4:2}, 0x${s:6:2}, 0x${s:8:2}, 0x${s:10:2}, 0x${s:12:2}, 0x${s:14:2}, 0x${s:16:2}, 0x${s:18:2}, 0x${s:20:2}, 0x${s:22:2}, 0x${s:24:2}, 0x${s:26:2}, 0x${s:28:2}, 0x${s:30:2} }}" >> ${new_output_file}
    elif [ "${format}" == "gp" ]; then
        echo "#define ${n}_UUID { 0x${s:0:8}, 0x${s:8:4}, 0x${s:12:4}, { 0x${s:16:2}, 0x${s:18:2}, 0x${s:20:2}, 0x${s:22:2}, 0x${s:24:2}, 0x${s:26:2}, 0x${s:28:2}, 0x${s:30:2} }} " >> ${new_output_file}
    else
        echo "Error: unrecognised format parameter value: " ${format}
    fi
fi

echo "#endif // ${n}_UUID" >> ${new_output_file}

# Create or update if needed
if diff -q ${new_output_file} ${output_file}; then
    rm ${new_output_file}
else
    mv ${new_output_file} ${output_file}
fi
