class Installer in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/composer/installers/src/Composer/Installers/Installer.php \Composer\Installers\Installer
Hierarchy
- class \Composer\Installers\Installer extends \Composer\Installer\LibraryInstaller
Expanded class hierarchy of Installer
1 file declares its use of Installer
- InstallerTest.php in vendor/
composer/ installers/ tests/ Composer/ Installers/ Test/ InstallerTest.php
File
- vendor/
composer/ installers/ src/ Composer/ Installers/ Installer.php, line 8
Namespace
Composer\InstallersView source
class Installer extends LibraryInstaller {
/**
* Package types to installer class map
*
* @var array
*/
private $supportedTypes = array(
'aimeos' => 'AimeosInstaller',
'asgard' => 'AsgardInstaller',
'agl' => 'AglInstaller',
'annotatecms' => 'AnnotateCmsInstaller',
'bitrix' => 'BitrixInstaller',
'cakephp' => 'CakePHPInstaller',
'chef' => 'ChefInstaller',
'ccframework' => 'ClanCatsFrameworkInstaller',
'codeigniter' => 'CodeIgniterInstaller',
'concrete5' => 'Concrete5Installer',
'craft' => 'CraftInstaller',
'croogo' => 'CroogoInstaller',
'dokuwiki' => 'DokuWikiInstaller',
'dolibarr' => 'DolibarrInstaller',
'drupal' => 'DrupalInstaller',
'elgg' => 'ElggInstaller',
'fuel' => 'FuelInstaller',
'fuelphp' => 'FuelphpInstaller',
'grav' => 'GravInstaller',
'hurad' => 'HuradInstaller',
'joomla' => 'JoomlaInstaller',
'kirby' => 'KirbyInstaller',
'kohana' => 'KohanaInstaller',
'laravel' => 'LaravelInstaller',
'lithium' => 'LithiumInstaller',
'magento' => 'MagentoInstaller',
'mako' => 'MakoInstaller',
'mediawiki' => 'MediaWikiInstaller',
'microweber' => 'MicroweberInstaller',
'modulework' => 'MODULEWorkInstaller',
'modxevo' => 'MODXEvoInstaller',
'moodle' => 'MoodleInstaller',
'october' => 'OctoberInstaller',
'oxid' => 'OxidInstaller',
'phpbb' => 'PhpBBInstaller',
'pimcore' => 'PimcoreInstaller',
'piwik' => 'PiwikInstaller',
'ppi' => 'PPIInstaller',
'puppet' => 'PuppetInstaller',
'redaxo' => 'RedaxoInstaller',
'roundcube' => 'RoundcubeInstaller',
'shopware' => 'ShopwareInstaller',
'silverstripe' => 'SilverStripeInstaller',
'smf' => 'SMFInstaller',
'symfony1' => 'Symfony1Installer',
'thelia' => 'TheliaInstaller',
'tusk' => 'TuskInstaller',
'typo3-cms' => 'TYPO3CmsInstaller',
'typo3-flow' => 'TYPO3FlowInstaller',
'whmcs' => 'WHMCSInstaller',
'wolfcms' => 'WolfCMSInstaller',
'wordpress' => 'WordPressInstaller',
'zend' => 'ZendInstaller',
'zikula' => 'ZikulaInstaller',
'prestashop' => 'PrestashopInstaller',
);
/**
* {@inheritDoc}
*/
public function getInstallPath(PackageInterface $package) {
$type = $package
->getType();
$frameworkType = $this
->findFrameworkType($type);
if ($frameworkType === false) {
throw new \InvalidArgumentException('Sorry the package type of this package is not yet supported.');
}
$class = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
$installer = new $class($package, $this->composer);
return $installer
->getInstallPath($package, $frameworkType);
}
public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) {
if (!$repo
->hasPackage($package)) {
throw new \InvalidArgumentException('Package is not installed: ' . $package);
}
$repo
->removePackage($package);
$installPath = $this
->getInstallPath($package);
$this->io
->write(sprintf('Deleting %s - %s', $installPath, $this->filesystem
->removeDirectory($installPath) ? '<comment>deleted</comment>' : '<error>not deleted</error>'));
}
/**
* {@inheritDoc}
*/
public function supports($packageType) {
$frameworkType = $this
->findFrameworkType($packageType);
if ($frameworkType === false) {
return false;
}
$locationPattern = $this
->getLocationPattern($frameworkType);
return preg_match('#' . $frameworkType . '-' . $locationPattern . '#', $packageType, $matches) === 1;
}
/**
* Finds a supported framework type if it exists and returns it
*
* @param string $type
* @return string
*/
protected function findFrameworkType($type) {
$frameworkType = false;
krsort($this->supportedTypes);
foreach ($this->supportedTypes as $key => $val) {
if ($key === substr($type, 0, strlen($key))) {
$frameworkType = substr($type, 0, strlen($key));
break;
}
}
return $frameworkType;
}
/**
* Get the second part of the regular expression to check for support of a
* package type
*
* @param string $frameworkType
* @return string
*/
protected function getLocationPattern($frameworkType) {
$pattern = false;
if (!empty($this->supportedTypes[$frameworkType])) {
$frameworkClass = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
/** @var BaseInstaller $framework */
$framework = new $frameworkClass(null, $this->composer);
$locations = array_keys($framework
->getLocations());
$pattern = $locations ? '(' . implode('|', $locations) . ')' : false;
}
return $pattern ?: '(\\w+)';
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Installer:: |
private | property | Package types to installer class map | |
Installer:: |
protected | function | Finds a supported framework type if it exists and returns it | |
Installer:: |
public | function | ||
Installer:: |
protected | function | Get the second part of the regular expression to check for support of a package type | |
Installer:: |
public | function | ||
Installer:: |
public | function |