From 890a18e1a634c700e7acd451c75f6fc324d7be82 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Thomas=20M=C3=BCller?= Date: Wed, 8 Apr 2015 10:53:03 +0200 Subject: [PATCH] Introduce own console application class --- console.php | 36 ++------------ lib/private/console/application.php | 76 +++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 32 deletions(-) create mode 100644 lib/private/console/application.php diff --git a/console.php b/console.php index 7536908a5c1..3da87b75c8e 100644 --- a/console.php +++ b/console.php @@ -23,8 +23,8 @@ * */ -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Input\ArgvInput; +use OC\Console\Application; +use Symfony\Component\Console\Output\ConsoleOutput; define('OC_CONSOLE', 1); @@ -54,36 +54,8 @@ try { } } - $defaults = new OC_Defaults; - $application = new Application($defaults->getName(), \OC_Util::getVersionString()); - require_once 'core/register_command.php'; - if (\OC::$server->getConfig()->getSystemValue('installed', false)) { - if (!\OCP\Util::needUpgrade()) { - OC_App::loadApps(); - foreach (OC_App::getAllApps() as $app) { - $file = OC_App::getAppPath($app) . '/appinfo/register_command.php'; - if (file_exists($file)) { - require $file; - } - } - } else { - echo "ownCloud or one of the apps require upgrade - only a limited number of commands are available" . PHP_EOL; - } - } else { - echo "ownCloud is not installed - only a limited number of commands are available" . PHP_EOL; - } - $input = new ArgvInput(); - if ($input->getFirstArgument() !== 'check') { - $errors = \OC_Util::checkServer(\OC::$server->getConfig()); - if (!empty($errors)) { - foreach ($errors as $error) { - echo $error['error'] . "\n"; - echo $error['hint'] . "\n\n"; - } - exit(1); - } - } - + $application = new Application(\OC::$server->getConfig()); + $application->loadCommands(new ConsoleOutput()); $application->run(); } catch (Exception $ex) { echo "An unhandled exception has been thrown:" . PHP_EOL; diff --git a/lib/private/console/application.php b/lib/private/console/application.php new file mode 100644 index 00000000000..d7f8ac53f91 --- /dev/null +++ b/lib/private/console/application.php @@ -0,0 +1,76 @@ +config = $config; + $this->application = new SymfonyApplication($defaults->getName(), \OC_Util::getVersionString()); + } + + /** + * @param OutputInterface $output + */ + public function loadCommands(OutputInterface $output) { + // $application is required to be defined in the register_command scripts + $application = $this->application; + require_once \OC::$SERVERROOT . '/core/register_command.php'; + if ($this->config->getSystemValue('installed', false)) { + if (!\OCP\Util::needUpgrade()) { + OC_App::loadApps(); + foreach (OC_App::getAllApps() as $app) { + $file = OC_App::getAppPath($app) . '/appinfo/register_command.php'; + if (file_exists($file)) { + require $file; + } + } + } else { + $output->writeln("ownCloud or one of the apps require upgrade - only a limited number of commands are available"); + } + } else { + $output->writeln("ownCloud is not installed - only a limited number of commands are available"); + } + $input = new ArgvInput(); + if ($input->getFirstArgument() !== 'check') { + $errors = \OC_Util::checkServer(\OC::$server->getConfig()); + if (!empty($errors)) { + foreach ($errors as $error) { + $output->writeln($error['error']); + $output->writeln($error['hint']); + $output->writeln(''); + } + } + } + } + + public function setAutoExit($boolean) { + $this->application->setAutoExit($boolean); + } + + /** + * @param InputInterface $input + * @param OutputInterface $output + * @return int + * @throws \Exception + */ + public function run(InputInterface $input = null, OutputInterface $output = null) { + return $this->application->run($input, $output); + } +} -- 2.39.5