Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Locker.php

function Locker::setLockData

Locks provided data into lockfile.

@phpstan-param list<array{package: string, version: string, alias: string, alias_normalized: string}> $aliases

Parameters

PackageInterface[] $packages array of packages:

PackageInterface[]|null $devPackages array of dev packages or null if installed without --dev:

array<string, string> $platformReqs array of package name => constraint for required platform packages:

array<string, string> $platformDevReqs array of package name => constraint for dev-required platform packages:

string[][] $aliases array of aliases:

array<string, int> $stabilityFlags:

array<string, string|false> $platformOverrides:

bool $write Whether to actually write data to disk, useful in tests and for --dry-run:

File

vendor/composer/composer/src/Composer/Package/Locker.php, line 358

Class

Locker
Reads/writes project lockfile (composer.lock).

Namespace

Composer\Package

Code

public function setLockData(array $packages, ?array $devPackages, array $platformReqs, array $platformDevReqs, array $aliases, string $minimumStability, array $stabilityFlags, bool $preferStable, bool $preferLowest, array $platformOverrides, bool $write = true) : bool {
    // keep old default branch names normalized to DEFAULT_BRANCH_ALIAS for BC as that is how Composer 1 outputs the lock file
    // when loading the lock file the version is anyway ignored in Composer 2, so it has no adverse effect
    $aliases = array_map(static function ($alias) : array {
        if (in_array($alias['version'], [
            'dev-master',
            'dev-trunk',
            'dev-default',
        ], true)) {
            $alias['version'] = VersionParser::DEFAULT_BRANCH_ALIAS;
        }
        return $alias;
    }, $aliases);
    $lock = [
        '_readme' => [
            'This file locks the dependencies of your project to a known state',
            'Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies',
            'This file is @gener' . 'ated automatically',
        ],
        'content-hash' => $this->contentHash,
        'packages' => $this->lockPackages($packages),
        'packages-dev' => null,
        'aliases' => $aliases,
        'minimum-stability' => $minimumStability,
        'stability-flags' => $stabilityFlags,
        'prefer-stable' => $preferStable,
        'prefer-lowest' => $preferLowest,
    ];
    if (null !== $devPackages) {
        $lock['packages-dev'] = $this->lockPackages($devPackages);
    }
    $lock['platform'] = $platformReqs;
    $lock['platform-dev'] = $platformDevReqs;
    if (\count($platformOverrides) > 0) {
        $lock['platform-overrides'] = $platformOverrides;
    }
    $lock['plugin-api-version'] = PluginInterface::PLUGIN_API_VERSION;
    $lock = $this->fixupJsonDataType($lock);
    try {
        $isLocked = $this->isLocked();
    } catch (ParsingException $e) {
        $isLocked = false;
    }
    if (!$isLocked || $lock !== $this->getLockData()) {
        if ($write) {
            $this->lockFile
                ->write($lock);
            $this->lockDataCache = null;
            $this->virtualFileWritten = false;
        }
        else {
            $this->virtualFileWritten = true;
            $this->lockDataCache = JsonFile::parseJson(JsonFile::encode($lock));
        }
        return true;
    }
    return false;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal