protected function createDatabase(InputInterface $input, OutputInterface $output)
{
$dbOptions = array('--dbHost', '--dbUser', '--dbPass', '--dbName');
$dbOptionsFound = 0;
foreach ($dbOptions as $dbOption) {
foreach ($this->getCliArguments() as $definedCliOption) {
if (BinaryString::startsWith($definedCliOption, $dbOption)) {
$dbOptionsFound++;
}
}
}
$hasAllOptions = $dbOptionsFound == 4;
// if all database options were passed in at cmd line
if ($hasAllOptions) {
$this->config['db_host'] = $input->getOption('dbHost');
$this->config['db_user'] = $input->getOption('dbUser');
$this->config['db_pass'] = $input->getOption('dbPass');
$this->config['db_name'] = VerifyOrDie::filename($input->getOption('dbName'), 'Database name is not portable');
$this->config['db_port'] = $input->getOption('dbPort');
$this->config['db_prefix'] = $input->getOption('dbPrefix');
$db = $this->validateDatabaseSettings($output, $input);
if ($db === false) {
throw new InvalidArgumentException("Database configuration is invalid");
}
} else {
/** @var DialogHelper $dialog */
$dialog = $this->getHelper('dialog');
do {
$dbHostDefault = $input->getOption('dbHost') ? $input->getOption('dbHost') : 'localhost';
$this->config['db_host'] = $dialog->askAndValidate($output, '<question>Please enter the database host</question> <comment>[' . $dbHostDefault . ']</comment>: ', $this->notEmptyCallback, false, $dbHostDefault);
$dbUserDefault = $input->getOption('dbUser') ? $input->getOption('dbUser') : 'root';
$this->config['db_user'] = $dialog->askAndValidate($output, '<question>Please enter the database username</question> <comment>[' . $dbUserDefault . ']</comment>: ', $this->notEmptyCallback, false, $dbUserDefault);
$dbPassDefault = $input->getOption('dbPass') ? $input->getOption('dbPass') : '';
$this->config['db_pass'] = $dialog->ask($output, '<question>Please enter the database password</question> <comment>[' . $dbPassDefault . ']</comment>: ', $dbPassDefault);
$dbNameDefault = $input->getOption('dbName') ? $input->getOption('dbName') : 'magento';
$this->config['db_name'] = $dialog->askAndValidate($output, '<question>Please enter the database name</question> <comment>[' . $dbNameDefault . ']</comment>: ', $this->notEmptyCallback, false, $dbNameDefault);
$dbPortDefault = $input->getOption('dbPort') ? $input->getOption('dbPort') : 3306;
$this->config['db_port'] = $dialog->askAndValidate($output, '<question>Please enter the database port </question> <comment>[' . $dbPortDefault . ']</comment>: ', $this->notEmptyCallback, false, $dbPortDefault);
$dbPrefixDefault = $input->getOption('dbPrefix') ? $input->getOption('dbPrefix') : '';
$this->config['db_prefix'] = $dialog->ask($output, '<question>Please enter the table prefix</question> <comment>[' . $dbPrefixDefault . ']</comment>:', $dbPrefixDefault);
$db = $this->validateDatabaseSettings($output, $input);
} while ($db === false);
}
$this->config['db'] = $db;
}