wiki.techinc.nl/includes/composer/ComposerPackageModifier.php
cicalese 02df9d65ad Pass link in a map
In composer starting at version 2.2.0, Package::setProvides must be
called with a map of lowercased package name => Link object rather
than an indexed array.

Bug: T298261
Change-Id: Ic178c00f588a0ff8e4d5fe74c3d6bfb3ebf9d394
2021-12-23 17:54:05 +00:00

55 lines
1.3 KiB
PHP

<?php
use Composer\Package\Link;
use Composer\Package\Package;
use Composer\Semver\Constraint\Constraint;
/**
* @license GPL-2.0-or-later
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
*/
class ComposerPackageModifier {
private const MEDIAWIKI_PACKAGE_NAME = 'mediawiki/mediawiki';
protected $package;
protected $versionNormalizer;
protected $versionFetcher;
/**
* @param Package $package
* @param ComposerVersionNormalizer $versionNormalizer
* @param MediaWikiVersionFetcher $versionFetcher
*/
public function __construct(
Package $package,
ComposerVersionNormalizer $versionNormalizer,
MediaWikiVersionFetcher $versionFetcher
) {
$this->package = $package;
$this->versionNormalizer = $versionNormalizer;
$this->versionFetcher = $versionFetcher;
}
public function setProvidesMediaWiki() {
$mvVersion = $this->versionFetcher->fetchVersion();
$mvVersion = $this->versionNormalizer->normalizeSuffix( $mvVersion );
$version = new Constraint(
'==',
$this->versionNormalizer->normalizeLevelCount( $mvVersion )
);
$version->setPrettyString( $mvVersion );
$link = new Link(
'__root__',
self::MEDIAWIKI_PACKAGE_NAME,
$version,
'provides',
$version->getPrettyString()
);
$this->package->setProvides( [ self::MEDIAWIKI_PACKAGE_NAME => $link ] );
}
}