summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorMitch Jackson <mitch@freeside.biz>2019-02-19 20:17:29 -0500
committerMitch Jackson <mitch@freeside.biz>2019-02-19 20:24:17 -0500
commit48e65eb4bd1773dfb7076047df4f366538b81459 (patch)
tree6529d4e341ad99600f05923f74e3e405639f5f1c /FS
parentd5b8de340fed6080ca521844131f78336b491cd9 (diff)
RT# 81961 Pod2Html can use installed libs, or Freeside source
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/Misc/Pod2Html.pm91
1 files changed, 83 insertions, 8 deletions
diff --git a/FS/FS/Misc/Pod2Html.pm b/FS/FS/Misc/Pod2Html.pm
index 08358aa..1dfca04 100644
--- a/FS/FS/Misc/Pod2Html.pm
+++ b/FS/FS/Misc/Pod2Html.pm
@@ -2,6 +2,7 @@ package FS::Misc::Pod2Html;
use strict;
use warnings;
use Carp qw( croak );
+use File::Copy;
use Pod::Simple::HTML;
use Pod::Simple::HTMLBatch;
use Pod::Simple::Search;
@@ -9,12 +10,15 @@ use Pod::Simple::Search;
use base 'Exporter';
our @EXPORT_OK = qw(
fs_pod2html
+ fs_pod2html_from_src
+ fs_pod2html_from_dirs
$include_system_perl_modules
$quiet_mode
);
our $include_system_perl_modules = 1;
our $quiet_mode = 0;
+our $DEBUG = 0;
=head1 NAME
@@ -31,9 +35,9 @@ Usage:
use FS::Misc::Pod2Html 'fs_pod2html';
fs_pod2html( '/output/directory' );
-=head2 fs_pod2html /output/directory/
+Also:
-Generates Freeside-themed HTML docuemtnation from installed perl modules
+ perl -MFS::Misc::Pod2Html -e "FS::Misc::Pod2Html::fs_pod2html('/tmp/pod2html');"
=cut
@@ -52,14 +56,15 @@ our $html_after_title = q{</h1>};
our $html_footer = q{</div><% include ('/elements/footer.html' ) %>};
-sub fs_pod2html {
- my $html_dir = shift
- or croak 'Please specify an output directory';
+=head2 fs_pod2html output_dir
- croak "Directory $html_dir: No write access"
- unless -w $html_dir;
+Generates Freeside-themed HTML docuemtnation from installed perl modules
- my @search_dirs = (
+=cut
+
+sub fs_pod2html {
+ fs_pod2html_from_dirs(
+ shift,
'/usr/local/share/perl/5.24.1',
'/usr/local/bin',
$include_system_perl_modules ? (
@@ -68,12 +73,79 @@ sub fs_pod2html {
'/usr/share/perl/5.24.1',
) : (),
);
+}
+
+=head2 fs_pod2html_from_src output_dir
+
+Generate Freeside-themed HTML documentation from a Freeside source tree
+
+Will fail, unless run with CWD at the root of the Freesidse source tree
+
+=cut
+
+sub fs_pod2html_from_src {
+ my $html_dir = shift;
+
+ fs_pod2html_from_dirs(
+ $html_dir,
+ 'FS/bin',
+ 'bin',
+ 'FS',
+ 'fs_selfservice/FS-SelfService',
+ # '/usr/local/share/perl/5.24.1',
+ # '/usr/local/bin',
+ $include_system_perl_modules ? (
+ '/usr/share/perl5',
+ '/usr/share/perl/5.24',
+ '/usr/share/perl/5.24.1',
+ ) : (),
+ );
+
+ # FS-SelfService is loosely packaged:
+ # perl modules are not stored in lib/FS, scripts not stored in /bin, so
+ # batch_convert() places these .html in the wrong locations
+ #
+ # Copy to correct locations, and correct relative links
+ copy( "$html_dir/SelfService.html", "$html_dir/FS/SelfService.html" );
+ mkdir( "$html_dir/FS/SelfService" );
+ copy( "$html_dir/SelfService/XMLRPC.html", "$html_dir/FS/SelfService/XMLRPC.html" );
+ for my $sed_cmd (
+ 'sed -i "s/href=\"\.\//href=\"\.\.\//g" "'.$html_dir.'/FS/SelfService.html"',
+ 'sed -i "s/href=\"\\..\//href=\"\.\.\/\.\.\//g" "'.$html_dir.'/FS/SelfService/XMLRPC.html"',
+ ) {
+ `$sed_cmd`
+ }
+}
+
+=head2 fs_pod2html output_dir @source_scan_dirs
+
+Generate Freeside-themed HTML documentation, scanning the provided directories
+
+=cut
+
+sub fs_pod2html_from_dirs {
+ my $html_dir = shift
+ or croak 'Please specify an output directory';
+
+ croak "Directory $html_dir: No write access"
+ unless -w $html_dir;
+
+ my @search_dirs = @_;
+
+ for my $dir ( @search_dirs ) {
+ unless ( -d $dir ) {
+ croak "Cannot continue - source directory ($dir) not found! ";
+ }
+ }
my $parser = Pod::Simple::HTMLBatch->new;
$parser->verbose(0)
if $quiet_mode;
+ $parser->verbose(2)
+ if $DEBUG;
+
$parser->search_class('Inline::Pod::Simple::Search');
$parser->html_render_class('Inline::Pod::Simple::HTML');
$parser->contents_page_start(
@@ -105,8 +177,11 @@ sub new {
my $class = shift;
my $self = Pod::Simple::Search->new( @_ );
$self->laborious(1);
+ $self->verbose(2)
+ if $DEBUG;
$self;
}
+
1;
=head1 NAME