#!/bin/bash

# Validate the arguments.
[ $# -ge 1 -a $# -le 3 ] || exit 2
[ $# -ge 2 ] && SCRIPT_INPUT_FILE_0=$2
[ $# -ge 3 ] && SCRIPT_OUTPUT_FILE_0=$3
if ! [ -s "$SCRIPT_INPUT_FILE_0" ]; then
	echo Cannot find file $SCRIPT_INPUT_FILE_0
	exit 1
elif ! [ -d $(dirname $SCRIPT_OUTPUT_FILE_0) ]; then
	echo Cannot find directory $(dirname $SCRIPT_OUTPUT_FILE_0)
	exit 1
fi

# Configure the environment variables.
VERSION=$(cat "$SCRIPT_INPUT_FILE_0")
LANGUAGE=$1
T="$(mktemp)"

# Perform steps for the given project.
if [ $LANGUAGE = "C++" ]; then
	cat > $T <<- EOF
		// Auto-generated; do not edit
		static char const* sdkVersion= "$VERSION";
	EOF
elif [ $LANGUAGE = "C#" ]; then
	cat > $T <<- EOF
		// Auto-generated; do not edit
		using System.Reflection;
		[assembly: AssemblyVersion("$VERSION.*")]
		[assembly: AssemblyFileVersion("$VERSION.0.0")]
	EOF
else
	echo "Unknown language $LANGUAGE"
	exit 1
fi
if ! [ -s $SCRIPT_OUTPUT_FILE_0 ]; then
	echo Creating version file
	mv $T $SCRIPT_OUTPUT_FILE_0
elif ! diff -q $T $SCRIPT_OUTPUT_FILE_0; then
	echo Updating version file
	mv $T $SCRIPT_OUTPUT_FILE_0
else
	rm $T
fi
exit 0
