Composer.lock auslesen/auswerten
Autor: Ralf v.d.Mark
eingetragen: Dienstag, 08. August 2023 um 09:44 Uhr (32/2023 Kalenderwoche)
geändert: Dienstag, 08. August 2023 um 10:28 Uhr (32/2023 Kalenderwoche)
Keywords: Composer.lock auslesen auswerten
Kategorien: PHP-ZF, PHP, PHPUnit, PHP-Symfony,
Text:
Composer.lock auslesen/auswerten
Quellcode:
/**
* Liest die "composer.lock" ein und zeigt die installierten Packages und Versionen
*
* Sortierung per GET übergabe, optional!
*
* @param string $request
* @return array
*/
function showPackagesFromComposerLock(string $sortierung = 'name'): array
{
$sort = mb_strtolower(trim($sortierung ?? 'time'));
$linkZuDieserSeite = 'index.php';
if ($sort === 'name') {
$sortierungAendernLink = ' (alphabetisch <a href="' . $linkZuDieserSeite . '?sort=time"
title="Ändern in chronologische Reihenfolge">[ändern]</a>)';
} else {
$sort = 'time';
$sortierungAendernLink = ' (jüngste zuerst <a href="' . $linkZuDieserSeite . '?sort=name"
title="Ändern in alphabetische Reihenfolge">[ändern]</a>)';
}//ENDE: else ==> if ($sort === 'alphabet')
$zaehlerSumme = 0;
$zaehlerPackages = 0;
$zaehlerPackagesDev = 0;
$composerLock = json_decode(file_get_contents('./../composer.lock'), true);
foreach ($composerLock['packages'] as $package) {
++$zaehlerSumme;
$composerLockArray[$package[$sort]] = ['zaehler' => ++$zaehlerPackages,
'name' => $package['name'],
'version' => $package['version'],
'timeRaw' => $package['time'],
'timeToRead' => date('d.m.Y, H:i', strtotime($package['time']))
];
}
if (!empty($composerLock['packages-dev'])) {
foreach ($composerLock['packages-dev'] as $package) {
++$zaehlerSumme;
$composerLockArrayDev[$package[$sort]] = ['zaehler' => ++$zaehlerPackagesDev,
'name' => $package['name'],
'version' => $package['version'],
'timeRaw' => $package['time'],
'timeToRead' => date('d.m.Y, H:i', strtotime($package['time']))
];
}
} else {
$composerLockArrayDev = [];
}//ENDE: else ==> if (!empty($composerLock['packages-dev']))
if ($sort === 'name') {
ksort($composerLockArray);
ksort($composerLockArrayDev);
} else {
krsort($composerLockArray);
krsort($composerLockArrayDev);
}//ENDE: else ==> if ($sort === 'alphabet')
$summePackagesAnzeigeAlles = ($zaehlerPackagesDev === 0 ?
$zaehlerPackages
:
$zaehlerPackages . ' + ' . $zaehlerPackagesDev . '(<a href="#packagesDev">dev</a>) = ' . $zaehlerSumme);
return [
'composerLockArray' => $composerLockArray,
'composerLockArrayDev' => $composerLockArrayDev,
'sortierungAendernLink' => $sortierungAendernLink,
'zaehlerPackages' => $zaehlerPackages,
'zaehlerPackagesDev' => $zaehlerPackagesDev,
'summePackagesAnzeigeAlles' => $summePackagesAnzeigeAlles,
'summePackages' => $zaehlerSumme
];
}
$showPackagesFromComposerLock = showPackagesFromComposerLock('name');
echo '<hr>
<pre>$showPackagesFromComposerLock[RECTOR]: '.print_r($showPackagesFromComposerLock['composerLockArray']['rector/rector'], true).'</pre>
<hr>
<pre>showPackagesFromComposerLock(). '.print_r($showPackagesFromComposerLock, true).'</pre><hr>';