From 03a5856541d6b760ab9aaeaf5a30bb40a3c66b70 Mon Sep 17 00:00:00 2001
From: Michael Weimann <mail@michael-weimann.eu>
Date: Sun, 1 Jul 2018 20:54:19 +0200
Subject: [PATCH] Disables the maintenance warning for the maintenance command
 itself.

Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
---
 lib/private/Console/Application.php | 35 ++++++++++++++++++++++++-----
 1 file changed, 29 insertions(+), 6 deletions(-)

diff --git a/lib/private/Console/Application.php b/lib/private/Console/Application.php
index c85b67217b4..1de5fbd6ca3 100644
--- a/lib/private/Console/Application.php
+++ b/lib/private/Console/Application.php
@@ -39,6 +39,7 @@ use OCP\IRequest;
 use Symfony\Component\Console\Application as SymfonyApplication;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\ConsoleOutputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 
@@ -69,10 +70,13 @@ class Application {
 
 	/**
 	 * @param InputInterface $input
-	 * @param OutputInterface $output
+	 * @param ConsoleOutputInterface $output
 	 * @throws \Exception
 	 */
-	public function loadCommands(InputInterface $input, OutputInterface $output) {
+	public function loadCommands(
+		InputInterface $input,
+		ConsoleOutputInterface $output
+	) {
 		// $application is required to be defined in the register_command scripts
 		$application = $this->application;
 		$inputDefinition = $application->getDefinition();
@@ -99,10 +103,7 @@ class Application {
 				if (\OCP\Util::needUpgrade()) {
 					throw new NeedsUpdateException();
 				} elseif ($this->config->getSystemValue('maintenance', false)) {
-					if ($input->getArgument('command') !== '_completion') {
-						$errOutput = $output->getErrorOutput();
-						$errOutput->writeln('<comment>Nextcloud is in maintenance mode - no apps have been loaded</comment>' . PHP_EOL);
-					}
+					$this->writeMaintenanceModeInfo($input, $output);
 				} else {
 					OC_App::loadApps();
 					foreach (\OC::$server->getAppManager()->getInstalledApps() as $app) {
@@ -150,6 +151,28 @@ class Application {
 		}
 	}
 
+	/**
+	 * Write a maintenance mode info.
+	 * The commands "_completion" and "maintenance:mode" are excluded.
+	 *
+	 * @param InputInterface $input The input implementation for reading inputs.
+	 * @param ConsoleOutputInterface $output The output implementation
+	 * for writing outputs.
+	 * @return void
+	 */
+	private function writeMaintenanceModeInfo(
+		InputInterface $input, ConsoleOutputInterface $output
+	) {
+		if ($input->getArgument('command') !== '_completion'
+			&& $input->getArgument('command') !== 'maintenance:mode') {
+			$errOutput = $output->getErrorOutput();
+			$errOutput->writeln(
+				'<comment>Nextcloud is in maintenance mode - ' .
+				'no apps have been loaded</comment>' . PHP_EOL
+			);
+		}
+	}
+
 	/**
 	 * Sets whether to automatically exit after a command execution or not.
 	 *
-- 
GitLab