29 require
CORE_PATH .
'kumbia/kumbia_exception.php';
59 private static function _getConsoleArgs($argv)
61 $args = array(array());
63 foreach ($argv as $p) {
64 if (is_string($p) && preg_match(
"/--([a-z_0-9]+)[=](.+)/", $p, $regs)) {
66 $args[0][$regs[1]] = $regs[2];
83 public static function load($console_name)
88 if (!class_exists($Console)) {
90 $file =
APP_PATH .
"extensions/console/{$console_name}_console.php";
92 if (!is_file($file)) {
93 $file =
CORE_PATH .
"console/{$console_name}_console.php";
95 if (!is_file($file)) {
105 $console =
new $Console();
108 if (method_exists($console,
'initialize')) {
109 $console->initialize();
127 $console_name = array_shift($argv);
128 if (!$console_name) {
133 $command = array_shift($argv);
140 $args = self::_getConsoleArgs($argv);
143 if (isset($args[0][
'path'])) {
144 $dir = realpath($args[0][
'path']);
146 throw new KumbiaException(
"La ruta \"{$args[0]['path']}\" es invalida");
149 unset($args[0][
'path']);
156 define(
'APP_PATH', rtrim($dir,
'/') .
'/');
162 define(
'PRODUCTION',
$config[
'application'][
'production']);
165 $console = self::load($console_name);
168 if (!method_exists($console, $command)) {
169 throw new KumbiaException(
"El comando \"$command\" no existe para la consola \"$console_name\"");
173 if ($command ==
'initialize') {
174 throw new KumbiaException(
"El comando initialize es un comando reservado");
178 $reflectionMethod =
new ReflectionMethod($console, $command);
179 if (count($args) < $reflectionMethod->getNumberOfRequiredParameters()) {
180 throw new KumbiaException(
"Número de parametros erroneo para ejecutar el comando \"$command\" en la consola \"$console_name\"");
184 call_user_func_array(array($console, $command), $args);
194 public static function input($message, $values=NULL)
197 $stdin = fopen(
'php://stdin',
'r');
204 $data = str_replace(PHP_EOL,
'', fgets($stdin));
205 }
while ($values && !in_array($data, $values));