diff options
author | Brion Vibber <brion@status.net> | 2010-08-10 15:01:29 -0700 |
---|---|---|
committer | Brion Vibber <brion@status.net> | 2010-08-10 15:01:29 -0700 |
commit | 819d33210d298de74b64dc7ead79e9d9b223b12e (patch) | |
tree | 902d42087e633b96e12bef699f6c80e7342c9312 /scripts/docgen.php | |
parent | 8f071b2818e8321ea910df612016175f65093402 (diff) | |
parent | 08fc6053ec55e911b842fd05dafc5e0c99c4e992 (diff) |
Merge branch '0.9.x' into tinymce
Diffstat (limited to 'scripts/docgen.php')
-rwxr-xr-x | scripts/docgen.php | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/scripts/docgen.php b/scripts/docgen.php new file mode 100755 index 000000000..ac0a5c83d --- /dev/null +++ b/scripts/docgen.php @@ -0,0 +1,114 @@ +#!/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__) . '/..')); +set_include_path(INSTALLDIR . DIRECTORY_SEPARATOR . 'extlib' . PATH_SEPARATOR . get_include_path()); + +$pattern = "*.php *.inc"; +$exclude = 'config.php */extlib/* */local/* */plugins/* */scripts/*'; +$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); + } +} + +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); +} + +if ($plugin) { + $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; +} + +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'; +} + + +$replacements = array( + '%%version%%' => getVersion(), + '%%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); +} + |