5 * Contains \Drupal\Console\Command\Migrate\SetupCommand.
8 namespace Drupal\Console\Command\Migrate;
10 use Drupal\Console\Core\Style\DrupalStyle;
11 use Drupal\Core\State\StateInterface;
12 use Symfony\Component\Console\Input\InputOption;
13 use Symfony\Component\Console\Input\InputInterface;
14 use Symfony\Component\Console\Output\OutputInterface;
15 use Symfony\Component\Console\Command\Command;
16 use Drupal\Console\Core\Command\Shared\ContainerAwareCommandTrait;
17 use Drupal\Console\Command\Shared\DatabaseTrait;
18 use Drupal\Console\Command\Shared\MigrationTrait;
19 use Drupal\migrate\Plugin\MigrationPluginManagerInterface;
20 use Drupal\migrate\Plugin\RequirementsInterface;
21 use Drupal\migrate\Exception\RequirementsException;
22 use Drupal\Component\Plugin\Exception\PluginNotFoundException;
24 class SetupCommand extends Command
26 use ContainerAwareCommandTrait;
31 * @var StateInterface $state
36 * @var MigrationPluginManagerInterface $pluginManagerMigration
38 protected $pluginManagerMigration;
41 * SetupCommand constructor.
43 * @param StateInterface $pluginManagerMigration
45 public function __construct(StateInterface $state, MigrationPluginManagerInterface $pluginManagerMigration)
47 $this->state = $state;
48 $this->pluginManagerMigration = $pluginManagerMigration;
49 parent::__construct();
52 protected function configure()
55 ->setName('migrate:setup')
56 ->setDescription($this->trans('commands.migrate.setup.description'))
60 InputOption::VALUE_REQUIRED,
61 $this->trans('commands.migrate.setup.options.db-type')
66 InputOption::VALUE_REQUIRED,
67 $this->trans('commands.migrate.setup.options.db-host')
72 InputOption::VALUE_REQUIRED,
73 $this->trans('commands.migrate.setup.options.db-name')
78 InputOption::VALUE_REQUIRED,
79 $this->trans('commands.migrate.setup.options.db-user')
84 InputOption::VALUE_OPTIONAL,
85 $this->trans('commands.migrate.setup.options.db-pass')
90 InputOption::VALUE_OPTIONAL,
91 $this->trans('commands.migrate.setup.options.db-prefix')
96 InputOption::VALUE_REQUIRED,
97 $this->trans('commands.migrate.setup.options.db-port')
102 InputOption::VALUE_OPTIONAL,
103 $this->trans('commands.migrate.setup.options.source-base_path')
110 protected function interact(InputInterface $input, OutputInterface $output)
112 $io = new DrupalStyle($input, $output);
115 $db_type = $input->getOption('db-type');
117 $db_type = $this->dbDriverTypeQuestion($io);
118 $input->setOption('db-type', $db_type);
122 $db_host = $input->getOption('db-host');
124 $db_host = $this->dbHostQuestion($io);
125 $input->setOption('db-host', $db_host);
129 $db_name = $input->getOption('db-name');
131 $db_name = $this->dbNameQuestion($io);
132 $input->setOption('db-name', $db_name);
136 $db_user = $input->getOption('db-user');
138 $db_user = $this->dbUserQuestion($io);
139 $input->setOption('db-user', $db_user);
143 $db_pass = $input->getOption('db-pass');
145 $db_pass = $this->dbPassQuestion($io);
146 $input->setOption('db-pass', $db_pass);
150 $db_prefix = $input->getOption('db-prefix');
152 $db_prefix = $this->dbPrefixQuestion($io);
153 $input->setOption('db-prefix', $db_prefix);
157 $db_port = $input->getOption('db-port');
159 $db_port = $this->dbPortQuestion($io);
160 $input->setOption('db-port', $db_port);
163 // --source-base_path
164 $sourceBasepath = $input->getOption('source-base_path');
165 if (!$sourceBasepath) {
166 $sourceBasepath = $io->ask(
167 $this->trans('commands.migrate.setup.questions.source-base_path'),
170 $input->setOption('source-base_path', $sourceBasepath);
174 protected function execute(InputInterface $input, OutputInterface $output)
176 $io = new DrupalStyle($input, $output);
178 $sourceBasepath = $input->getOption('source-base_path');
179 $configuration['source']['constants']['source_base_path'] = rtrim($sourceBasepath, '/') . '/';
181 $this->registerMigrateDB($input, $io);
182 $this->migrateConnection = $this->getDBConnection($io, 'default', 'upgrade');
184 if (!$drupal_version = $this->getLegacyDrupalVersion($this->migrateConnection)) {
185 $io->error($this->trans('commands.migrate.setup.migrations.questions.not-drupal'));
189 $database = $this->getDBInfo();
190 $version_tag = 'Drupal ' . $drupal_version;
192 $this->createDatabaseStateSettings($database, $drupal_version);
194 $migrations = $this->getMigrations($version_tag, false, $configuration);
199 $this->trans('commands.migrate.setup.messages.migrations-created'),