private static function createPackage($name, $url, $ref)
 {
     $package = new Package\Package($name, '1.0.0', 'v1.0.0');
     $package->setDistUrl($url);
     $package->setDistReference($ref);
     return $package;
 }
 /**
  * @param \Composer\Package\Package $package
  */
 public function addDistToPackage(\Composer\Package\Package $package)
 {
     $this->initializeData();
     $versionDigits = explode('.', $package->getPrettyVersion());
     if (count($versionDigits) === 3) {
         $branchVersion = $versionDigits[0] . '.' . $versionDigits[1];
         $patchlevelVersion = $versionDigits[0] . '.' . $versionDigits[1] . '.' . $versionDigits[2];
         if (isset($this->data[$branchVersion]) && isset($this->data[$branchVersion]['releases'][$patchlevelVersion])) {
             $releaseData = $this->data[$branchVersion]['releases'][$patchlevelVersion];
             if (isset($releaseData['checksums']['tar']['sha1']) && isset($releaseData['url']['tar'])) {
                 $package->setDistType('tar');
                 $package->setDistReference($patchlevelVersion);
                 $package->setDistUrl($releaseData['url']['tar']);
                 $package->setDistSha1Checksum($releaseData['checksums']['tar']['sha1']);
             }
         }
     }
 }
 public function build(Addon $addon)
 {
     $composer = $this->packagist->getComposer();
     $downloader = $composer->getDownloadManager();
     $packageVersions = $this->packagist->getPackageVersions($addon->Name);
     $time = time();
     if (!$packageVersions) {
         throw new Exception('Could not find corresponding Packagist versions');
     }
     // Get the latest local and packagist version pair.
     $version = $addon->Versions()->filter('Development', true)->first();
     foreach ($packageVersions as $packageVersion) {
         if ($packageVersion->getVersionNormalized() != $version->Version) {
             continue;
         }
         $path = implode('/', array(TEMP_FOLDER, self::ADDONS_DIR, $addon->Name));
         // Convert PackagistAPI result into class compatible with Composer logic
         $package = new Package($addon->Name, $packageVersion->getVersionNormalized(), $packageVersion->getVersion());
         $package->setExtra($packageVersion->getExtra());
         if ($source = $packageVersion->getSource()) {
             $package->setSourceUrl($source->getUrl());
             $package->setSourceType($source->getType());
             $package->setSourceReference($source->getReference());
         }
         if ($dist = $packageVersion->getDist()) {
             $package->setDistUrl($dist->getUrl());
             $package->setDistType($dist->getType());
             $package->setDistReference($dist->getReference());
         }
         $this->download($package, $path);
         $this->buildReadme($addon, $path);
         $this->buildScreenshots($addon, $package, $path);
     }
     $addon->LastBuilt = $time;
     $addon->write();
 }