/**
* @see Console\Command\Command
*/
protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output)
{
$dm = $this->getHelper('documentManager')->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));
} elseif (!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->setBackupExisting(!$input->getOption('no-backup'));
$documentGenerator->setNumSpaces($input->getOption('num-spaces'));
if (($extend = $input->getOption('extend')) !== null) {
$documentGenerator->setClassToExtend($extend);
}
foreach ($metadatas as $metadata) {
$output->writeln(sprintf('Processing document "<info>%s</info>".', $metadata->name));
}
// Generating Documents
$documentGenerator->generate($metadatas, $destPath);
// Outputting information message
$output->writeln(array('', sprintf('Document classes have been generated to "<info>%s</info>".', $destPath)));
} else {
$output->writeln('No Metadata Classes to process.');
}
}