protected function getBundleMetadatas(Bundle $bundle) { $namespace = $bundle->getNamespace(); $bundleMetadatas = array(); $documentManagers = $this->getDoctrineDocumentManagers(); foreach ($documentManagers as $dm) { $cmf = new DisconnectedClassMetadataFactory(); $cmf->setDocumentManager($dm); $cmf->setConfiguration($dm->getConfiguration()); $metadatas = $cmf->getAllMetadata(); foreach ($metadatas as $metadata) { if (strpos($metadata->name, $namespace) === 0) { $bundleMetadatas[$metadata->name] = $metadata; } } } return $bundleMetadatas; }
/** * @see Console\Command\Command */ protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output) { $dm = $this->getHelper('dm')->getDocumentManager(); $cmf = new DisconnectedClassMetadataFactory(); $cmf->setDocumentManager($dm); $cmf->setConfiguration($dm->getConfiguration()); $metadatas = $cmf->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("Documents destination directory '<info>%s</info>' does not exist.", $destPath)); } else { if (!is_writable($destPath)) { throw new \InvalidArgumentException(sprintf("Documents destination directory '<info>%s</info>' does not have write permissions.", $destPath)); } } if (count($metadatas)) { // Create DocumentGenerator $documentGenerator = new DocumentGenerator(); $documentGenerator->setGenerateAnnotations($input->getOption('generate-annotations')); $documentGenerator->setGenerateStubMethods($input->getOption('generate-methods')); $documentGenerator->setRegenerateDocumentIfExists($input->getOption('regenerate-documents')); $documentGenerator->setUpdateDocumentIfExists($input->getOption('update-documents')); $documentGenerator->setNumSpaces($input->getOption('num-spaces')); if (($extend = $input->getOption('extend')) !== null) { $documentGenerator->setClassToExtend($extend); } foreach ($metadatas as $metadata) { $output->write(sprintf('Processing document "<info>%s</info>"', $metadata->name) . PHP_EOL); } // Generating Documents $documentGenerator->generate($metadatas, $destPath); // Outputting information message $output->write(PHP_EOL . sprintf('Document classes generated to "<info>%s</INFO>"', $destPath) . PHP_EOL); } else { $output->write('No Metadata Classes to process.' . PHP_EOL); } }