コード例 #1
0
 /**
  * @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);
     }
 }
コード例 #2
0
 /**
  * @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();
 }
コード例 #3
0
 /**
  * @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);
 }
コード例 #4
0
 /**
  * @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);
 }