Example #1
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;
     }
     $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;
 }
Example #2
0
 /**
  * Run
  *
  * @access public
  * @param string up/down
  */
 public function run($method)
 {
     $this->{$method}();
     $reflection = new \ReflectionClass($this);
     $packages = \Skeleton\Core\Skeleton::get_all();
     $filename = $reflection->getFileName();
     if (substr(Config::$migration_directory, -1) == '/') {
         $migration_directory = substr(Config::$migration_directory, 0, -1);
     } else {
         $migration_directory = Config::$migration_directory;
     }
     if (dirname($filename) == $migration_directory) {
         Runner::set_version('project', $this->get_version());
         return;
     }
     $migration_package = null;
     foreach ($packages as $package) {
         if (strpos($package->migration_path, dirname($filename)) === 0) {
             $migration_package = $package;
         }
     }
     if ($migration_package === null) {
         throw new \Exception('No package found');
     }
     Runner::set_version($migration_package->name, $this->get_version());
 }
Example #3
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;
 }