Composer.lock auslesen/auswerten

edit | delete

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>';