1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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);
}
|