protected function cliDI(CLI $di)
{
global $argv;
$di->set('router', function () use($di, $argv) {
$router = new CLIRouter();
$router->setDI($di);
return $router;
});
$di->set('output', function () {
return new ConsoleOutput();
});
$di->set('dispatcher', function () use($di, $argv) {
$dispatcher = new CLIDispatcher();
$dispatcher->setDI($di);
$moduleName = array_shift($argv);
$taskName = array_shift($argv);
$actionName = 'main';
if (strpos($taskName, ':') > 0) {
@(list($taskName, $actionName) = preg_split("/:/", $taskName));
}
if ($moduleName) {
$dispatcher->setTaskName(ucwords($taskName));
$dispatcher->setActionName($actionName);
$dispatcher->setParams($argv);
if ($moduleName == '_current') {
$_appName = ucwords($this->getAppName());
$dispatcher->setNamespaceName("{$_appName}\\Tasks");
} else {
$dispatcher->setNamespaceName("Eva\\{$moduleName}\\Tasks");
}
} else {
$dispatcher->setTaskName('Main');
$dispatcher->setParams($argv);
$dispatcher->setNamespaceName("Eva\\EvaEngine\\Tasks");
}
return $dispatcher;
});
}