function ComposerInspector::getConfig

Returns a config value from Composer.

Parameters

string $key: The config key to get.

string $context: The path of either the directory in which to run Composer, or a specific configuration file (such as a particular package's `composer.json`) from which to read specific values.

Return value

string|null The output data. Note that the caller must know the shape of the requested key's value: if it's a string, no further processing is needed, but if it is a boolean, an array or a map, JSON decoding should be applied.

See also

::getAllowPluginsConfig()

\Composer\Command\ConfigCommand::execute()

1 call to ComposerInspector::getConfig()
ComposerInspector::getAllowPluginsConfig in core/modules/package_manager/src/ComposerInspector.php
Returns the value of `allow-plugins` config setting.

File

core/modules/package_manager/src/ComposerInspector.php, line 227

Class

ComposerInspector
Defines a class to get information from Composer.

Namespace

Drupal\package_manager

Code

public function getConfig(string $key, string $context) : ?string {
    $this->validateExecutable();
    $command = [
        'config',
        $key,
    ];
    // If we're consulting a specific file for the config value, we don't need
    // to validate the project as a whole.
    if (is_file($context)) {
        $command[] = "--file={$context}";
    }
    else {
        $this->validateProject($context);
        $command[] = "--working-dir={$context}";
    }
    try {
        $this->runner
            ->run($command, callback: $this->processCallback
            ->reset());
    } catch (RuntimeException $e) {
        // Assume any error from `composer config` is about an undefined key-value
        // pair which may have a known default value.
        return match ($key) {    'extra' => '{}',
            default => throw $e,
        
        };
    }
    $output = $this->processCallback
        ->getOutput();
    return $output ? trim(implode('', $output)) : NULL;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.