#	File:	Directory2
#
#	Copyright Apple Computer, Inc. 1991
#	All rights reserved.
#
#
#		Scripts that have Projector commands within them can normally not be 
#	executed by ToolServer. Using SourceServer, the RProj tool, and three support
#	scripts (AliasSourceServer, UnaliasSourceServer, and Directory2), ToolServer
#	can perform Projector functions. SourceServer must be running on the same
#	computer as ToolServer before the Projector scripts can be executed.
#	Individual Projector command lines are sent from ToolServer to SourceServer
#	via AppleEvents by the RProj tool. To allow RProj to automatically be invoked
#	any time a Projector command is encountered, we use the AliasSourceServer
#	script to alias each ProjectorCommand to "RProj ProjectorCommand". To make
#	sure that the aliases remain in effect even after the AliasSourceServer script
#	has finished running, we must use the command line, "Execute AliasSourceServer".
#	Directory commands also need to be aliased to Directory2, which will keep the
#	current directory of both ToolServer and SourceServer set to the same location
#	so both Projector and non-Projector commands operate on the same set of files.
#	This alias is also established by the AliasSourceServer script. Finally, after
#	completion of the Projector commands, "Execute UnaliasSourceServer" restores
#	ToolServer to it's normal operation.
#
#		This file, Directory2, is one of the support scripts.

#		Prior to calling Directory2, the AliasSourceServer script has executed
#	"Alias Directory Directory2". Within this script, we will use the built-in
#	command, Directory, so we must unalias it to restore normal operation. The
#	Unalias command has local scope, so upon exiting this script, the alias to
#	Directory2 will be back in force!

Unalias Directory

#		The parameters for the original call to Directory remain the parameters
#	for Directory2 also. We must now parse them and make sure the desired action
#	takes place both for ToolServer and SourceServer:

if {#} == 0

#		"Directory", with no parameters, means to echo the current directory that
#	the ToolServer script is executing in. For this we could just unalias directory
#	and then make the call directly to the built in command. However, this is an
#	opportunity to also insure that SourceServer is in synch with ToolServer. So 
#	a variable is set to the current directory and then sent off as a command to
#	SourceServer. Finally, the vanilla directory command is finished by echoing
#	the current directory.

	Set myDir "`Directory`"
	echo "{myDir}"
	RProj Directory {myDir} ≥≥Dev:Null
else
	if "{1}" =~ /-q/

#		Sending "Directory -q" is a special beast. I can't send the unquoted
#	directory name on to SourceServer because the RProj command will treat each
#	word of the file name as a seperate argument. Just send the unquoted shell
#	directory back to ToolServer.

		Directory "{1}"
	else

#		The main operation of Directory2 is to SET the directory! Do this
#	for both the Shell and SourceServer.

		Directory "{1}"
		RProj Directory "{1}" ≥≥Dev:Null
	end
end
