Mercurial > hg > isophonics-drupal-site
comparison vendor/composer/installers/src/Composer/Installers/Installer.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | 7a779792577d |
children |
comparison
equal
deleted
inserted
replaced
16:c2387f117808 | 17:129ea1e6d783 |
---|---|
1 <?php | 1 <?php |
2 | |
2 namespace Composer\Installers; | 3 namespace Composer\Installers; |
3 | 4 |
5 use Composer\Composer; | |
6 use Composer\Installer\BinaryInstaller; | |
7 use Composer\Installer\LibraryInstaller; | |
4 use Composer\IO\IOInterface; | 8 use Composer\IO\IOInterface; |
5 use Composer\Installer\LibraryInstaller; | |
6 use Composer\Package\PackageInterface; | 9 use Composer\Package\PackageInterface; |
7 use Composer\Repository\InstalledRepositoryInterface; | 10 use Composer\Repository\InstalledRepositoryInterface; |
11 use Composer\Util\Filesystem; | |
8 | 12 |
9 class Installer extends LibraryInstaller | 13 class Installer extends LibraryInstaller |
10 { | 14 { |
15 | |
11 /** | 16 /** |
12 * Package types to installer class map | 17 * Package types to installer class map |
13 * | 18 * |
14 * @var array | 19 * @var array |
15 */ | 20 */ |
21 'annotatecms' => 'AnnotateCmsInstaller', | 26 'annotatecms' => 'AnnotateCmsInstaller', |
22 'bitrix' => 'BitrixInstaller', | 27 'bitrix' => 'BitrixInstaller', |
23 'bonefish' => 'BonefishInstaller', | 28 'bonefish' => 'BonefishInstaller', |
24 'cakephp' => 'CakePHPInstaller', | 29 'cakephp' => 'CakePHPInstaller', |
25 'chef' => 'ChefInstaller', | 30 'chef' => 'ChefInstaller', |
31 'civicrm' => 'CiviCrmInstaller', | |
26 'ccframework' => 'ClanCatsFrameworkInstaller', | 32 'ccframework' => 'ClanCatsFrameworkInstaller', |
27 'cockpit' => 'CockpitInstaller', | 33 'cockpit' => 'CockpitInstaller', |
28 'codeigniter' => 'CodeIgniterInstaller', | 34 'codeigniter' => 'CodeIgniterInstaller', |
29 'concrete5' => 'Concrete5Installer', | 35 'concrete5' => 'Concrete5Installer', |
30 'craft' => 'CraftInstaller', | 36 'craft' => 'CraftInstaller', |
101 'zikula' => 'ZikulaInstaller', | 107 'zikula' => 'ZikulaInstaller', |
102 'prestashop' => 'PrestashopInstaller' | 108 'prestashop' => 'PrestashopInstaller' |
103 ); | 109 ); |
104 | 110 |
105 /** | 111 /** |
112 * Installer constructor. | |
113 * | |
114 * Disables installers specified in main composer extra installer-disable | |
115 * list | |
116 * | |
117 * @param IOInterface $io | |
118 * @param Composer $composer | |
119 * @param string $type | |
120 * @param Filesystem|null $filesystem | |
121 * @param BinaryInstaller|null $binaryInstaller | |
122 */ | |
123 public function __construct( | |
124 IOInterface $io, | |
125 Composer $composer, | |
126 $type = 'library', | |
127 Filesystem $filesystem = null, | |
128 BinaryInstaller $binaryInstaller = null | |
129 ) { | |
130 parent::__construct($io, $composer, $type, $filesystem, | |
131 $binaryInstaller); | |
132 $this->removeDisabledInstallers(); | |
133 } | |
134 | |
135 /** | |
106 * {@inheritDoc} | 136 * {@inheritDoc} |
107 */ | 137 */ |
108 public function getInstallPath(PackageInterface $package) | 138 public function getInstallPath(PackageInterface $package) |
109 { | 139 { |
110 $type = $package->getType(); | 140 $type = $package->getType(); |
195 */ | 225 */ |
196 private function getIO() | 226 private function getIO() |
197 { | 227 { |
198 return $this->io; | 228 return $this->io; |
199 } | 229 } |
230 | |
231 /** | |
232 * Look for installers set to be disabled in composer's extra config and | |
233 * remove them from the list of supported installers. | |
234 * | |
235 * Globals: | |
236 * - true, "all", and "*" - disable all installers. | |
237 * - false - enable all installers (useful with | |
238 * wikimedia/composer-merge-plugin or similar) | |
239 * | |
240 * @return void | |
241 */ | |
242 protected function removeDisabledInstallers() | |
243 { | |
244 $extra = $this->composer->getPackage()->getExtra(); | |
245 | |
246 if (!isset($extra['installer-disable']) || $extra['installer-disable'] === false) { | |
247 // No installers are disabled | |
248 return; | |
249 } | |
250 | |
251 // Get installers to disable | |
252 $disable = $extra['installer-disable']; | |
253 | |
254 // Ensure $disabled is an array | |
255 if (!is_array($disable)) { | |
256 $disable = array($disable); | |
257 } | |
258 | |
259 // Check which installers should be disabled | |
260 $all = array(true, "all", "*"); | |
261 $intersect = array_intersect($all, $disable); | |
262 if (!empty($intersect)) { | |
263 // Disable all installers | |
264 $this->supportedTypes = array(); | |
265 } else { | |
266 // Disable specified installers | |
267 foreach ($disable as $key => $installer) { | |
268 if (is_string($installer) && key_exists($installer, $this->supportedTypes)) { | |
269 unset($this->supportedTypes[$installer]); | |
270 } | |
271 } | |
272 } | |
273 } | |
200 } | 274 } |