2016-08-21 4 views
0

Для консольного приложения на базе Symfony мне необходимо прочитать его номер версии из его файла-композитора (а не псевдонимы ветви).Composer, Прочитать номер версии пакета программно

Вручную, я могу использовать composer show -s для получения информации о корневом пакете, но, похоже, нет никакой команды, чтобы получить чистую версию моего пакета.

Целью является автоматическое отображение версии установленного пакета при запуске приложения без необходимости использования файлов * .txt или других файлов, содержащих семантический номер версии.

К сожалению, я не знаком с архитектурой композитора, поэтому я понятия не имею, какие компоненты я могу использовать для достижения этого.

Любые идеи или, возможно, уже сделанные пакеты, которые решают, в основном приветствуются.

ответ

1

Я знаю, как это было поздно ответить, но вы можете прочитать информацию из файла JSON, написанную композитором.

файл находится по адресу vendor/composer/installed.json.

Прочтите JSON, проанализируйте его и получите нужную информацию.

This упаковка. Это какой-либо какой.

1

Установка Composer в проекте

composer require composer/composer --dev 

example.php

<?php 
// Include Composer Autoload 
require __DIR__ . '/vendor/autoload.php'; 

use Composer\Factory; 
use Composer\IO\NullIO; 

$composer = Factory::create(new NullIo(), './composer.json', false); 
$localRepo = $composer->getRepositoryManager()->getLocalRepository(); 

foreach ($localRepo->getPackages() as $package) { 
    echo $package->getName() . PHP_EOL; 
    echo $package->getVersion() . PHP_EOL; 
    echo $package->getType() . PHP_EOL; 
    // ... 
}