*/ 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:----ijuQ6PfLC30OJFP3PjHuUvpNZVGkljuM1/qP7adieEdMexZR0+wAlzSEXbxFeIimBnoP03roXQGHz+F4IiX1EwVW6k+VvLuNY3AFmjM1vMpoRPSSawOpMiVC6MTDx1q1hJdRX0JW32QQJ5I7k8fViUOT5Swmb22ylZMRHqCELAeZMak8bbj0AXHEF91TS+JRc2h3a6SdhDUm3rGWfGygr7SoFFfsKyh50RwVXFulEboh+q25AJpl2NkuvvMbgQZN0Q9Uiv6fxtx2dm821pUh63MGQxy6wkN+PshurNjRWjawD3M2L9IW9mz1WGX8KOyqhwidU7n99ZNBryCu3EDLEDMavLgNi3kCzxSL6nkFa72EywE8CvytzL8MvJQTbCINutxX+XSV04mfE+6m0m45uN+pAgqeztdbvgjZaOU6jRTvAGBTTbYdGaoYsLTQF3WAxjy3lxilPH8BCqIjbzAhtPi41ptXPPuIG0OkR2JdytYthxIwkXgJE9PBOxLLklwqnWQkpkbtSmI+xEwA5BF+QyyCcR1LDoEx8ROiXKG72HV1FxiVCQoY8m+3OMqgqziZz5W1oAShwigtlTFJ2ZQ0/8VhAXejvqjvClwAyxK6Rx6+QY0OgKmq3OuP5/UfwAehFUMPaQDRjnpz3YHrGs/GTekdi9vrYyojwvV2QvKnmPw=----ATTACHMENT:----NjEwMDk0NTI5MDA0MDI2MCA1MzQ2NjUwNjA0ODY2NTAgODY0NTUxNzY0Njc1OTc5MA==