# args: first is the source (XML) file, second is the destination directory

# converts the xml file to a plist file and converts that into a byte
# array defined in a .h and .c file
# for compilation

INPUT_FILE_NAME=`basename $1`
BASE_FILENAME=`echo ${INPUT_FILE_NAME%.*}`
LABEL=`echo _${BASE_FILENAME}_PLIST | tr '[:lower:]' '[:upper:]' | tr '.' '_'`

mkdir -p $2

printf "// Please do not edit this file!\n" > $2/$BASE_FILENAME.h
printf "// This file was automatically generated from $INPUT_FILE_NAME.\n\n" >> $2/$BASE_FILENAME.h
printf "#ifndef $LABEL\n" >> $2/$BASE_FILENAME.h
printf "#define $LABEL\n\n" >> $2/$BASE_FILENAME.h
printf "#include <stddef.h>\n\n" >> $2/$BASE_FILENAME.h
printf "extern unsigned char ${BASE_FILENAME}_plist[];\n" >> $2/$BASE_FILENAME.h
printf "extern size_t ${BASE_FILENAME}_plist_len;\n\n" >> $2/$BASE_FILENAME.h
printf "#endif // $LABEL\n" >> $2/$BASE_FILENAME.h

printf "// Please do not edit this file!\n" > $2/$BASE_FILENAME.c
printf "// This file was automatically generated from $INPUT_FILE_NAME.\n\n" >> $2/$BASE_FILENAME.c
printf "#include \"$BASE_FILENAME.h\"\n\n" >> $2/$BASE_FILENAME.c
printf "unsigned char ${BASE_FILENAME}_plist[] = {\n" >> $2/$BASE_FILENAME.c
plistutil -i $1 | xxd -i - >> $2/$BASE_FILENAME.c
printf "  };\n\n" >> $2/$BASE_FILENAME.c
printf "size_t ${BASE_FILENAME}_plist_len = sizeof(${BASE_FILENAME}_plist);\n" >> $2/$BASE_FILENAME.c
