#!/bin/sh

# installXCodeTemplates
# Created by Ethan Tira-Thompson on 3/8/05.

VER=`uname -r | cut -f 1 -d .`;
if [ $VER -lt 9 ] ; then
	DEFAULT="/Library/Application Support/Apple/Developer Tools/File Templates/Tekkotsu"
else
	DEFAULT="/Library/Application Support/Developer/Shared/Xcode/File Templates/Tekkotsu"
fi
ORIGDIR="`pwd`";
cd "`dirname \"$0\"`/../project/templates";
SOURCE="`pwd`"
TIFILE="TemplateInfo.plist"

INSTALL="$1"
ISSYSTEMWIDE=false
ISHOME=false
if [ "$INSTALL" == "--system" ] ; then
	INSTALL="$DEFAULT"
	ISSYSTEMWIDE=true
elif [ -z "$INSTALL" ] ; then
	cd;
	INSTALL="`pwd`/$DEFAULT"
	ISHOME=true
fi

cd "$ORIGDIR";
cd "`dirname \"$0\"`";

echo "This will install the template files from:"
echo "  $SOURCE"
echo "to:"
echo "  $INSTALL"
if $ISSYSTEMWIDE ; then
	echo "This will allow systemwide usage";
fi;
if $ISHOME ; then
	echo "This will only provide access for the current user";
	echo "(pass --system flag to install into the system-wide directory)";
fi;

if [ -d "$INSTALL" ] ; then
	echo "";
	echo "WARNING: The target directory already exists, continuing will replace it";
fi;

echo "";
echo "Press enter to continue, ctl-C to cancel";
read;

if [ -d "$INSTALL" ] ; then
	rm -r "$INSTALL";
fi;

mkdir -p "$INSTALL";

CUR="$INSTALL/Generic Class.pbfiletemplate"
mkdir "$CUR";
echo "Made dir $CUR";
cp "$SOURCE/header.h" "$SOURCE/implementation.cc" "$CUR";
cat > "$CUR/$TIFILE" << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyLis
t-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Description</key>
	<string>A C++ class, with an optional implementation file.</string>
	<key>MainTemplateFile</key>
	<string>implementation.cc</string>
	<key>FileToDisplay</key>
	<string>%@.h</string>
	<key>ImplicitCounterpartTemplateFiles</key>
	<dict>
		<key>header.h</key>
		<string>%@.h</string>
	</dict>
</dict>
</plist>
EOF

CUR="$INSTALL/Behavior.pbfiletemplate"
mkdir "$CUR";
echo "Made dir $CUR";
cp "$SOURCE/behavior.h" "$SOURCE/implementation.cc" "$CUR";
cat > "$CUR/$TIFILE" << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyLis
t-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Description</key>
	<string>A blank Tekkotsu behavior, with an optional implementation file.</string>
	<key>MainTemplateFile</key>
	<string>implementation.cc</string>
	<key>FileToDisplay</key>
	<string>%@.h</string>
	<key>ImplicitCounterpartTemplateFiles</key>
	<dict>
		<key>behavior.h</key>
		<string>%@.h</string>
	</dict>
</dict>
</plist>
EOF

CUR="$INSTALL/MotionCommand.pbfiletemplate"
mkdir "$CUR";
echo "Made dir $CUR";
cp "$SOURCE/motioncommand.h" "$SOURCE/implementation.cc" "$CUR";
cat > "$CUR/$TIFILE" << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyLis
t-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Description</key>
	<string>A blank Tekkotsu MotionCommand, with an optional implementation file.</string>
	<key>MainTemplateFile</key>
	<string>implementation.cc</string>
	<key>FileToDisplay</key>
	<string>%@.h</string>
	<key>ImplicitCounterpartTemplateFiles</key>
	<dict>
		<key>motioncommand.h</key>
		<string>%@.h</string>
	</dict>
</dict>
</plist>
EOF

CUR="$INSTALL/Control.pbfiletemplate"
mkdir "$CUR";
echo "Made dir $CUR";
cp "$SOURCE/control.h" "$SOURCE/implementation.cc" "$CUR";
cat > "$CUR/$TIFILE" << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyLis
t-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Description</key>
	<string>A blank Tekkotsu control, with an optional implementation file.</string>
	<key>MainTemplateFile</key>
	<string>implementation.cc</string>
	<key>FileToDisplay</key>
	<string>%@.h</string>
	<key>ImplicitCounterpartTemplateFiles</key>
	<dict>
		<key>control.h</key>
		<string>%@.h</string>
	</dict>
</dict>
</plist>
EOF

CUR="$INSTALL/StateNode.pbfiletemplate"
mkdir "$CUR";
echo "Made dir $CUR";
cp "$SOURCE/statenode.h" "$SOURCE/implementation.cc" "$CUR";
cat > "$CUR/$TIFILE" << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyLis
t-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Description</key>
	<string>A blank Tekkotsu StateNode (element of a state machine), with an optional implementation file.</string>
	<key>MainTemplateFile</key>
	<string>implementation.cc</string>
	<key>FileToDisplay</key>
	<string>%@.h</string>
	<key>ImplicitCounterpartTemplateFiles</key>
	<dict>
		<key>statenode.h</key>
		<string>%@.h</string>
	</dict>
</dict>
</plist>
EOF

CUR="$INSTALL/StateMachine.pbfiletemplate"
mkdir "$CUR";
echo "Made dir $CUR";
cp "$SOURCE/statemachine.h" "$SOURCE/implementation.cc" "$CUR";
cat > "$CUR/$TIFILE" << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyLis
t-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Description</key>
	<string>A blank Tekkotsu state machine (a StateNode with subnodes), with an optional implementation file.</string>
	<key>MainTemplateFile</key>
	<string>implementation.cc</string>
	<key>FileToDisplay</key>
	<string>%@.h</string>
	<key>ImplicitCounterpartTemplateFiles</key>
	<dict>
		<key>statemachine.h</key>
		<string>%@.h</string>
	</dict>
</dict>
</plist>
EOF

CUR="$INSTALL/Transition.pbfiletemplate"
mkdir "$CUR";
echo "Made dir $CUR";
cp "$SOURCE/transition.h" "$SOURCE/implementation.cc" "$CUR";
cat > "$CUR/$TIFILE" << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyLis
t-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Description</key>
	<string>A blank Tekkotsu state transition, with an optional implementation file.</string>
	<key>MainTemplateFile</key>
	<string>implementation.cc</string>
	<key>FileToDisplay</key>
	<string>%@.h</string>
	<key>ImplicitCounterpartTemplateFiles</key>
	<dict>
		<key>transition.h</key>
		<string>%@.h</string>
	</dict>
</dict>
</plist>
EOF

echo "Translating keywords";
./filewordreplace -q "CLASSNAME" "FILEBASENAME" "$INSTALL";
./filewordreplace -q "YOURNAMEHERE" "FULLUSERNAME\ \(USERNAME\)" "$INSTALL";
./filewordreplace -q '\\\\\\\$Date\\\\\\$' '\\\$Date:\ DATE\ TIME\\$' "$INSTALL";

echo "Done!";
