diff options
Diffstat (limited to 'checkpkgist.php')
-rwxr-xr-x | checkpkgist.php | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/checkpkgist.php b/checkpkgist.php index 6acc6c8..33aee0e 100755 --- a/checkpkgist.php +++ b/checkpkgist.php @@ -65,10 +65,46 @@ class PkgClient { } } +function getMax($name, $rpm) { + static $vers = NULL; + global $pkgs; + + if (is_null($vers)) { + if ($vers = file_get_contents(__DIR__."/multiver.json")) { + $vers = json_decode($vers, true, 5); + } else { + $vers = []; + } + } + + $rpms = array_keys($pkgs, $name); + $crt = 0; + $max = 9999; + + if (preg_match('/[0-9]+$/', $rpm, $reg)) { + // This already a versionned name + $crt = intval($reg[0]); + } + if (isset($vers[$rpm])) { + $crt = $vers[$rpm]; + $max = $crt+1; + } + foreach($rpms as $alt) { + if ($alt != $rpm && preg_match('/[0-9]+$/', $alt, $reg)) { + $ver = intval($reg[0]); + if ($ver>$crt && $ver<$max) { + $max = $ver; + } + } + } + return $max; +} + function run($name, $rpm) { global $quiet, $verb, $client; $len = 50; + $limit = getMax($name, $rpm); if (in_array($name, ['znerol/php-stringprep', 'psr/http-message-implementation'])) { return; @@ -110,6 +146,9 @@ function run($name, $rpm) { $maxver = $pkver; $maxdat = $date; } + if (version_compare($pkver, $limit, 'ge')) { + continue; + } if (version_compare($pkver, $rpmver, 'gt')) { $diff = $date->diff(new DateTime("now")); $rpm2 = $rpm; @@ -225,9 +264,11 @@ for ($i=1 ; $i<$_SERVER['argc'] ; $i++) { } if (count($tmp)) { $verb = true; - $pkgs = $tmp; + $scan = $tmp; +} else { + $scan = $pkgs; } -foreach ($pkgs as $rpm => $name) { +foreach ($scan as $rpm => $name) { run($name, $rpm); } echo str_repeat(' ', 80)."\n"; |