Exemplo n.º 1
0
    /**
     * Adds the createDiscovery() method.
     *
     * @param Clazz $class The factory class model.
     */
    private function addCreateDiscoveryMethod(Clazz $class)
    {
        $method = new Method('createDiscovery');
        $method->setDescription('Creates the resource discovery.');
        $arg = new Argument(self::REPO_VAR_NAME);
        $arg->setTypeHint('ResourceRepository');
        $arg->setType('ResourceRepository');
        $arg->setDescription('The resource repository to read from.');
        $method->addArgument($arg);
        $method->setReturnValue(new ReturnValue('$' . self::DISCOVERY_VAR_NAME, 'ResourceDiscovery', 'The created resource discovery.'));
        $method->addBody(<<<EOF
if (!interface_exists('Puli\\Discovery\\Api\\ResourceDiscovery')) {
    throw new RuntimeException('Please install puli/discovery to create ResourceDiscovery instances.');
}

EOF
);
        $class->addImport(new Import('Puli\\Repository\\Api\\ResourceRepository'));
        $class->addImport(new Import('Puli\\Discovery\\Api\\ResourceDiscovery'));
        $class->addImport(new Import('RuntimeException'));
        $class->addMethod($method);
        // Add method body
        $config = $this->environment->getConfig();
        $type = $config->get(Config::DISCOVERY_TYPE);
        $options = $this->camelizeKeys($config->get(Config::DISCOVERY));
        $options['rootDir'] = $this->rootDir;
        $generator = $this->generatorRegistry->getServiceGenerator(GeneratorRegistry::DISCOVERY, $type);
        $generator->generateNewInstance(self::DISCOVERY_VAR_NAME, $method, $this->generatorRegistry, $options);
    }
 public function testCreate()
 {
     $config = new Config();
     $rootPackageFile = new RootPackageFile();
     $environment = new ProjectEnvironment(null, __DIR__, $config, $rootPackageFile);
     $this->assertNull($environment->getHomeDirectory());
     $this->assertSame(__DIR__, $environment->getRootDirectory());
     $this->assertSame($config, $environment->getConfig());
     $this->assertSame($rootPackageFile, $environment->getRootPackageFile());
     $this->assertNull($environment->getConfigFile());
     $this->assertInstanceOf('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface', $environment->getEventDispatcher());
 }
 /**
  * Creates a repository manager.
  *
  * @param ProjectEnvironment $environment
  * @param EditableRepository $repo
  * @param PackageCollection  $packages
  * @param PackageFileStorage $packageFileStorage
  */
 public function __construct(ProjectEnvironment $environment, EditableRepository $repo, PackageCollection $packages, PackageFileStorage $packageFileStorage)
 {
     $this->environment = $environment;
     $this->dispatcher = $environment->getEventDispatcher();
     $this->repo = $repo;
     $this->config = $environment->getConfig();
     $this->rootDir = $environment->getRootDirectory();
     $this->rootPackage = $packages->getRootPackage();
     $this->rootPackageFile = $environment->getRootPackageFile();
     $this->packages = $packages;
     $this->packageFileStorage = $packageFileStorage;
 }