/** * @override \ComponentManager\Step\Step * * @param \ComponentManager\Task\InstallTask|\ComponentManager\Task\PackageTask $task */ public function execute($task, LoggerInterface $logger) { $resolvedComponentVersions = $task->getResolvedComponentVersions(); foreach ($resolvedComponentVersions as $resolvedComponentVersion) { $this->tryComponent($resolvedComponentVersion, $logger); } }
/** * @override \ComponentManager\Step\Step * * @param \ComponentManager\Task\PackageTask $task */ public function execute($task, LoggerInterface $logger) { $uri = $task->getMoodleVersion()->getDownloadUri(); $logger->info('Downloading Moodle', ['uri' => $uri, 'archive' => $this->archive]); $client = new Client(); $client->get($uri, ['sink' => $this->archive]); $logger->info('Extracting Moodle archive', ['archive' => $this->archive, 'destination' => $this->destination]); $archive = new ZipArchive(); if (!$archive->open($this->archive)) { throw new InstallationFailureException("Unable to open archive \"{$this->archive}\"", InstallationFailureException::CODE_EXTRACTION_FAILED); } $archive->extractTo($this->destination); $archive->close(); }
/** * @override \ComponentManager\Command\AbstractCommand */ protected function execute(InputInterface $input, OutputInterface $output) { $projectFilename = $input->getOption(Argument::OPTION_PROJECT_FILE); $packageDestination = $this->platform->expandPath($input->getOption(Argument::OPTION_PACKAGE_DESTINATION)); $packageFormat = $input->getOption(Argument::OPTION_PACKAGE_FORMAT); $tempDirectory = $this->platform->createTempDirectory(); $archive = $tempDirectory . $this->platform->getDirectorySeparator() . 'moodle.zip'; $destination = $tempDirectory . $this->platform->getDirectorySeparator() . 'moodle'; $projectLockFilename = $destination . $this->platform->getDirectorySeparator() . 'componentmgr.lock.json'; $moodle = new Moodle($destination, $this->platform); $project = $this->getProject($projectFilename, $projectLockFilename); $task = new PackageTask($this->moodleApi, $project, $archive, $destination, $this->platform, $this->filesystem, $moodle, $packageFormat, $packageDestination); $task->execute($this->logger); }
/** * @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); }