/** * Build a list of files (from the fileset elements) * and call the phpDocumentor parser * * @return string */ private function parseFiles() { $parser = new \phpDocumentor\Parser\Parser(); $parser->setTitle($this->title); $paths = array(); // filesets foreach ($this->filesets as $fs) { $ds = $fs->getDirectoryScanner($this->project); $dir = $fs->getDir($this->project); $srcFiles = $ds->getIncludedFiles(); foreach ($srcFiles as $file) { $paths[] = $dir . FileSystem::getFileSystem()->getSeparator() . $file; } } $this->project->log("Will parse " . count($paths) . " file(s)", Project::MSG_VERBOSE); $files = new phpDocumentor\Fileset\Collection(); $files->addFiles($paths); $parser->setPath($files->getProjectRoot()); return $parser->parseFiles($files); }
/** * Executes the business logic involved with this command. * * @param InputInterface $input * @param OutputInterface $output * * @return int */ protected function execute(InputInterface $input, OutputInterface $output) { // invoke parent to load custom config parent::execute($input, $output); /** @var \phpDocumentor\Console\Helper\ProgressHelper $progress */ $progress = $this->getProgressBar($input); if (!$progress) { $this->connectOutputToLogging($output); } $output->write('Initializing parser and collecting files .. '); $target = $this->getTarget($this->getOption($input, 'target', 'parser/target')); $parser = new \phpDocumentor\Parser\Parser(); $parser->setTitle((string) $this->getOption($input, 'title', 'title')); $parser->setExistingXml($target); $parser->setForced($input->getOption('force')); $parser->setMarkers($this->getOption($input, 'markers', 'parser/markers/item', null, true)); $parser->setIgnoredTags($input->getOption('ignore-tags')); $parser->setValidate($input->getOption('validate')); $parser->setVisibility((string) $this->getOption($input, 'visibility', 'parser/visibility')); $parser->setDefaultPackageName($this->getOption($input, 'defaultpackagename', 'parser/default-package-name')); $files = $this->getFileCollection($input); $parser->setPath($files->getProjectRoot()); if ($progress) { $progress->start($output, $files->count()); } try { // save the generate file to the path given as the 'target' option $output->writeln('OK'); $output->writeln('Parsing files'); $result = $parser->parseFiles($files, $input->getOption('sourcecode')); } catch (\Exception $e) { if ($e->getCode() === \phpDocumentor\Parser\Exception::NO_FILES_FOUND) { throw new \Exception('No parsable files were found, did you specify any using ' . 'the -f or -d parameter?'); } throw new \Exception($e->getMessage()); } if ($progress) { $progress->finish(); } $output->write('Storing structure.xml in "' . $target . '" .. '); file_put_contents($target, $result); $output->writeln('OK'); return 0; }