. */ require_once 'phing/TaskPhing.php'; /** * Task to run phpDocumentor. * * @author Michiel Rook * @version $Id: PHPDocumentorTask.php 3076 2006-12-18 08:52:12Z fabien $ * @package phing.tasks.ext.phpdoc */ class PHPDocumentorTask extends TaskPhing { /** * The path to the executable for phpDocumentor */ private $programPath = 'phpdoc'; private $title = "Default Title"; private $destdir = "."; private $sourcepath = NULL; private $output = ""; private $linksource = false; private $parseprivate = false; /** * Sets the path to the phpDocumentor executable */ function setProgramPath($programPath) { $this->programPath = $programPath; } /** * Returns the path to the phpDocumentor executable */ function getProgramPath() { return $this->programPath; } /** * Set the title for the generated documentation */ function setTitle($title) { $this->title = $title; } /** * Set the destination directory for the generated documentation */ function setDestdir($destdir) { $this->destdir = $destdir; } /** * Set the source path */ function setSourcepath(Path $sourcepath) { if ($this->sourcepath === NULL) { $this->sourcepath = $sourcepath; } else { $this->sourcepath->append($sourcepath); } } /** * Set the output type */ function setOutput($output) { $this->output = $output; } /** * Should sources be linked in the generated documentation */ function setLinksource($linksource) { $this->linksource = $linksource; } /** * Should private members/classes be documented */ function setParseprivate($parseprivate) { $this->parseprivate = $parseprivate; } /** * Main entrypoint of the task */ function main() { $arguments = $this->constructArguments(); $this->log("Running phpDocumentor..."); exec($this->programPath . " " . $arguments, $output, $return); if ($return != 0) { throw new BuildException("Could not execute phpDocumentor: " . implode(' ', $output)); } foreach($output as $line) { if(strpos($line, 'ERROR') !== false) { $this->log($line, PROJECT_MSG_ERR); continue; } $this->log($line, PROJECT_MSG_VERBOSE); } } /** * Constructs an argument string for phpDocumentor */ private function constructArguments() { $arguments = "-q on "; if ($this->title) { $arguments.= "-ti \"" . $this->title . "\" "; } if ($this->destdir) { $arguments.= "-t \"" . $this->destdir . "\" "; } if ($this->sourcepath !== NULL) { $arguments.= "-d \"" . $this->sourcepath->__toString() . "\" "; } if ($this->output) { $arguments.= "-o " . $this->output . " "; } if ($this->linksource) { $arguments.= "-s on "; } if ($this->parseprivate) { $arguments.= "-pp on "; } return $arguments; } }; ?>