#!/usr/bin/perl -w use strict; use WWW::Mediawiki::Client; #sub WWW::Mediawiki::Client::pagename_to_url { # my ($self, $name, $action) = @_; # WWW::Mediawiki::Client::URLConstructionException->throw( # error => 'No action supplied.', # ) unless $action; # WWW::Mediawiki::Client::URLConstructionException->throw( # error => "Page name $name ends with '.wiki'.", # ) if $name =~ /.wiki$/; # my $char = $self->space_substitute; # $name =~ s/ /$char/; # my $lang = $self->language_code; # my $host = $self->host; # $host =~ s/__LANG__/$lang/g; # my $wiki_path = $self->wiki_path; # $wiki_path =~ s/__LANG__/$lang/g; # my $protocol = $self->protocol; # return "$protocol://$host/$wiki_path?" . ACTION . "=$action&" . TITLE . "=$name" . '&wpRecreate=1'; #} my $mw_username = 'ivan'; chomp( my $mw_password = `cat .mw-password` ); my $site_perl = "./FS"; #my $html = "Freeside:1.7:Documentation:Developer"; my $html = "Freeside:1.9:Documentation:Developer"; foreach my $dir ( $html, map "$html/$_", qw( bin FS FS/UI FS/part_export FS/part_pkg FS/part_event FS/part_event/Condition FS/part_event/Action FS/ClientAPI FS/Cron FS/Misc FS/Report FS/Report/Table FS/TicketSystem FS/UI FS/SelfService ) ) { -d $dir or mkdir $dir; } $|=1; die "Can't find $site_perl" unless -d $site_perl; #die "Can't find $catman" unless -d $catman; -d $html or mkdir $html; my $count = 0; #make some useless links foreach my $file ( glob("$site_perl/bin/freeside-*"), ) { next if $file =~ /\.pod$/; #symlink $file, "$file.pod"; # or die "link $file to $file.pod: $!"; #system("cp $file $file.pod"); -e "$file.pod" or system("cp $file $file.pod"); } my $mvs = WWW::Mediawiki::Client->new( 'host' => 'www.freeside.biz', 'wiki_path' => 'mediawiki/index.php', 'username' => $mw_username, 'password' => $mw_password, #'commit_message' => 'import from POD' ); $mvs->do_login; my @files; if ( @ARGV ) { @files = @ARGV; } else { @files = ( glob("$site_perl/*.pm"), glob("$site_perl/*/*.pm"), glob("$site_perl/*/*/*.pm"), glob("$site_perl/*/*/*/*.pm"), glob("$site_perl/bin/*.pod"), glob("./fs_selfservice/FS-SelfService/*.pm"), glob("./fs_selfservice/FS-SelfService/*/*.pm"), ); } foreach my $file (@files) { next if $file =~ /(^|\/)blib\//; next if $file =~ /(^|\/)CVS\//; #$file =~ /\/([\w\-]+)\.pm$/ or die "oops file $file"; my $name; if ( $file =~ /fs_\w+\/FS\-\w+\/(.*)\.pm$/ ) { $name = "FS/$1"; } elsif ( $file =~ /$site_perl\/(.*)\.(pm|pod)$/ ) { $name = $1; } else { die "oops file $file"; } #exit if $count++ == 10; my $htmlroot = join('/', map '..',1..(scalar($file =~ tr/\///)-2)) || '.'; system "pod2wiki --style mediawiki $file >$html/$name.rawwiki"; if ( -e "$html/$name.rawwiki" ) { print "processing $name\n"; } else { print "skipping $name\n"; next; }; $mvs->do_update("$html/$name.wiki"); open(RAW, "<$html/$name.rawwiki") or die $!; open(WIKI,">$html/$name.wiki" ) or die $!; while () { s/\[\[([^#p][^\]]*)\]\]/"[[$html\/". w_e($1). "|$1]]"/ge; print WIKI $_; } close RAW; close WIKI; print " uploading to ". $mvs->filename_to_pagename("$html/$name.wiki"). "\n"; $mvs->commit_message( 'import from POD' ); $mvs->do_commit("$html/$name.wiki"); } sub w_e { my $s = shift; $s =~ s/_/ /g; $s =~ s/::/\//g; $s =~ s/^freeside-/bin\/freeside-/g; $s; } ## system "pod2text $file >$catman/$name.txt"; ## # system "pod2html --podroot=$site_perl --podpath=./FS:./FS/UI:.:./bin --norecurse --htmlroot=$htmlroot $file >$html/$name.html"; # #system "pod2html --podroot=$site_perl --htmlroot=$htmlroot $file >$html/$name.html"; ## system "pod2html $file >$html/$name.html"; ## #remove the useless links unlink glob("$site_perl/bin/*.pod");