-
-
Save chillu/85536a597758f6c6577a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/mysite/code/services/AddonUpdater.php b/mysite/code/services/AddonUpdater.php | |
index cb3df38..01a5f9b 100644 | |
--- a/mysite/code/services/AddonUpdater.php | |
+++ b/mysite/code/services/AddonUpdater.php | |
@@ -5,6 +5,7 @@ use Composer\Package\CompletePackage; | |
use Composer\Package\LinkConstraint\VersionConstraint; | |
use Guzzle\Http\Exception\ClientErrorResponseException; | |
use SilverStripe\Elastica\ElasticaService; | |
+use Packagist\Api\Result\Package; | |
/** | |
* Updates all add-ons from Packagist. | |
@@ -58,8 +59,9 @@ class AddonUpdater { | |
} | |
$this->elastica->startBulkIndex(); | |
- | |
- foreach ($this->packagist->getGroupedPackages() as $name => $versions) { | |
+ foreach ($this->packagist->getPackages() as $package) { | |
+ $name = $package->getName(); | |
+ $versions = $package->getVersions(); | |
$addon = Addon::get()->filter('Name', $name)->first(); | |
if (!$addon) { | |
@@ -69,18 +71,16 @@ class AddonUpdater { | |
} | |
usort($versions, function ($a, $b) { | |
- return version_compare($a->getVersion(), $b->getVersion()); | |
+ return version_compare($a->getVersionNormalized(), $b->getVersionNormalized()); | |
}); | |
- $this->updateAddon($addon, array_filter($versions, function ($version) { | |
- return !($version instanceof AliasPackage); | |
- })); | |
+ $this->updateAddon($addon, $package, $versions); | |
} | |
$this->elastica->endBulkIndex(); | |
} | |
- private function updateAddon(Addon $addon, array $versions) { | |
+ private function updateAddon(Addon $addon, Package $package, array $versions) { | |
if (!$addon->VendorID) { | |
$vendor = AddonVendor::get()->filter('Name', $addon->VendorName())->first(); | |
@@ -93,19 +93,11 @@ class AddonUpdater { | |
$addon->VendorID = $vendor->ID; | |
} | |
- try { | |
- $details = $this->packagist->getPackageDetails($addon->Name); | |
- $details = $details['package']; | |
- | |
- $addon->Type = str_replace('silverstripe-', '', $details['type']); | |
- $addon->Description = $details['description']; | |
- $addon->Released = $details['time']; | |
- $addon->Repository = $details['repository']; | |
- | |
- if (isset($details['downloads']['total']) && is_int($details['downloads']['total'])) { | |
- $addon->Downloads = $details['downloads']['total']; | |
- } | |
- } catch (ClientErrorResponseException $e) {} | |
+ $addon->Type = str_replace('silverstripe-', '', $package->getType()); | |
+ $addon->Description = $package->getDescription(); | |
+ $addon->Released = strtotime($package->getTime()); | |
+ $addon->Repository = $package->getRepository(); | |
+ $addon->Downloads = $package->getDownloads()->getTotal(); | |
foreach ($versions as $version) { | |
$this->updateVersion($addon, $version); | |
@@ -121,7 +113,7 @@ class AddonUpdater { | |
$built = (int) $addon->obj('BuiltAt')->format('U'); | |
foreach ($versions as $version) { | |
- if ($version->getReleaseDate()->getTimestamp() > $built) { | |
+ if (strtotime($version->getTime()) > $built) { | |
$this->resque->queue('update', 'BuildAddonJob', array('id' => $addon->ID)); | |
$addon->BuildQueued = true; | |
@@ -135,7 +127,7 @@ class AddonUpdater { | |
$addon->write(); | |
} | |
- private function updateVersion(Addon $addon, CompletePackage $package) { | |
+ private function updateVersion(Addon $addon, Version $package) { | |
$version = null; | |
if ($addon->isInDB()) { | |
@@ -149,7 +141,7 @@ class AddonUpdater { | |
$version->Name = $package->getName(); | |
$version->Type = str_replace('silverstripe-', '', $package->getType()); | |
$version->Description = $package->getDescription(); | |
- $version->Released = $package->getReleaseDate()->getTimestamp(); | |
+ $version->Released = strtotime($package->getTime()); | |
$keywords = $package->getKeywords(); | |
@@ -162,23 +154,25 @@ class AddonUpdater { | |
} | |
} | |
- $version->Version = $package->getVersion(); | |
- $version->PrettyVersion = $package->getPrettyVersion(); | |
- $version->Development = $package->isDev(); | |
+ $version->Version = $package->getVersionNormalized(); | |
+ $version->PrettyVersion = $package->getVersion(); | |
+ // $version->Development = $package->isDev(); | |
- $version->SourceType = $package->getSourceType(); | |
- $version->SourceUrl = $package->getSourceUrl(); | |
- $version->SourceReference = $package->getSourceReference(); | |
+ $version->SourceType = $package->getSource()->getType(); | |
+ $version->SourceUrl = $package->getSource()->getUrl(); | |
+ $version->SourceReference = $package->getSource()->getReference(); | |
- $version->DistType = $package->getDistType(); | |
- $version->DistUrl = $package->getDistUrl(); | |
- $version->DistReference = $package->getDistReference(); | |
- $version->DistChecksum = $package->getDistSha1Checksum(); | |
+ if($package->getDist()) { | |
+ $version->DistType = $package->getDist()->getType(); | |
+ $version->DistUrl = $package->getDist()->getUrl(); | |
+ $version->DistReference = $package->getDist()->getReference(); | |
+ $version->DistChecksum = $package->getDist()->getShasum(); | |
+ } | |
$version->Extra = $package->getExtra(); | |
$version->Homepage = $package->getHomepage(); | |
$version->License = $package->getLicense(); | |
- $version->Support = $package->getSupport(); | |
+ // $version->Support = $package->getSupport(); | |
$addon->Versions()->add($version); | |
@@ -205,11 +199,11 @@ class AddonUpdater { | |
}; | |
$types = array( | |
- 'require' => 'getRequires', | |
- 'require-dev' => 'getDevRequires', | |
- 'provide' => 'getProvides', | |
- 'conflict' => 'getConflicts', | |
- 'replace' => 'getReplaces' | |
+ 'require' => 'getRequire', | |
+ 'require-dev' => 'getRequireDev', | |
+ 'provide' => 'getProvide', | |
+ 'conflict' => 'getConflict', | |
+ 'replace' => 'getReplace' | |
); | |
foreach ($types as $type => $method) { | |
diff --git a/mysite/code/services/PackagistService.php b/mysite/code/services/PackagistService.php | |
index 05a9be9..c3c1eda 100644 | |
--- a/mysite/code/services/PackagistService.php | |
+++ b/mysite/code/services/PackagistService.php | |
@@ -55,14 +55,16 @@ class PackagistService { | |
$loader = new ArrayLoader(); | |
$client = new Packagist; | |
+ SS_Log::log('PackagistService: Fetching packages overview from server', Zend_Log::INFO); | |
$names = $client->search('', array('type'=>'silverstripe')); | |
foreach($names as $name) { | |
- foreach($this->pool->whatProvides($name->getName()) as $candidate) { | |
- if(strpos($candidate->getType(), 'silverstripe-') === 0) { | |
- $packages[] = $candidate; | |
- } | |
- } | |
+ SS_Log::log( | |
+ sprintf('PackagistService: Fetching package details for "%s" from server', $name->getName()), | |
+ Zend_Log::INFO | |
+ ); | |
+ $package = $client->get($name->getName()); | |
+ $packages[] = $package; | |
} | |
return $packages; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment