diff options
Diffstat (limited to 'scripts/docgen.php')
-rwxr-xr-x | scripts/docgen.php | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/scripts/docgen.php b/scripts/docgen.php new file mode 100755 index 000000000..78bbe37d8 --- /dev/null +++ b/scripts/docgen.php @@ -0,0 +1,84 @@ +#!/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__) . '/..')); +require_once INSTALLDIR.'/scripts/commandline.inc'; + +$pattern = "*.php *.inc"; +$exclude = 'config.php */extlib/* */local/* */plugins/* */scripts/*'; + +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 (have_option('p', 'plugin')) { + $plugin = get_option_value('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; +} + +$replacements = array( + '%%version%%' => STATUSNET_VERSION, + '%%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); +} + |