container = $container; } public function run(string $command) { $command = ucfirst(\Espo\Core\Utils\Util::hyphenToCamelCase($command)); $argumentList = []; $options = []; $flagList = []; foreach ($_SERVER['argv'] as $i => $item) { if ($i < 2) continue; $argumentList[] = $item; if (strpos($item, '--') === 0 && strpos($item, '=') > 2) { list($name, $value) = explode('=', substr($item, 2)); $options[$name] = $value; } else if (strpos($item, '-') === 0) { $flagList[] = substr($item, 1); } } $className = '\\Espo\\Core\\Console\\Commands\\' . $command; $className = $this->container->get('metadata')->get(['app', 'consoleCommands', $command, 'className'], $className); if (!class_exists($className)) { $msg = "Command '{$command}' does not exist."; echo $msg . "\n"; throw new \Espo\Core\Exceptions\Error($msg); } $impl = new $className($this->container); return $impl->run($options, $flagList, $argumentList); } }