Doctrine\OXM\Tools\Console\Command\GenerateRepositoriesCommand::execute PHP Method

execute() protected method

See also: Console\Command\Command
protected execute ( Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output )
$input Symfony\Component\Console\Input\InputInterface
$output Symfony\Component\Console\Output\OutputInterface
    protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output)
    {
        $xem = $this->getHelper('xem')->getXmlEntityManager();
        $metadatas = $xem->getMetadataFactory()->getAllMetadata();
        $metadatas = MetadataFilter::filter($metadatas, $input->getOption('filter'));
        // Process destination directory
        $destPath = realpath($input->getArgument('dest-path'));
        if (!file_exists($destPath)) {
            throw new \InvalidArgumentException(sprintf("XmlEntities destination directory '<info>%s</info>' does not exist.", $destPath));
        } else {
            if (!is_writable($destPath)) {
                throw new \InvalidArgumentException(sprintf("XmlEntities destination directory '<info>%s</info>' does not have write permissions.", $destPath));
            }
        }
        if (count($metadatas)) {
            $numRepositories = 0;
            $generator = new XmlEntityRepositoryGenerator();
            foreach ($metadatas as $metadata) {
                if ($metadata->customRepositoryClassName) {
                    $output->write(sprintf('Processing repository "<info>%s</info>"', $metadata->customRepositoryClassName) . PHP_EOL);
                    $generator->writeDocumentRepositoryClass($metadata->customRepositoryClassName, $destPath);
                    $numRepositories++;
                }
            }
            if ($numRepositories) {
                // Outputting information message
                $output->write(PHP_EOL . sprintf('Repository classes generated to "<info>%s</INFO>"', $destPath) . PHP_EOL);
            } else {
                $output->write('No Repository classes were found to be processed.' . PHP_EOL);
            }
        } else {
            $output->write('No Metadata Classes to process.' . PHP_EOL);
        }
    }
GenerateRepositoriesCommand