setName('migrations/rollback') ->setDescription('Core/extension database rollback') ->addOption('--extension', '-x', InputOption::VALUE_OPTIONAL, 'Extension name: "plugin/name", "theme/name"') ->addOption('--target', '-t', InputOption::VALUE_OPTIONAL, 'Migration version: "1.0.0"'); } /** * @param InputInterface $input * @param OutputInterface $output * @return mixed */ protected function execute(InputInterface $input, OutputInterface $output) { 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; } } else { $target = null; } return Dev::migrationsExtension($extension, 'rollback', [ '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; } } else { $target = null; } return Dev::migrationsCore('rollback', [ 'target' => $target, ], true); } } }