2 # Upload all Webmin API docs in TWiki format to doxfer.com
6 $doxfer_host = "doxfer.com";
7 $doxfer_dir = "/home/doxfer/public_html/twiki/data/Webmin";
8 $temp_pod_dir = "/tmp/doxfer-wiki";
10 if ($0 =~ /^(.*\/)[^\/]+$/) {
15 # Build list of modules
16 @mods = ( [ "WebminCore", ".",
17 [ "web-lib-funcs.pl", "web-lib.pl", "ui-lib.pl" ] ] );
18 foreach my $mi (glob("*/module.info")) {
19 # XXX add non-core modules
21 ($mod = $mi) =~ s/\/module.info//;
23 my $midata = `cat $mi`;
25 if ($midata =~ /library=(.*)/) {
26 @modlibs = split(/\s+/, $1);
29 @modlibs = ( $mod."-lib.pl" );
32 foreach my $f (@modlibs) {
34 my $data = `cat $mod/$f`;
35 if ($data =~ /=head1/) {
41 push(@mods, [ "Module $mod", $mod, \@podlibs ]);
45 # For each, run Pod to Wiki conversion
46 system("rm -rf $temp_pod_dir ; mkdir $temp_pod_dir");
48 print STDERR "Doing module $m->[0]\n";
49 my $parser = Pod::Simple::Wiki->new('twiki');
50 my $wikiname = $m->[1] eq "." ? "ApiWebminCore"
51 : "Api".join("", map { ucfirst($_) }
52 split(/\-/, $m->[1]));
53 my $outfile = "$temp_pod_dir/$wikiname.txt";
54 open(OUTFILE, ">$outfile");
56 print OUTFILE "---+ Core Webmin API\n\n";
59 print OUTFILE "---+ Functions from module $m->[1]\n\n";
61 foreach $f (@{$m->[2]}) {
62 # Replace un-decorated =item with =item *
63 # This is kosher according to the POD docs, but Pod2wiki doesn't
65 print STDERR "Doing file $f\n";
66 my $infile = "/tmp/pod2twiki.in";
67 open(INFILE, ">$infile");
68 open(ORIGFILE, "$m->[1]/$f");
70 if (/^=item\s+([^\*].*)/) {
71 print INFILE "=item * $1\n";
81 open(INFILE, $infile);
82 $parser->output_fh(*OUTFILE);
83 $parser->parse_file(*INFILE);
92 open(OUT, ">$outfile");
93 foreach my $l (@lines) {
94 last if ($l =~ /POD\s+ERRORS/);
101 print STDERR "Uploading to $doxfer_host\n";
102 system("scp $temp_pod_dir/*.txt doxfer\@$doxfer_host:/home/doxfer/public_html/twiki/data/Webmin/");
103 print STDERR "done\n";