summaryrefslogtreecommitdiff
path: root/scripts/docgen.php
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/docgen.php')
-rwxr-xr-xscripts/docgen.php84
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);
+}
+