/**
  * @throws MigrationException
  */
 private function markVersions()
 {
     $affectedVersion = $this->argument('version');
     $allOption = $this->option('all');
     $rangeFromOption = $this->option('range-from');
     $rangeToOption = $this->option('range-to');
     if ($allOption && ($rangeFromOption !== null || $rangeToOption !== null)) {
         throw new InvalidArgumentException('Options --all and --range-to/--range-from both used. You should use only one of them.');
     } elseif ($rangeFromOption !== null ^ $rangeToOption !== null) {
         throw new InvalidArgumentException('Options --range-to and --range-from should be used together.');
     }
     if ($allOption === true) {
         $availableVersions = $this->configuration->getAvailableVersions();
         foreach ($availableVersions as $version) {
             $this->mark($version, true);
         }
     } elseif ($rangeFromOption !== null && $rangeToOption !== null) {
         $availableVersions = $this->configuration->getAvailableVersions();
         foreach ($availableVersions as $version) {
             if ($version >= $rangeFromOption && $version <= $rangeToOption) {
                 $this->mark($version, true);
             }
         }
     } else {
         $this->mark($affectedVersion);
     }
 }
Esempio n. 2
0
 /**
  * @param Configuration $configuration
  *
  * @throws ExecutedUnavailableMigrationsException
  */
 protected function checkIfNotExecutedUnavailableMigrations(Configuration $configuration)
 {
     $executedUnavailableMigrations = array_diff($configuration->getMigratedVersions(), $configuration->getAvailableVersions());
     if (count($executedUnavailableMigrations) > 0) {
         throw new ExecutedUnavailableMigrationsException($executedUnavailableMigrations);
     }
 }