public function execute()
{
$options = $this->options;
$logger = $this->logger;
$id = $this->getCurrentDataSourceId();
$logger->debug("Finding schema classes...");
$schemas = $this->findSchemasByArguments(func_get_args());
$logger->debug("Initialize schema builder...");
$connectionManager = ConnectionManager::getInstance();
$conn = $connectionManager->getConnection($id);
$driver = $connectionManager->getQueryDriver($id);
$sqlBuilder = SqlBuilder::create($driver, array('rebuild' => $options->rebuild, 'clean' => $options->clean));
$builder = new DatabaseBuilder($conn, $sqlBuilder, $this->logger);
$sqls = $builder->build($schemas);
$sqlOutput = join("\n", $sqls);
if ($file = $this->options->file) {
$fp = fopen($file, 'w');
fwrite($fp, $sqlOutput);
fclose($fp);
}
if ($this->options->basedata) {
$collection = new SchemaCollection($schemas);
$collection = $collection->evaluate();
$seedBuilder = new SeedBuilder($this->getConfigLoader(), $this->logger);
$seedBuilder->build($collection);
}
$time = time();
$logger->info("Setting migration timestamp to {$time}");
$metadata = new Metadata($driver, $conn);
// update migration timestamp
$metadata['migration'] = $time;
$logger->info($logger->formatter->format('Done. ' . count($schemas) . " schema tables were generated into data source '{$id}'.", 'green'));
}