#!/bin/bash

if [ -z $2 ]; then
	echo "Usage: $0 input_file output_file [input2 output2 ...]"
	echo "e.g.: $0 'threaded-libcurl/DownloadManager.moon' 'DownloadManager.lua'"
	exit 0
fi

while [[ "$#" -ge 2 ]]; do
	moonInput="$1"
	moonInputBase=`basename "$moonInput"`

	moduleName=${moonInputBase%.moon}
	sourceDir=`dirname "$moonInput"`

	headerInput="$sourceDir/${moduleName}C.h"
	headerOutput="$sourceDir/${moduleName}C.processed.h"
	moonOutput="${moonInput%.moon}.processed.moon"
	luaOutput="$2"

	if [[ -r $headerInput ]]; then
		# clean up excess newlines for aesthetics.
		cpp -P "$headerInput" | perl -pe "s/^\n$//g" > "$headerOutput"
		# drop the processed header into the moonscript file.
		cat "$moonInput" | perl -pe "s/___INCLUDE___/`cat "$headerOutput"`/" > "$moonOutput"
		# clean up preprocessed header
		# compile the moonscript file.
		moonc -o "$luaOutput" "$moonOutput" 2>/dev/null
		rm "$headerOutput" "$moonOutput"
	else
		moonc -o "$luaOutput" "$moonInput" 2>/dev/null
	fi

	shift 2
done