Mercurial > hg > isophonics-drupal-site
comparison vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 7a779792577d |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 namespace Composer\Installers; | |
3 | |
4 use Composer\DependencyResolver\Pool; | |
5 use Composer\Package\PackageInterface; | |
6 | |
7 class CakePHPInstaller extends BaseInstaller | |
8 { | |
9 protected $locations = array( | |
10 'plugin' => 'Plugin/{$name}/', | |
11 ); | |
12 | |
13 /** | |
14 * Format package name to CamelCase | |
15 */ | |
16 public function inflectPackageVars($vars) | |
17 { | |
18 if ($this->matchesCakeVersion('>=', '3.0.0')) { | |
19 return $vars; | |
20 } | |
21 | |
22 $nameParts = explode('/', $vars['name']); | |
23 foreach ($nameParts as &$value) { | |
24 $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value)); | |
25 $value = str_replace(array('-', '_'), ' ', $value); | |
26 $value = str_replace(' ', '', ucwords($value)); | |
27 } | |
28 $vars['name'] = implode('/', $nameParts); | |
29 | |
30 return $vars; | |
31 } | |
32 | |
33 /** | |
34 * Change the default plugin location when cakephp >= 3.0 | |
35 */ | |
36 public function getLocations() | |
37 { | |
38 if ($this->matchesCakeVersion('>=', '3.0.0')) { | |
39 $this->locations['plugin'] = $this->composer->getConfig()->get('vendor-dir') . '/{$vendor}/{$name}/'; | |
40 } | |
41 return $this->locations; | |
42 } | |
43 | |
44 /** | |
45 * Check if CakePHP version matches against a version | |
46 * | |
47 * @param string $matcher | |
48 * @param string $version | |
49 * @return bool | |
50 */ | |
51 protected function matchesCakeVersion($matcher, $version) | |
52 { | |
53 if (class_exists('Composer\Semver\Constraint\MultiConstraint')) { | |
54 $multiClass = 'Composer\Semver\Constraint\MultiConstraint'; | |
55 $constraintClass = 'Composer\Semver\Constraint\Constraint'; | |
56 } else { | |
57 $multiClass = 'Composer\Package\LinkConstraint\MultiConstraint'; | |
58 $constraintClass = 'Composer\Package\LinkConstraint\VersionConstraint'; | |
59 } | |
60 | |
61 $repositoryManager = $this->composer->getRepositoryManager(); | |
62 if ($repositoryManager) { | |
63 $repos = $repositoryManager->getLocalRepository(); | |
64 if (!$repos) { | |
65 return false; | |
66 } | |
67 $cake3 = new $multiClass(array( | |
68 new $constraintClass($matcher, $version), | |
69 new $constraintClass('!=', '9999999-dev'), | |
70 )); | |
71 $pool = new Pool('dev'); | |
72 $pool->addRepository($repos); | |
73 $packages = $pool->whatProvides('cakephp/cakephp'); | |
74 foreach ($packages as $package) { | |
75 $installed = new $constraintClass('=', $package->getVersion()); | |
76 if ($cake3->matches($installed)) { | |
77 return true; | |
78 } | |
79 } | |
80 } | |
81 return false; | |
82 } | |
83 } |