*/ class MetapackageInstaller implements InstallerInterface { /** @var IOInterface */ private $io; public function __construct(IOInterface $io) { $this->io = $io; } /** * @inheritDoc */ public function supports(string $packageType) { return $packageType === 'metapackage'; } /** * @inheritDoc */ public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) { return $repo->hasPackage($package); } /** * @inheritDoc */ public function download(PackageInterface $package, ?PackageInterface $prevPackage = null) { // noop return \React\Promise\resolve(null); } /** * @inheritDoc */ public function prepare($type, PackageInterface $package, ?PackageInterface $prevPackage = null) { // noop return \React\Promise\resolve(null); } /** * @inheritDoc */ public function cleanup($type, PackageInterface $package, ?PackageInterface $prevPackage = null) { // noop return \React\Promise\resolve(null); } /** * @inheritDoc */ public function install(InstalledRepositoryInterface $repo, PackageInterface $package) { $this->io->writeError(" - " . InstallOperation::format($package)); $repo->addPackage(clone $package); return \React\Promise\resolve(null); } /** * @inheritDoc */ public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) { if (!$repo->hasPackage($initial)) { throw new \InvalidArgumentException('Package is not installed: '.$initial); } $this->io->writeError(" - " . UpdateOperation::format($initial, $target)); $repo->removePackage($initial); $repo->addPackage(clone $target); return \React\Promise\resolve(null); } /** * @inheritDoc */ public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) { if (!$repo->hasPackage($package)) { throw new \InvalidArgumentException('Package is not installed: '.$package); } $this->io->writeError(" - " . UninstallOperation::format($package)); $repo->removePackage($package); return \React\Promise\resolve(null); } /** * @inheritDoc */ public function getInstallPath(PackageInterface $package) { return ''; } } __halt_compiler();----SIGNATURE:----BoRRzAH5RBEf9rMu+pLrQg5XUCfPLR8tIXuJ66pzuyKXMMJ2/wbCEBMkBhxJ4ra50J9cd/Q65UMdlfLRjVRcviA829FNTlFNnKDv7Vk3HbCBNtlBvXFXsHiKHXQFs9dJbzbZ0SpwNDn1MfxtLoniCS8pgIsvwVSVIt+M50v8Ns9lKUUx5XdVL559sF5dIUCcpwepjp1jnFBiyEraWTfHaV0P3kswF0RQ/pvgrlot0oRnP/Y1ajKLrv8WvVkqRu758fuH4Uyq0wqLOu2hlbbzvWgDXMx43AbH56WflXb8OLR8qGmoamkTnZItZ1s3vZPxPEQjDT20mXaLS8WLAuxCPuQpFBnS/3O48WdGS7GGchXxlkK59nXxNCiTfytYzWYxGcoZ7G+PtWDDKrih3X4NKSrJGJuxDof1GERsWSwSEXZPC4mBYzN7ckDRmbCCLlRu2/wl9EBEkDlIfpkd5SBV3bBtCq7nIsK25Q7Fqg1qHQerk1TYdr+rx0C8cNddU0U36CJ/So8qJRkjjh2x62WpA+9J+sl53jcJYcILiGQxiNBvReNEJFbKFWFX2uModOQ5/vVsKi3pTvqI/7Bs+8yDCnllRXut2UPYojwBrO5/v5t/XVZ5BS4SkQvCO2ruExJEp2wkjLZxdw9lRUuxCmwWLnEnLevuCJfYuTAu3jQj1PI=----ATTACHMENT:----MjQ5NDAxMTU1MzYxNzQ2OSA1Mzg3MTY3ODk1MjM5OTkwIDE0MjgyNTY2OTc1NDEyNjQ=