Chris@0: addOption('database', NULL, InputOption::VALUE_OPTIONAL, 'The database connection name to use.', 'default') Chris@0: ->addOption('database-url', 'db-url', InputOption::VALUE_OPTIONAL, 'A database url to parse and use as the database connection.') Chris@0: ->addOption('prefix', NULL, InputOption::VALUE_OPTIONAL, 'Override or set the table prefix used in the database connection.'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Parse input options decide on a database. Chris@0: * Chris@0: * @param \Symfony\Component\Console\Input\InputInterface $input Chris@0: * Input object. Chris@0: * @return \Drupal\Core\Database\Connection Chris@0: */ Chris@0: protected function getDatabaseConnection(InputInterface $input) { Chris@0: // Load connection from a url. Chris@0: if ($input->getOption('database-url')) { Chris@0: // @todo this could probably be refactored to not use a global connection. Chris@0: // Ensure database connection isn't set. Chris@0: if (Database::getConnectionInfo('db-tools')) { Chris@0: throw new \RuntimeException('Database "db-tools" is already defined. Cannot define database provided.'); Chris@0: } Chris@0: $info = Database::convertDbUrlToConnectionInfo($input->getOption('database-url'), \Drupal::root()); Chris@0: Database::addConnectionInfo('db-tools', 'default', $info); Chris@0: $key = 'db-tools'; Chris@0: } Chris@0: else { Chris@0: $key = $input->getOption('database'); Chris@0: } Chris@0: Chris@0: // If they supplied a prefix, replace it in the connection information. Chris@0: $prefix = $input->getOption('prefix'); Chris@0: if ($prefix) { Chris@0: $info = Database::getConnectionInfo($key)['default']; Chris@0: $info['prefix']['default'] = $prefix; Chris@0: Chris@0: Database::removeConnection($key); Chris@0: Database::addConnectionInfo($key, 'default', $info); Chris@0: } Chris@0: Chris@0: return Database::getConnection('default', $key); Chris@0: } Chris@0: Chris@0: }