Merge pull request #2302 from nextcloud/register-command-error-handling

handle errors in apps while registering commands
This commit is contained in:
Lukas Reschke 2016-11-24 15:47:20 +01:00 committed by GitHub
commit ddf944eca1
2 changed files with 12 additions and 3 deletions

View File

@ -85,7 +85,7 @@ try {
echo "The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php" . PHP_EOL;
}
$application = new Application(\OC::$server->getConfig(), \OC::$server->getEventDispatcher(), \OC::$server->getRequest());
$application = new Application(\OC::$server->getConfig(), \OC::$server->getEventDispatcher(), \OC::$server->getRequest(), \OC::$server->getLogger());
$application->loadCommands(new ArgvInput(), new ConsoleOutput());
$application->run();
} catch (Exception $ex) {

View File

@ -31,6 +31,7 @@ use OC_App;
use OCP\AppFramework\QueryException;
use OCP\Console\ConsoleEvent;
use OCP\IConfig;
use OCP\ILogger;
use OCP\IRequest;
use Symfony\Component\Console\Application as SymfonyApplication;
use Symfony\Component\Console\Input\InputInterface;
@ -45,18 +46,22 @@ class Application {
private $dispatcher;
/** @var IRequest */
private $request;
/** @var ILogger */
private $logger;
/**
* @param IConfig $config
* @param EventDispatcherInterface $dispatcher
* @param IRequest $request
* @param ILogger $logger
*/
public function __construct(IConfig $config, EventDispatcherInterface $dispatcher, IRequest $request) {
public function __construct(IConfig $config, EventDispatcherInterface $dispatcher, IRequest $request, ILogger $logger) {
$defaults = \OC::$server->getThemingDefaults();
$this->config = $config;
$this->application = new SymfonyApplication($defaults->getName(), \OC_Util::getVersionString());
$this->dispatcher = $dispatcher;
$this->request = $request;
$this->logger = $logger;
}
/**
@ -110,7 +115,11 @@ class Application {
\OC_App::registerAutoloading($app, $appPath);
$file = $appPath . '/appinfo/register_command.php';
if (file_exists($file)) {
require $file;
try {
require $file;
} catch (\Exception $e) {
$this->logger->logException($e);
}
}
}
}