#! /usr/bin/php -q
<?php
/***************************************************************
*  Copyright notice
*
*  (c) 2005-2008 Kasper Skaarhoj (kasperYYYY@typo3.com)
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*  A copy is found in the textfile GPL.txt and important notices to the license
*  from the author is found in LICENSE.txt distributed with these scripts.
*
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

/**
 * Command Line Interface module dispatcher
 *
 * $Id: cli_dispatch.phpsh 3332 2008-03-01 10:25:21Z masi $
 *
 * @author      Kasper Skaarhoj <kasperYYYY@typo3.com>
 *
 * This script takes a "cliKey" as first argument and uses that to look up the path of the script to include in the end.
 * See configuration of this feature in $TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys'].
 * The point is to have only ONE script dealing with the environment initialization while the actual processing is all a developer should care for.
 *
 */

if (PHP_SAPI!='cli') {
	die('Not called from a command line interface (eg. a shell or scheduler).'.chr(10));
}

	// Defining circumstances for CLI mode:
define('TYPO3_cliMode', TRUE);

	// Get path to this script
$temp_PATH_thisScript = isset($_SERVER['argv'][0]) ? $_SERVER['argv'][0] : (isset($_ENV['_']) ? $_ENV['_'] : $_SERVER['_']);

	// Figure out if the path is relative
$relativePath = FALSE;
if (stristr(PHP_OS,'win') && !stristr(PHP_OS,'darwin')) {
		// Windows
	if (!preg_match('/^([A-Z]:)?\\\/', $temp_PATH_thisScript)) {
		$relativePath = TRUE;
	}
} else {
		// *nix, et al
	if ($temp_PATH_thisScript{0} != '/') {
		$relativePath = TRUE;
	}
}

	// Resolve path
if ($relativePath) {
	$workingDirectory = $_SERVER['PWD'] ? $_SERVER['PWD'] : getcwd();
	if ($workingDirectory) {
		$temp_PATH_thisScript =
			$workingDirectory.'/'.ereg_replace('\.\/','',$temp_PATH_thisScript);
		if (!@is_file($temp_PATH_thisScript)) {
			die ('Relative path found, but an error occured during resolving of the absolute path: '.$temp_PATH_thisScript.chr(10));
		}
	} else {
		die ('Relative path found, but resolving absolute path is not supported on this platform.'.chr(10));
	}
}

	// Define absolute path to this script
define('PATH_thisScript',$temp_PATH_thisScript);

if (!isset($_SERVER['argv'][1]))	{
	die ('The first argument must be a valid key.'.chr(10));
}

	// First argument is a key that points to the script configuration
define('TYPO3_cliKey', $_SERVER['argv'][1]);

	// Include init file:
require(dirname(PATH_thisScript).'/init.php');

if (defined('TYPO3_cliInclude')) {
	include(TYPO3_cliInclude);
} else {
	die('No include file configured for key "'.TYPO3_cliKey.'".'.chr(10));
}

?>
