Merge "Add columns option to Special:PrefixIndex"
[lhc/web/wiklou.git] / includes / composer / ComposerPackageModifier.php
1 <?php
2
3 use Composer\Package\Link;
4 use Composer\Package\LinkConstraint\VersionConstraint;
5 use Composer\Package\Package;
6
7 /**
8 * @licence GNU GPL v2+
9 * @author Jeroen De Dauw < jeroendedauw@gmail.com >
10 */
11 class ComposerPackageModifier {
12
13 const MEDIAWIKI_PACKAGE_NAME = 'mediawiki/mediawiki';
14
15 protected $package;
16 protected $versionNormalizer;
17 protected $versionFetcher;
18
19 public function __construct( Package $package, ComposerVersionNormalizer $versionNormalizer, MediaWikiVersionFetcher $versionFetcher ) {
20 $this->package = $package;
21 $this->versionNormalizer = $versionNormalizer;
22 $this->versionFetcher = $versionFetcher;
23 }
24
25 public function setProvidesMediaWiki() {
26 $this->setLinkAsProvides( $this->newMediaWikiLink() );
27 }
28
29 private function setLinkAsProvides( Link $link ) {
30 $this->package->setProvides( array( $link ) );
31 }
32
33 private function newMediaWikiLink() {
34 $version = $this->getMediaWikiVersionConstraint();
35
36 $link = new Link(
37 '__root__',
38 self::MEDIAWIKI_PACKAGE_NAME,
39 $version,
40 'provides',
41 $version->getPrettyString()
42 );
43
44 return $link;
45 }
46
47 private function getMediaWikiVersionConstraint() {
48 $mvVersion = $this->versionFetcher->fetchVersion();
49 $mvVersion = $this->versionNormalizer->normalizeSuffix( $mvVersion );
50
51 $version = new VersionConstraint( '==', $this->versionNormalizer->normalizeLevelCount( $mvVersion ) );
52 $version->setPrettyString( $mvVersion );
53
54 return $version;
55 }
56
57 }