summaryrefslogtreecommitdiffstats
path: root/composer.prov
diff options
context:
space:
mode:
Diffstat (limited to 'composer.prov')
-rwxr-xr-xcomposer.prov43
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);
+ }
}
}
}