*/ 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:----Pc+6gCNq/4EeZeAdlJzDeVipi6yqvZYbrkpPZ+1SOyQSvIetbai2sCFxz50x0zlmdGlYEZubsBAE3DtzBNkL/4gjFpZKO/d7/mCfCi+a05qJuu8x3SzcHZ5Lk3GIfx/eP3gP5bQK8XhnUB6hfQjRK1SqgqJUx99yJe0RrrUAMVSdk6f5+AiRM4kgFkaHCf40GnKEELO+DTIU/FlLK5b6jFsdWS0GEI6VrY3NPZ2N1x+VuE3K0+MdCGbd2UvEdRA8dEBQq4ly3TSmmiqVG000o0//TTVrTIUh08GRyjcy5QnZ+L61ZjMHJPj+B3O8ynryox1xKVdT/g/g0UCG/i48yDe8d87gUiSATFJMNlAeFai+VakI9Eh7EPsRjxAK/YQM8sNy2sWMfhe+WdXUUZzrGYsIkPiZGukAbGSuivJbpl+7smO/6w2dRqqH4C4ICSn+OKJPJArcIQEazoXNQXQ7/bhFeKkyXpC0nkyqud4f3OaunptOKSLvM0korTFvtOD0L61jSIWnsQ2tqcXOBppyWoRYp0ZlxLd3pWttAUYhhMW/w/BjGv3YulpevrQYTyN3ZaVNL6iSnbdVvFBz17fLAUNDftnuEN8mKq0IpPLHAl00Ug+TQojhCv+nxwGKjKWBo/lqe0e3LaCLmVX4sm2uckRnMIr/JEREm4OLt9iuloM=----ATTACHMENT:----NTAxNjc4Njg4NzY0ODQ4OSA0Mjg1NTc3MjI2MjEyNjU4IDI4NDQ0NzU1OTUzOTYxOTY=