diff options
| -rw-r--r-- | NEWS | 5 | ||||
| -rw-r--r-- | composer-generators.spec | 7 | ||||
| -rwxr-xr-x | composer.prov | 43 | 
3 files changed, 40 insertions, 15 deletions
@@ -1,6 +1,11 @@  composer-generators Release Notes  ================================= +# Version 0.1.2 - 2025-02-04 + +* provide bundled library without version +  when version is not valid +  # Version 0.1.1 - 2024-12-30  * remove 'v' in version number diff --git a/composer-generators.spec b/composer-generators.spec index 8e6d5b8..1e785c0 100644 --- a/composer-generators.spec +++ b/composer-generators.spec @@ -1,6 +1,6 @@  # remirepo/fedora spec file for composer-generators  # -# Copyright (c) 2024 Remi Collet +# Copyright (c) 2024-2025 Remi Collet  # License: GPL-2.0-or-later  # https://www.gnu.org/licenses/gpl-2.0.en.html  # @@ -8,7 +8,7 @@  #  Name:           composer-generators -Version:        0.1.1 +Version:        0.1.2  Release:        1%{?dist}  # Use same license than RPM  License:        GPL-2.0-or-later @@ -59,6 +59,9 @@ install -Dpm 644 composer.attr %{buildroot}%{_fileattrsdir}/composer.attr  %changelog +* Tue Feb  4 2025 Remi Collet <remi@remirepo.net> - 0.1.2-1 +- version 0.1.2 +  * Mon Dec 30 2024 Remi Collet <remi@remirepo.net> - 0.1.1-1  - version 0.1.1 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); +			}  		}  	}  }  | 
