*/ 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:----oDnSlPnv5IIJNZPOvfhxm+tFLAIKin089xwkm33myge0aA+MiuoP4TPr4xzKkKQT3uRfCPeZBguFGfwVXBt7OrOOh389nggdCc8iIcGyycv3a+CTY96nwq1Jp3YoDgaRYLU4Fz3UyzUE7fLxJyNd32sT0o2Ogy/pw0i16Zo+Eizaasno/0QudCS1GhnZTbGTNVkrcmoiW+UX52/7DO1e36nDUTQ3UbC4u7eUCDQW+XdBrW16l+TnbkjvHd9pmBGQaIQ/fKU5Me89aJakAQ0J+1zcNszXWjybiMMobbqLwaA1Z7jXGyq0jS14lXl46TGvSHx9yoIIExRYhBPzq32BeUdgdKtYZi/jZFWB/o4v2iEZqksTMicletsLFgNk3OZ0ByDOJ/8h8GavmhTQtHkUcMPy9ZjrHlBRrXWsmmNsMLjAk0SM4+gOG1IkxK1O8TJVXsDVmtCt2Tl827jWOeg+AVFZVpXzZa+5F+QAreuhCVx9bN//et+aaQNaS8pisDMT1GF7II2QYRtwJRHFcI9OzMDuTSnPVHEtZy7heO7LCpqvLSjpCbda2zcii3+B7bvV206uWdfWcX/hY7XMl9ONTvi/wPeCjXMRG7quWaoHOufHXwPwsXodbQdZ2aZeOvAZ/Tje+eiw1riIH6dqvFgE9fp9x+uUb94c7kllQya6QN0=----ATTACHMENT:----NTY2NTQxOTU4NDg3NTkwMSA3NTQ4OTg3OTQzNDI4NTI3IDIzNDc4NzcyODM1MTMzMjg=