/** * Auto registers the "pbj-schema-store" repos with the SchemaStore. * * @param PackageEvent $event */ public static function writePbjSchemaStoresFile(PackageEvent $event) { if (!$event->isDevMode()) { return; } $dirs = []; /** @var PackageInterface $package */ foreach ($event->getInstalledRepo()->getPackages() as $package) { if (!$package instanceof PackageInterface) { continue; } if ('pbj-schema-store' !== $package->getType()) { continue; } $dir = sprintf('$vendorDir.\'/%s/schemas/\'', $package->getName()); // override for current package if ($event->getComposer()->getPackage()->getName() == $package->getName()) { $dir = '__DIR__.\'/schemas/\''; } $dirs[] = sprintf('%s %s', PHP_EOL, $dir); } if (empty($dirs)) { return; } $dirs = implode(',', $dirs); $event->getIO()->write('<info>Writing "pbj-schema-store" locations to "pbj-schema-stores.php"</info>'); $text = <<<TEXT <?php /** * DO NOT EDIT THIS FILE as it will be overwritten by Composer as part of * the installation/update process. * * Registers all directories from all required packages which are of * of the type "pbj-schema-store". * * This file has been auto-generated by the Pbj Compiler. */ \$vendorDir = realpath(__DIR__.'/vendor'); \\Gdbots\\Pbjc\\SchemaStore::addDirs([{$dirs} ]); TEXT; $fs = new Filesystem(); $fs->dumpFile('pbj-schema-stores.php', $text); }
/** * Creates and returns a new PackageEvent with the given operation. * * @param PackageEvent $event * @param OperationInterface $operation * @return PackageEvent */ private function createPackageEventWithOperation(PackageEvent $event, OperationInterface $operation) { return new PackageEvent($event->getName(), $this->composer, $this->io, $event->isDevMode(), $event->getPolicy(), $event->getPool(), $event->getInstalledRepo(), $event->getRequest(), $event->getOperations(), $operation); }
/** * @param PackageEvent $event */ public function __construct(PackageEvent $event) { $this->aliasOf = $event; parent::__construct($event->getName(), $event->getComposer(), $event->getIO(), $event->isDevMode(), $event->getArguments(), $event->getFlags()); }