summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--class/PackagistClient.php6
-rw-r--r--class/Parser.php12
2 files changed, 14 insertions, 4 deletions
diff --git a/class/PackagistClient.php b/class/PackagistClient.php
index 2120d36..5ea8429 100644
--- a/class/PackagistClient.php
+++ b/class/PackagistClient.php
@@ -68,10 +68,9 @@ class PackagistClient
return ($rep ? json_decode($rep, true) : false);
}
- function getPackage($name)
+ function getPackage($name, $crt=0, $max=0)
{
$unstable = array('alpha', 'beta', 'rc');
-
$ret = false;
$pkgs = $this->getPackageData($name);
if ($pkgs) {
@@ -83,6 +82,9 @@ class PackagistClient
);
foreach ($pkgs['package']['versions'] as $notused => $pkg) {
$pkver = $pkg['version'];
+ if ($pkver < $crt || $pkver > $max) {
+ continue;
+ }
if (preg_match('/^v[0-9]/', $pkver)) {
$pkver = substr($pkver, 1);
}
diff --git a/class/Parser.php b/class/Parser.php
index ca00ac8..bb5306f 100644
--- a/class/Parser.php
+++ b/class/Parser.php
@@ -516,12 +516,20 @@ class Parser
self::log("Packagist search releases");
$pk = new PackagistClient();
- $nb = $uptable->delete(array('type'=>'composer'));
+ $nb = $uptable->delete(['type'=>'composer']);
self::log("Delete $nb packages");
$tot = 0;
foreach($pktable->request(array('ORDER'=>'rpmname')) as $rec) {
- if ($rep = $pk->getPackage($rec['pkgname'])) {
+ if (preg_match('/[0-9]+$/', $rec['rpmname'], $reg)) {
+ // This already a versionned name
+ $crt = intval($reg[0]);
+ $max = $crt+1;
+ } else {
+ $crt = 0;
+ $max = 99999;
+ }
+ if ($rep = $pk->getPackage($rec['pkgname'], $crt, $max)) {
$v = explode('/', $rec['pkgname']);
switch(count($v)) {
case 3: