public function execute(InputInterface $input, OutputInterface $output)
{
$version = $input->getArgument('version');
$direction = $input->getOption('down') ? 'down' : 'up';
$configuration = $this->_getMigrationConfiguration($input, $output);
$version = $configuration->getVersion($version);
if ($path = $input->getOption('write-sql')) {
$path = is_bool($path) ? getcwd() : $path;
$version->writeSqlFile($path, $direction);
} else {
$noInteraction = $input->getOption('no-interaction') ? true : false;
if ($noInteraction === true) {
$version->execute($direction, $input->getOption('dry-run') ? true : false);
} else {
$confirmation = $this->getHelper('dialog')->askConfirmation($output, '<question>WARNING! You are about to execute a database migration that could result in schema changes and data lost. Are you sure you wish to continue? (y/n)</question>', 'y');
if ($confirmation === true) {
$version->execute($direction, $input->getOption('dry-run') ? true : false);
} else {
$output->writeln('<error>Migration cancelled!</error>');
}
}
}
}