diff options
Diffstat (limited to 'bin/pod2x')
| -rwxr-xr-x | bin/pod2x | 148 | 
1 files changed, 148 insertions, 0 deletions
| diff --git a/bin/pod2x b/bin/pod2x new file mode 100755 index 000000000..6b7153f96 --- /dev/null +++ b/bin/pod2x @@ -0,0 +1,148 @@ +#!/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 (<RAW>) { +    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"); + | 
