setName('migrations/migrate')
->setDescription('Core/extension database migration')
->addOption('--extension', '-x', InputOption::VALUE_OPTIONAL, 'Extension name: "plugin/name", "theme/name"')
->addOption('--target', '-t', InputOption::VALUE_OPTIONAL, 'Migration version, "1.0.0"')
->addOption('--step', '-s', InputOption::VALUE_OPTIONAL, 'Migration step, "step1"')
;
}
/**
* @param InputInterface $input
* @param OutputInterface $output
* @return mixed
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
config::set('app.internal.migration.step', $input->getOption('step'));
if ($input->hasParameterOption(['--extension', '-x'])) {
$extension = $this->getExtensionByOption('extension', $input, $output);
if ($extension === false) {
return 1;
}
$target = $input->getOption('target');
if (!empty($target)) {
$target = Dev::migrationsExtension($extension, 'id', ['name' => $target]);
if (empty($target)) {
$output->writeln('' . _t('dev', 'The requested migration version could not be found') . '');
return 1;
}
}
return Dev::migrationsExtension($extension, 'migrate', [
'target' => $target,
], true);
} else {
$target = $input->getOption('target');
if (!empty($target)) {
$target = Dev::migrationsCore('id', ['name' => $target]);
if (empty($target)) {
$output->writeln('' . _t('dev', 'The requested migration version could not be found') . '');
return 1;
}
}
return Dev::migrationsCore('migrate', [
'target' => $target,
], true);
}
}
}