/** * @override \ComponentManager\Step\Step * * @param \ComponentManager\Task\PackageTask $task */ public function execute($task, LoggerInterface $logger) { $versions = $this->api->getMoodleVersions(); $logger->info('Resolving Moodle version from specification', ['specification' => $this->specification, 'availableVersions' => count($versions)]); $scores = []; foreach ($versions as $index => $version) { if ($score = $version->satisfies($this->specification)) { $scores[$score] = $version; } } if (!count($scores)) { throw new UnsatisfiedVersionException("Unable to satisfy Moodle version \"{$this->specification}\"", UnsatisfiedVersionException::CODE_UNKNOWN_VERSION); } ksort($scores); /** @var \ComponentManager\MoodleVersion $version */ $version = end($scores); $logger->info('Selected Moodle release', ['build' => $version->getBuild(), 'release' => $version->getRelease(), 'score' => key($scores)]); $task->setMoodleVersion($version); }