Current File : /var/www/prestashop/modules/ps_metrics/vendor/friendsofphp/php-cs-fixer/src/ToolInfo.php
<?php

declare (strict_types=1);
/*
 * This file is part of PHP CS Fixer.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *     Dariusz Rumiński <dariusz.ruminski@gmail.com>
 *
 * This source file is subject to the MIT license that is bundled
 * with this source code in the file LICENSE.
 */
namespace ps_metrics_module_v4_0_6\PhpCsFixer;

use ps_metrics_module_v4_0_6\PhpCsFixer\Console\Application;
/**
 * Obtain information about using version of tool.
 *
 * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
 *
 * @internal
 */
final class ToolInfo implements ToolInfoInterface
{
    public const COMPOSER_PACKAGE_NAME = 'friendsofphp/php-cs-fixer';
    public const COMPOSER_LEGACY_PACKAGE_NAME = 'fabpot/php-cs-fixer';
    /**
     * @var null|array
     */
    private $composerInstallationDetails;
    /**
     * @var null|bool
     */
    private $isInstalledByComposer;
    public function getComposerInstallationDetails() : array
    {
        if (!$this->isInstalledByComposer()) {
            throw new \LogicException('Cannot get composer version for tool not installed by composer.');
        }
        if (null === $this->composerInstallationDetails) {
            $composerInstalled = \json_decode(\file_get_contents($this->getComposerInstalledFile()), \true);
            $packages = $composerInstalled['packages'] ?? $composerInstalled;
            foreach ($packages as $package) {
                if (\in_array($package['name'], [self::COMPOSER_PACKAGE_NAME, self::COMPOSER_LEGACY_PACKAGE_NAME], \true)) {
                    $this->composerInstallationDetails = $package;
                    break;
                }
            }
        }
        return $this->composerInstallationDetails;
    }
    public function getComposerVersion() : string
    {
        $package = $this->getComposerInstallationDetails();
        $versionSuffix = '';
        if (isset($package['dist']['reference'])) {
            $versionSuffix = '#' . $package['dist']['reference'];
        }
        return $package['version'] . $versionSuffix;
    }
    public function getVersion() : string
    {
        if ($this->isInstalledByComposer()) {
            return Application::VERSION . ':' . $this->getComposerVersion();
        }
        return Application::VERSION;
    }
    public function isInstalledAsPhar() : bool
    {
        return \str_starts_with(__DIR__, 'phar://');
    }
    public function isInstalledByComposer() : bool
    {
        if (null === $this->isInstalledByComposer) {
            $this->isInstalledByComposer = !$this->isInstalledAsPhar() && \file_exists($this->getComposerInstalledFile());
        }
        return $this->isInstalledByComposer;
    }
    public function getPharDownloadUri(string $version) : string
    {
        return \sprintf('https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/%s/php-cs-fixer.phar', $version);
    }
    private function getComposerInstalledFile() : string
    {
        return __DIR__ . '/../../../composer/installed.json';
    }
}