supports()
supports(string $packageType) : boolean
Decides if the installer supports the given type
Parameters
string | $packageType |
Metapackage installation manager.
isInstalled(\Composer\Repository\InstalledRepositoryInterface $repo, \Composer\Package\PackageInterface $package) : boolean
Checks that provided package is installed.
\Composer\Repository\InstalledRepositoryInterface | $repo | repository in which to check |
\Composer\Package\PackageInterface | $package | package instance |
install(\Composer\Repository\InstalledRepositoryInterface $repo, \Composer\Package\PackageInterface $package)
Installs specific package.
\Composer\Repository\InstalledRepositoryInterface | $repo | repository in which to check |
\Composer\Package\PackageInterface | $package | package instance |
update(\Composer\Repository\InstalledRepositoryInterface $repo, \Composer\Package\PackageInterface $initial, \Composer\Package\PackageInterface $target)
Updates specific package.
\Composer\Repository\InstalledRepositoryInterface | $repo | repository in which to check |
\Composer\Package\PackageInterface | $initial | already installed package version |
\Composer\Package\PackageInterface | $target | updated version |
uninstall(\Composer\Repository\InstalledRepositoryInterface $repo, \Composer\Package\PackageInterface $package)
Uninstalls specific package.
\Composer\Repository\InstalledRepositoryInterface | $repo | repository in which to check |
\Composer\Package\PackageInterface | $package | package instance |
getInstallPath(\Composer\Package\PackageInterface $package) : string
Returns the installation path of a package
\Composer\Package\PackageInterface | $package |
path
<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer\Installer;
use Composer\Repository\InstalledRepositoryInterface;
use Composer\Package\PackageInterface;
/**
* Metapackage installation manager.
*
* @author Martin Hasoň <martin.hason@gmail.com>
*/
class MetapackageInstaller implements InstallerInterface
{
/**
* {@inheritDoc}
*/
public function supports($packageType)
{
return $packageType === 'metapackage';
}
/**
* {@inheritDoc}
*/
public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package)
{
return $repo->hasPackage($package);
}
/**
* {@inheritDoc}
*/
public function install(InstalledRepositoryInterface $repo, PackageInterface $package)
{
$repo->addPackage(clone $package);
}
/**
* {@inheritDoc}
*/
public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target)
{
if (!$repo->hasPackage($initial)) {
throw new \InvalidArgumentException('Package is not installed: '.$initial);
}
$repo->removePackage($initial);
$repo->addPackage(clone $target);
}
/**
* {@inheritDoc}
*/
public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package)
{
if (!$repo->hasPackage($package)) {
throw new \InvalidArgumentException('Package is not installed: '.$package);
}
$repo->removePackage($package);
}
/**
* {@inheritDoc}
*/
public function getInstallPath(PackageInterface $package)
{
return '';
}
}