composer info
не предоставит вам эту информацию.
Самый простой способ - получить ее непосредственно из composer.lock
. Вместо того, чтобы писать свой собственный анализатор, вы можете использовать готовый инструмент, такой как jq .
После загрузки вы можете написать выражение, подобное этому:
jq -c ".packages[]|{url:.source.url, type: .source.type}" composer.lock
Это отфильтровывает свойство packages
composer.lock
и создаст вывод, очень похожий на тот, который вам нужен. Например:
{"url":"https://github.com/api-platform/api-pack.git","type":"git"}
{"url":"https://github.com/api-platform/core.git","type":"git"}
{"url":"https://github.com/aws/aws-sdk-php.git","type":"git"}
{"url":"https://github.com/aws/aws-sdk-php-symfony.git","type":"git"}
{"url":"https://github.com/beberlei/DoctrineExtensions.git","type":"git"}
Это другое выражение создаст массив объектов, уже разделенных запятой, как в вашем примере (но менее компактный):
jq "[.packages[]|{url:.source.url, type: .source.type}]" composer.lock
Результаты:
[
{
"url": "https://github.com/api-platform/api-pack.git",
"type": "git"
},
{
"url": "https://github.com/api-platform/core.git",
"type": "git"
},
{
"url": "https://github.com/aws/aws-sdk-php.git",
"type": "git"
},
{
"url": "https://github.com/aws/aws-sdk-php-symfony.git",
"type": "git"
},
{
"url": "https://github.com/beberlei/DoctrineExtensions.git",
"type": "git"
}
[...]
]