| 
									
										
										
										
											2010-03-15 09:42:25 -07:00
										 |  |  | #!/usr/bin/env php
 | 
					
						
							|  |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $shortoptions = ''; | 
					
						
							|  |  |  | $longoptions = array('plugin='); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $helptext = <<<ENDOFHELP | 
					
						
							|  |  |  | Build HTML documentation from doc comments in source. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Usage: docgen.php [options] output-directory | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   --plugin=...     build docs for given plugin instead of core | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ENDOFHELP; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); | 
					
						
							| 
									
										
										
										
											2010-04-21 20:20:43 +02:00
										 |  |  | set_include_path(INSTALLDIR . DIRECTORY_SEPARATOR . 'extlib' . PATH_SEPARATOR . get_include_path()); | 
					
						
							| 
									
										
										
										
											2010-03-15 09:42:25 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | $pattern = "*.php *.inc"; | 
					
						
							|  |  |  | $exclude = 'config.php */extlib/* */local/* */plugins/* */scripts/*'; | 
					
						
							| 
									
										
										
										
											2010-04-21 20:20:43 +02:00
										 |  |  | $plugin = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require_once 'Console/Getopt.php'; | 
					
						
							|  |  |  | $parser = new Console_Getopt(); | 
					
						
							|  |  |  | $result = $parser->getopt($_SERVER['argv'], $shortoptions, $longoptions); | 
					
						
							|  |  |  | if (PEAR::isError($result)) { | 
					
						
							|  |  |  |     print $result->getMessage() . "\n"; | 
					
						
							|  |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | list($options, $args) = $result; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | foreach ($options as $option) { | 
					
						
							|  |  |  |     $arg = $option[0]; | 
					
						
							|  |  |  |     if ($arg == '--plugin') { | 
					
						
							|  |  |  |         $plugin = $options[1]; | 
					
						
							|  |  |  |     } else if ($arg == 'h' || $arg == '--help') { | 
					
						
							|  |  |  |         print $helptext; | 
					
						
							|  |  |  |         exit(0); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2010-03-15 09:42:25 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | if (isset($args[0])) { | 
					
						
							|  |  |  |     $outdir = $args[0]; | 
					
						
							|  |  |  |     if (!is_dir($outdir)) { | 
					
						
							|  |  |  |         echo "Output directory $outdir is not a directory.\n"; | 
					
						
							|  |  |  |         exit(1); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } else { | 
					
						
							|  |  |  |     print $helptext; | 
					
						
							|  |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-21 20:20:43 +02:00
										 |  |  | if ($plugin) { | 
					
						
							| 
									
										
										
										
											2010-03-15 09:42:25 -07:00
										 |  |  |     $exclude = "*/extlib/*"; | 
					
						
							|  |  |  |     $indir = INSTALLDIR . "/plugins/" . $plugin; | 
					
						
							|  |  |  |     if (!is_dir($indir)) { | 
					
						
							|  |  |  |         $indir = INSTALLDIR . "/plugins"; | 
					
						
							|  |  |  |         $filename = "{$plugin}Plugin.php"; | 
					
						
							|  |  |  |         if (!file_exists("$indir/$filename")) { | 
					
						
							|  |  |  |             echo "Can't find plugin $plugin.\n"; | 
					
						
							|  |  |  |             exit(1); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $pattern = $filename; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } else { | 
					
						
							|  |  |  |     $indir = INSTALLDIR; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-21 20:20:43 +02:00
										 |  |  | function getVersion() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     // define('STATUSNET_VERSION', '0.9.1');
 | 
					
						
							|  |  |  |     $source = file_get_contents(INSTALLDIR . '/lib/common.php'); | 
					
						
							|  |  |  |     if (preg_match('/^\s*define\s*\(\s*[\'"]STATUSNET_VERSION[\'"]\s*,\s*[\'"](.*)[\'"]\s*\)\s*;/m', $source, $matches)) { | 
					
						
							|  |  |  |         return $matches[1]; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return 'unknown'; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-15 09:42:25 -07:00
										 |  |  | $replacements = array( | 
					
						
							| 
									
										
										
										
											2010-04-21 20:20:43 +02:00
										 |  |  |     '%%version%%' => getVersion(), | 
					
						
							| 
									
										
										
										
											2010-03-15 09:42:25 -07:00
										 |  |  |     '%%indir%%' => $indir, | 
					
						
							|  |  |  |     '%%pattern%%' => $pattern, | 
					
						
							|  |  |  |     '%%outdir%%' => $outdir, | 
					
						
							|  |  |  |     '%%htmlout%%' => $outdir, | 
					
						
							|  |  |  |     '%%exclude%%' => $exclude, | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var_dump($replacements); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $template = file_get_contents(dirname(__FILE__) . '/doxygen.tmpl'); | 
					
						
							|  |  |  | $template = strtr($template, $replacements); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $templateFile = tempnam(sys_get_temp_dir(), 'statusnet-doxygen'); | 
					
						
							|  |  |  | file_put_contents($templateFile, $template); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $cmd = "doxygen " . escapeshellarg($templateFile); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $retval = 0; | 
					
						
							|  |  |  | passthru($cmd, $retval); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if ($retval == 0) { | 
					
						
							|  |  |  |     echo "Done!\n"; | 
					
						
							|  |  |  |     unlink($templateFile); | 
					
						
							|  |  |  |     exit(0); | 
					
						
							|  |  |  | } else { | 
					
						
							|  |  |  |     echo "Failed! Doxygen config left in $templateFile\n"; | 
					
						
							|  |  |  |     exit($retval); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 |