*/ 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:----WJb1FtdA8vx6DAqTmsYepOhPepY+cFxA9xOlzsnO50BFut5hcDSntIVi7MDtpiKXlf2JqYmCROYF9neq7slsRgQkHOZPOWQzvk4RJSPjKxPyBbMu0yEbXELQMjmDhlqjUH0+0P1Ua3X0vdHIxEFj11X6hkAlJ4X4liHxhHyZsB1QCXG32M2D7Tts9dNQxSQfZsVYku9UBFxcahpuLPSQpUtjOEb9mBQpqTtJSF92SNH2Q2Y7Dq/rT/yCcauJPNwlXwDF/lMqh5yqbsyRLFxp1x5dcHmUIP4xPv8SQsodbLkoffckCheGlrYkHhpBvnRGNCaHm+MiDGARD0rJhg14mfTVJVKyNZt23xBu3FSglMNK9Y4GlGjFKJxSe0uNnVrrtDjF45efOJRMlwir8IrRD8i3LtFr14yy97zrAmVaSshEUzUzdaeD9TWvDYqGQI/p+dzxsbPmHCWVE+EJDIeybVnX7jI/B7jaLWoGlkmrwfxmifYa3ocwPXIYYPVJm35EurM8NG/gVS214ma7beoBgkcdMdhGAg9RcEfqsw2FL3QTV/vlhfcz1GD2X2KvbT5JDKKDocOoun1NhcXSTdYBcGmckNiSL8pvPyfR+lF1VS2Hs/Zei97tPi8VBQoiZl+LSj1NJw5RQtolJBYni/7Pf3Q9lTflLoUwtwroyOaUaTg=----ATTACHMENT:----OTA5MTUzMTA4MjA5NzAyMCA1NzA3NTYzOTAzMzU2MjgyIDM2Mjg0OTQ4NDAyMjExNA==