N98\Magento\Command\Installer\InstallCommand::createDatabase PHP Method

createDatabase() protected method

protected createDatabase ( Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output )
$input Symfony\Component\Console\Input\InputInterface
$output Symfony\Component\Console\Output\OutputInterface
    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;
    }