diff options
Diffstat (limited to 'composer.prov')
-rwxr-xr-x | composer.prov | 43 |
1 files changed, 30 insertions, 13 deletions
diff --git a/composer.prov b/composer.prov index d8bb84d..4d92e5e 100755 --- a/composer.prov +++ b/composer.prov @@ -4,7 +4,7 @@ Use this script to generate bundled provides, e.g.: ./composer.prov vendor/composer/installed.php - Copyright (C) 2024 Remi Collet <remi@fedoraproject.org>. + Copyright (C) 2024-2025 Remi Collet <remi@fedoraproject.org>. SPDX-3.0-License-Identifier: GPL-2.0-or-later @@ -15,18 +15,30 @@ <https://www.gnu.org/philosophy/free-sw.en.html>. */ -// Check if composer "pretty_version" is usable in RPM -function isValid(Array $package) { - if (!isset($package['pretty_version']) - || empty($package['pretty_version']) - || strpos($package['pretty_version'], '-') +// Check if composer "name" and "pretty_version" are usable in RPM +function isValid(Array $package, $strict=true) { + // Only vendor/project + if (!isset($package['name']) + || !strpos($package['name'], '/') ) { return false; } + // pretty_version is required + if (!isset($package['pretty_version'])) { + return false; + } + if ($strict) { + // pretty_version is usable + if (empty($package['pretty_version']) + || strpos($package['pretty_version'], '-') + ) { + return false; + } + } return true; } -// Clean"pretty_version" +// Clean "pretty_version" function getVersion(Array $package) { return ltrim($package['pretty_version'], 'v'); } @@ -36,15 +48,20 @@ function run($file) { fputs(STDERR, "Search bundled libraries installed, parsing $file\n"); $installed = include $file; $main = false; - if (isset($installed['root']['name']) - && isValid($installed['root'])) { - + if (isValid($installed['root'], false)) { $main = $installed['root']['name']; - printf("php-composer(%s) = %s\n", $installed['root']['name'], getVersion($installed['root'])); + if (isValid($installed['root'])) { + printf("php-composer(%s) = %s\n", $main, getVersion($installed['root'])); + } } if (isset($installed['versions'])) foreach($installed['versions'] as $name => $v) { - if ($name !== $main && isValid($v)) { - printf("bundled(php-composer(%s)) = %s\n", $name, getVersion($v)); + if ($name !== $main) { + $v['name'] = $name; + if (isValid($v)) { + printf("bundled(php-composer(%s)) = %s\n", $name, getVersion($v)); + } else if (isValid($v, false)) { + printf("bundled(php-composer(%s))\n", $name); + } } } } |