public function execute(InputInterface $input, OutputInterface $output)
{
$version = $input->getArgument('version');
$configuration = $this->getMigrationConfiguration($input, $output);
$migration = new Migration($configuration);
$this->outputHeader($configuration, $output);
if ($path = $input->getOption('write-sql')) {
$path = is_bool($path) ? getcwd() : $path;
$migration->writeSqlFile($path, $version);
} else {
$dryRun = $input->getOption('dry-run') ? true : false;
if ($dryRun === true) {
$migration->migrate($version, true);
} else {
$noInteraction = $input->getOption('no-interaction') ? true : false;
if ($noInteraction === true) {
$migration->migrate($version, $dryRun);
} 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>', false);
if ($confirmation === true) {
$migration->migrate($version, $dryRun);
} else {
$output->writeln('<error>Migration cancelled!</error>');
}
}
}
}
}