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