aboutsummaryrefslogtreecommitdiffstats
path: root/core/Command/Maintenance/Install.php
diff options
context:
space:
mode:
Diffstat (limited to 'core/Command/Maintenance/Install.php')
-rw-r--r--core/Command/Maintenance/Install.php58
1 files changed, 30 insertions, 28 deletions
diff --git a/core/Command/Maintenance/Install.php b/core/Command/Maintenance/Install.php
index c445f2c2f46..f5d28db23e3 100644
--- a/core/Command/Maintenance/Install.php
+++ b/core/Command/Maintenance/Install.php
@@ -1,4 +1,7 @@
<?php
+
+declare(strict_types=1);
+
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -32,11 +35,10 @@ namespace OC\Core\Command\Maintenance;
use bantu\IniGetWrapper\IniGetWrapper;
use InvalidArgumentException;
-use OC\Installer;
+use OC\Console\TimestampFormatter;
+use OC\Migration\ConsoleOutput;
use OC\Setup;
use OC\SystemConfig;
-use OCP\Defaults;
-use Psr\Log\LoggerInterface;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Helper\QuestionHelper;
use Symfony\Component\Console\Input\InputInterface;
@@ -47,16 +49,14 @@ use Throwable;
use function get_class;
class Install extends Command {
- private SystemConfig $config;
- private IniGetWrapper $iniGetWrapper;
-
- public function __construct(SystemConfig $config, IniGetWrapper $iniGetWrapper) {
+ public function __construct(
+ private SystemConfig $config,
+ private IniGetWrapper $iniGetWrapper,
+ ) {
parent::__construct();
- $this->config = $config;
- $this->iniGetWrapper = $iniGetWrapper;
}
- protected function configure() {
+ protected function configure(): void {
$this
->setName('maintenance:install')
->setDescription('install Nextcloud')
@@ -64,28 +64,18 @@ class Install extends Command {
->addOption('database-name', null, InputOption::VALUE_REQUIRED, 'Name of the database')
->addOption('database-host', null, InputOption::VALUE_REQUIRED, 'Hostname of the database', 'localhost')
->addOption('database-port', null, InputOption::VALUE_REQUIRED, 'Port the database is listening on')
- ->addOption('database-user', null, InputOption::VALUE_REQUIRED, 'User name to connect to the database')
+ ->addOption('database-user', null, InputOption::VALUE_REQUIRED, 'Login to connect to the database')
->addOption('database-pass', null, InputOption::VALUE_OPTIONAL, 'Password of the database user', null)
->addOption('database-table-space', null, InputOption::VALUE_OPTIONAL, 'Table space of the database (oci only)', null)
- ->addOption('admin-user', null, InputOption::VALUE_REQUIRED, 'User name of the admin account', 'admin')
+ ->addOption('admin-user', null, InputOption::VALUE_REQUIRED, 'Login of the admin account', 'admin')
->addOption('admin-pass', null, InputOption::VALUE_REQUIRED, 'Password of the admin account')
->addOption('admin-email', null, InputOption::VALUE_OPTIONAL, 'E-Mail of the admin account')
->addOption('data-dir', null, InputOption::VALUE_REQUIRED, 'Path to data directory', \OC::$SERVERROOT."/data");
}
protected function execute(InputInterface $input, OutputInterface $output): int {
-
// validate the environment
- $server = \OC::$server;
- $setupHelper = new Setup(
- $this->config,
- $this->iniGetWrapper,
- $server->getL10N('lib'),
- $server->query(Defaults::class),
- $server->get(LoggerInterface::class),
- $server->getSecureRandom(),
- \OC::$server->query(Installer::class)
- );
+ $setupHelper = \OCP\Server::get(\OC\Setup::class);
$sysInfo = $setupHelper->getSystemInfo(true);
$errors = $sysInfo['errors'];
if (count($errors) > 0) {
@@ -101,12 +91,24 @@ class Install extends Command {
// validate user input
$options = $this->validateInput($input, $output, array_keys($sysInfo['databases']));
+ if ($output->isVerbose()) {
+ // Prepend each line with a little timestamp
+ $timestampFormatter = new TimestampFormatter(null, $output->getFormatter());
+ $output->setFormatter($timestampFormatter);
+ $migrationOutput = new ConsoleOutput($output);
+ } else {
+ $migrationOutput = null;
+ }
+
// perform installation
- $errors = $setupHelper->install($options);
+ $errors = $setupHelper->install($options, $migrationOutput);
if (count($errors) > 0) {
$this->printErrors($output, $errors);
return 1;
}
+ if ($setupHelper->shouldRemoveCanInstallFile()) {
+ $output->writeln('<warn>Could not remove CAN_INSTALL from the config folder. Please remove this file manually.</warn>');
+ }
$output->writeln("Nextcloud was successfully installed");
return 0;
}
@@ -121,7 +123,7 @@ class Install extends Command {
$db = strtolower($input->getOption('database'));
if (!in_array($db, $supportedDatabases)) {
- throw new InvalidArgumentException("Database <$db> is not supported.");
+ throw new InvalidArgumentException("Database <$db> is not supported. " . implode(", ", $supportedDatabases) . " are supported.");
}
$dbUser = $input->getOption('database-user');
@@ -148,7 +150,7 @@ class Install extends Command {
if ($db !== 'sqlite') {
if (is_null($dbUser)) {
- throw new InvalidArgumentException("Database user not provided.");
+ throw new InvalidArgumentException("Database account not provided.");
}
if (is_null($dbName)) {
throw new InvalidArgumentException("Database name not provided.");
@@ -195,9 +197,9 @@ class Install extends Command {
/**
* @param OutputInterface $output
- * @param $errors
+ * @param array<string|array> $errors
*/
- protected function printErrors(OutputInterface $output, $errors) {
+ protected function printErrors(OutputInterface $output, array $errors): void {
foreach ($errors as $error) {
if (is_array($error)) {
$output->writeln('<error>' . $error['error'] . '</error>');