#!/bin/bash -f

#---------------------------------------------------------------------------
#  Project:  TwlSDK - tools - loadrun
#  File:     nitrorun
#
#  Copyright 2005-2008 Nintendo.  All rights reserved.
#
#  These coded instructions, statements, and computer programs contain
#  proprietary information of Nintendo of America Inc. and/or Nintendo
#  Company Ltd., and are protected by Federal copyright law.  They may
#  not be disclosed to third parties or copied or duplicated in any form,
#  in whole or in part, without the prior written consent of Nintendo.
#
#  $Date:: 2008-09-18#$
#  $Rev: 8573 $
#  $Author: okubata_ryoma $
#---------------------------------------------------------------------------

#---- SDK [gfBNg
SDKROOT=`cygpath -u "$TWLSDK_ROOT"`

#---- sR}h
LOADRUN=$SDKROOT/tools/bin/loadrun.exe
BURYARG=$SDKROOT/tools/bin/buryarg.exe
COMMANDNAME=`basename $0`

#---- R}hIvV
BOPTION=""
LOPTION=""

#---- tO
gVerboseMode=0
gHelpMode=0
gIsError=0
gNoExecMode=0

#----------------------------------------------------------------
# showVersion
#		o[W\
#
function showVersion()
{
    echo "$COMMANDNAME  1.2  Copyright 2005 Nintendo. All right reserved."
    #
    # 1.2 ""ň͂܂ċ󔒂܂񂾕󂯎悤ɂȂ
    # 1.1 o[W\ꂽ
    # 1.0 first release
    #
}

#----------------------------------------------------------------
# showUsage
#		g\
#
function showUsage()
{
    echo "Usage: $COMMANDNAME [OPTION] [<NitroSrlFile> [ARGUMENT]...]"
    echo "Execute buryarg and loadrun."
    echo ""
    echo "Options:"
    echo "  -h, --help            show this help."
    echo "      --version         show version."
    echo "  -v, --verbose         verbose mode."
    echo "      --bopt            specify options for buryarg."
    echo "      --lopt            specify options for loadrun."
    echo "  -n, --noexec          do not execute commands. (for test)"
    echo ""
    echo "Example:"
    echo "  $COMMANDNAME --lopt \"-t30 -a\\\"ABORT\\\" -l\" main.srl 100 300"
    echo "      is done as:  "    
    echo "  buryarg --stdout main.srl 100 300 | loadrun --stdin -t30 -a\"ABORT\" -l"
}

#----------------------------------------------------------------
# checkError
# 		܂ł̃G[`FbN
#
function checkError
{
	local isShowUsage=0

	if [ $gIsError -eq 1 ];
	then
		exit 1
	fi;

	if [ $gHelpMode -eq 1 ];
	then
		isShowUsage=1
	fi;

	if [ $ARGC -eq 0 ];
	then
		isShowUsage=1
	fi;

	if [ $isShowUsage -eq 1 ];
	then
		showUsage
		exit 1
	fi;
}

#----------------------------------------------------------------
# checkExistence
#		t@C̑݊mF
#
function checkExistence()
{
	#---- buryarg R}h݂邩
	if [ ! -e $BURYARG ];
	then
		gIsError=1
		echo "*** Error: $COMMANDNAME: buryarg command not exist"
		return
	fi;

	#---- loadrun R}h݂邩
	if [ ! -e $LOADRUN ];
	then
		gIsError=1
		echo "*** Error: $COMMANDNAME: loadrun command not exist"
		return
	fi;

	#---- srl t@C݂邩
	if [ ! -e $1 ];
	then
		gIsError=1
		echo "*** Error: $COMMANDNAME: srl file not exist"
		return
	fi;
}

#================================================================
# main
#		C
#

#---------------- IvṼ`FbN
while [ 1 ];
do
	case $1 in
		# wv
		--help|-help|-h)
			gHelpMode=1
			shift 1
			continue
			;;
		# o[W
		--version|-version)
			showVersion
			exit 1
			;;
		# buryarg ɓnIvV
		--bopt*|-bopt*)
			BOPTION=$2
			shift 2
			continue
			;;
		# loadrun ɓnIvV
		--lopt*|-lopt*)
			LOPTION=$2
			shift 2
			continue
			;;
		# verbose [h
		--verbose|-v)
			gVerboseMode=1
			shift 1
			continue
			;;
		# sȂ
		--noexec|-n)
			gNoExecMode=1
			shift 1
			continue
			;;
		# ̃IvV
		-*)
			gIsError=1
			echo "*** Error: $COMMANDNAME: Illegal option"
			break;
			;;
		# IvVłȂ
		*)
			break;
			;;
	esac

done

#---------------- t@C݂̑Ȃǂ̃G[`FbN
ARGC=$#

if [ $gIsError -eq 0 ];
then
	checkExistence $1
fi;

checkError

#---------------- R}hs
{
	if [ $gVerboseMode -eq 1 ];
	then
		echo "buryarg option: $BOPTION"
		echo "loadrun option: $LOPTION"
	fi;

	if [ $gVerboseMode -eq 1 ];
	then
		echo "$BURYARG $BOPTION --stdout $@ | $LOADRUN --stdin $LOPTION"
	fi;


	if [ $gNoExecMode -eq 0 ];
	then
		#---- Q̃R}hpCvŌqs
		$BURYARG $BOPTION --stdout "$@"  | $LOADRUN --stdin $LOPTION
	fi;
}

exit 0
