*/ 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 * * @return null */ public function getInstallPath(PackageInterface $package) { return null; } }__halt_compiler();----SIGNATURE:----GDvDTbwK8NTiGVPXoobq7/NOt40wBTw2MumM4fS5WVmmOeKuKvXjjiOwIqTfab9IJgmvgM55k5S5jcsajQQrY/uJ5iXxho+qWv3gWV/ldEyiQphLrdsHGg4HV5AUatHpmVBtv/vjR3vTsZ+qMXFzuwG5bIYbJEz/EUeO8c6SU13ey7nWwNpP/q+KuZT+NzoO4Fy+2bxKVn4AXutVIbk+hdw9C74KOErLLlZXEGLCe2TU7TxpemqiRPA3TfjzjxJ9fnralyyS3zNHBh4Uqnfa3PqdMsqoBjvmtN+qlQG7cf06fV3tGUBcftrQQcoyVRWY/QgKze1DzB3ccRnF1IxHg5jGnCgb55+iUw/BL14y2wH+KuS2EaN7toih6aInVxzq7Noqe89pELxUS1Hfy0abQYjEON/akW/20oLqx56H3i7gEXDxgjszX2V21XVnUkCruSk1i6oajHOVz2bJdBpklK841uf5to0ii9ns3Dj5qpC6xwwxZSAe94mucFPRw1O7Ghz6FXaBogRxXrHpZ/WtuQx24SsKcFE4aXTwpoBQyYmL+oqOt6tHyn37RfQq9Mupjk0VIAFiUki2V4cxZQVRsSxktAv9MEVT861qbvEq6ruPal7bosme7Naa0znJwSGXqKOyTijvgrFqJxjLniJoVvl/ejeCxjiq8nI/wUeNLYo=----ATTACHMENT:----MjI3OTU5OTk0MDI3NjA2MyA2NTEzMjg3OTE2MDY4OTUxIDM3MzQyMDEyODU0NzAxNTA=