mirror of
https://github.com/nextcloud/server.git
synced 2026-06-09 08:44:07 -04:00
Merge pull request #11212 from owncloud/occ-catching-errors
Occ catching errors
This commit is contained in:
commit
da20d71174
2 changed files with 30 additions and 23 deletions
|
|
@ -9,6 +9,7 @@
|
|||
namespace OC\Core\Command;
|
||||
|
||||
use OC\Updater;
|
||||
use OCP\IConfig;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
|
@ -22,6 +23,20 @@ class Upgrade extends Command {
|
|||
const ERROR_UP_TO_DATE = 3;
|
||||
const ERROR_INVALID_ARGUMENTS = 4;
|
||||
|
||||
public $upgradeFailed = false;
|
||||
|
||||
/**
|
||||
* @var IConfig
|
||||
*/
|
||||
private $config;
|
||||
|
||||
/**
|
||||
* @param IConfig $config
|
||||
*/
|
||||
public function __construct(IConfig $config) {
|
||||
$this->config = $config;
|
||||
}
|
||||
|
||||
protected function configure() {
|
||||
$this
|
||||
->setName('upgrade')
|
||||
|
|
@ -48,14 +63,6 @@ class Upgrade extends Command {
|
|||
*/
|
||||
protected function execute(InputInterface $input, OutputInterface $output) {
|
||||
|
||||
require_once \OC::$SERVERROOT . '/lib/base.php';
|
||||
|
||||
// Don't do anything if ownCloud has not been installed
|
||||
if(!\OC_Config::getValue('installed', false)) {
|
||||
$output->writeln('<error>ownCloud has not yet been installed</error>');
|
||||
return self::ERROR_NOT_INSTALLED;
|
||||
}
|
||||
|
||||
$simulateStepEnabled = true;
|
||||
$updateStepEnabled = true;
|
||||
|
||||
|
|
@ -75,6 +82,7 @@ class Upgrade extends Command {
|
|||
}
|
||||
|
||||
if(\OC::checkUpgrade(false)) {
|
||||
$self = $this;
|
||||
$updater = new Updater();
|
||||
|
||||
$updater->setSimulateStepEnabled($simulateStepEnabled);
|
||||
|
|
@ -83,15 +91,14 @@ class Upgrade extends Command {
|
|||
$updater->listen('\OC\Updater', 'maintenanceStart', function () use($output) {
|
||||
$output->writeln('<info>Turned on maintenance mode</info>');
|
||||
});
|
||||
$updater->listen('\OC\Updater', 'maintenanceEnd', function () use($output, $updateStepEnabled) {
|
||||
$output->writeln('<info>Turned off maintenance mode</info>');
|
||||
if (!$updateStepEnabled) {
|
||||
$output->writeln('<info>Update simulation successful</info>');
|
||||
}
|
||||
else {
|
||||
$output->writeln('<info>Update successful</info>');
|
||||
}
|
||||
});
|
||||
$updater->listen('\OC\Updater', 'maintenanceEnd',
|
||||
function () use($output, $updateStepEnabled, $self) {
|
||||
$output->writeln('<info>Turned off maintenance mode</info>');
|
||||
$mode = $updateStepEnabled ? 'Update' : 'Update simulation';
|
||||
$status = $self->upgradeFailed ? 'failed' : 'successful';
|
||||
$message = "<info>$mode $status</info>";
|
||||
$output->writeln($message);
|
||||
});
|
||||
$updater->listen('\OC\Updater', 'dbUpgrade', function () use($output) {
|
||||
$output->writeln('<info>Updated database</info>');
|
||||
});
|
||||
|
|
@ -102,9 +109,9 @@ class Upgrade extends Command {
|
|||
$output->writeln('<info>Disabled incompatible apps: ' . implode(', ', $appList) . '</info>');
|
||||
});
|
||||
|
||||
$updater->listen('\OC\Updater', 'failure', function ($message) use($output) {
|
||||
$output->writeln($message);
|
||||
\OC_Config::setValue('maintenance', false);
|
||||
$updater->listen('\OC\Updater', 'failure', function ($message) use($output, $self) {
|
||||
$output->writeln("<error>$message</error>");
|
||||
$self->upgradeFailed = true;
|
||||
});
|
||||
|
||||
$updater->upgrade();
|
||||
|
|
@ -112,7 +119,7 @@ class Upgrade extends Command {
|
|||
$this->postUpgradeCheck($input, $output);
|
||||
|
||||
return self::ERROR_SUCCESS;
|
||||
} else if(\OC_Config::getValue('maintenance', false)) {
|
||||
} else if($this->config->getSystemValue('maintenance', false)) {
|
||||
//Possible scenario: ownCloud core is updated but an app failed
|
||||
$output->writeln('<warning>ownCloud is in maintenance mode</warning>');
|
||||
$output->write('<comment>Maybe an upgrade is already in process. Please check the '
|
||||
|
|
@ -134,7 +141,7 @@ class Upgrade extends Command {
|
|||
* @param OutputInterface $output output interface
|
||||
*/
|
||||
protected function postUpgradeCheck(InputInterface $input, OutputInterface $output) {
|
||||
$trustedDomains = \OC_Config::getValue('trusted_domains', array());
|
||||
$trustedDomains = $this->config->getSystemValue('trusted_domains', array());
|
||||
if (empty($trustedDomains)) {
|
||||
$output->write(
|
||||
'<warning>The setting "trusted_domains" could not be ' .
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ $repair = new \OC\Repair(\OC\Repair::getRepairSteps());
|
|||
$application->add(new OC\Core\Command\Status);
|
||||
$application->add(new OC\Core\Command\Db\GenerateChangeScript());
|
||||
$application->add(new OC\Core\Command\Db\ConvertType(OC_Config::getObject(), new \OC\DB\ConnectionFactory()));
|
||||
$application->add(new OC\Core\Command\Upgrade());
|
||||
$application->add(new OC\Core\Command\Upgrade(\OC::$server->getConfig()));
|
||||
$application->add(new OC\Core\Command\Maintenance\SingleUser());
|
||||
$application->add(new OC\Core\Command\Maintenance\Mode(OC_Config::getObject()));
|
||||
$application->add(new OC\Core\Command\App\Disable());
|
||||
|
|
|
|||
Loading…
Reference in a new issue