diff options
author | Remi Collet <remi@remirepo.net> | 2025-02-10 16:47:22 +0100 |
---|---|---|
committer | Remi Collet <remi@php.net> | 2025-02-10 16:47:22 +0100 |
commit | a5feee5594a4e5f1ec498cb81d4eee5bad976d47 (patch) | |
tree | 5e1723c0178200c7242a7bfc82f4136289659c3d | |
parent | f5130abdd9c6bcad475df038b44f0d05873ae47a (diff) |
-rw-r--r-- | class/PackagistClient.php | 6 | ||||
-rw-r--r-- | class/Parser.php | 12 |
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: |