/** * Execute the Command * * @access protected * @param InputInterface $input * @param OutputInterface $output */ protected function execute(InputInterface $input, OutputInterface $output) { if (!file_exists(\Skeleton\Database\Migration\Config::$migration_directory)) { $output->writeln('<error>Config::$migration_directory is not set to a valid directory</error>'); return 1; } $output->writeln('Running migrations'); $migrations = \Skeleton\Database\Migration\Runner::get_runnable(); foreach ($migrations as $package => $package_migrations) { if (count($package_migrations) == 0) { continue; } $output->writeln("\t" . $package); foreach ($package_migrations as $package_migration) { $output->write("\t\t" . get_class($package_migration) . "\t"); try { $package_migration->run('up'); $output->writeln('<info>ok</info>'); } catch (\Exception $e) { $output->writeln('<error>' . $e->getMessage() . '</error>'); return 1; } } } $output->writeln('Database up-to-date'); return 0; }
/** * Execute the Command * * @access protected * @param InputInterface $input * @param OutputInterface $output */ protected function execute(InputInterface $input, OutputInterface $output) { if (!file_exists(\Skeleton\Database\Migration\Config::$migration_directory)) { $output->writeln('<error>Config::$migration_directory is not set to a valid directory</error>'); return 1; } $migrations = \Skeleton\Database\Migration\Runner::get_runnable(); $migration_count = 0; foreach ($migrations as $package => $package_migrations) { if (count($package_migrations) > 0) { $output->writeln('Package ' . $package . ' has outstanding migrations:'); } foreach ($package_migrations as $package_migration) { $migration_count++; if (preg_match('@\\\\([\\w]+)$@', get_class($package_migration), $matches)) { $classname = $matches[1]; } else { $classname = get_class($package_migration); } if ($package == 'project') { $output->writeln("\t" . $classname); } else { $output->writeln("\t" . $package . '/' . $classname); } } } if ($migration_count == 0) { $output->writeln('Database is up-to-date'); } return 0; }