/** * @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); } }
/** * @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); } }