From a5feee5594a4e5f1ec498cb81d4eee5bad976d47 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 10 Feb 2025 16:47:22 +0100 Subject: better handling of package with version in name --- class/PackagistClient.php | 6 ++++-- 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: -- cgit