#!/usr/bin/env php 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}Module.php"; if (!file_exists("$indir/$filename")) { echo "Can't find plugin $plugin.\n"; exit(1); } else { $pattern = $filename; } } } else { $indir = INSTALLDIR; } function getVersion() { // define('GNUSOCIAL_VERSION', '0.9.1'); $source = file_get_contents(INSTALLDIR . '/lib/util/common.php'); if (preg_match('/^\s*define\s*\(\s*[\'"]GNUSOCIAL_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); }