Merge branch 'master' of ssh://git.freeside.biz/home/git/freeside
authorChristopher Burger <burgerc@freeside.biz>
Tue, 12 Feb 2019 20:15:37 +0000 (15:15 -0500)
committerChristopher Burger <burgerc@freeside.biz>
Tue, 12 Feb 2019 20:15:37 +0000 (15:15 -0500)
FS/FS/Misc/Pod2Html.pm [new file with mode: 0644]
FS/bin/freeside-pod2html [new file with mode: 0755]
Makefile
bin/pod2html.pl [deleted file]
debian/freeside-lib.postinst
httemplate/docs/credits.html

diff --git a/FS/FS/Misc/Pod2Html.pm b/FS/FS/Misc/Pod2Html.pm
new file mode 100644 (file)
index 0000000..08358aa
--- /dev/null
@@ -0,0 +1,132 @@
+package FS::Misc::Pod2Html;
+use strict;
+use warnings;
+use Carp qw( croak );
+use Pod::Simple::HTML;
+use Pod::Simple::HTMLBatch;
+use Pod::Simple::Search;
+
+use base 'Exporter';
+our @EXPORT_OK = qw(
+  fs_pod2html
+  $include_system_perl_modules
+  $quiet_mode
+);
+
+our $include_system_perl_modules = 1;
+our $quiet_mode = 0;
+
+=head1 NAME
+
+FS::Misc::Pod2Html
+
+=head1 DESCRIPTION
+
+Generate HTML from POD Documentation
+
+=head1 SYNOPSIS
+
+Usage:
+
+  use FS::Misc::Pod2Html 'fs_pod2html';
+  fs_pod2html( '/output/directory' );
+
+=head2 fs_pod2html /output/directory/
+
+Generates Freeside-themed HTML docuemtnation from installed perl modules
+
+=cut
+
+our $html_before_title = q{
+  <% include( '/elements/header.html', 'Developer Documentation' ) %>
+  <& /elements/menubar.html,
+    'Freeside Perl Modules' => $fsurl.'docs/library/FS.html',
+    'Complete Index' => $fsurl.'docs/library/index.html',
+  &>
+
+  <div style="width: 90%; margin: 1em auto; font-size: .9em; border: solid 1px #666; background-color: #eee; padding: 1em;">
+  <h1 style="margin: .5em; border-bottom: solid 1px #999;">
+};
+
+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';
+
+  croak "Directory $html_dir: No write access"
+    unless -w $html_dir;
+
+  my @search_dirs = (
+    '/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',
+    ) : (),
+  );
+
+  my $parser = Pod::Simple::HTMLBatch->new;
+
+  $parser->verbose(0)
+    if $quiet_mode;
+
+  $parser->search_class('Inline::Pod::Simple::Search');
+  $parser->html_render_class('Inline::Pod::Simple::HTML');
+  $parser->contents_page_start(
+    "$html_before_title Freeside Documentation Index $html_after_title"
+  );
+  $parser->contents_page_end( $html_footer );
+
+  $parser->batch_convert( \@search_dirs, $html_dir );
+}
+
+1;
+
+=head1 NAME
+
+Inline::Pod::Simple::Search
+
+=head2 DESCRIPTION
+
+Subclass of Pod::Simple::Search
+
+Enable searching for POD in all files instead of just .pl and .pm
+
+=cut
+
+package Inline::Pod::Simple::Search;
+use base 'Pod::Simple::Search';
+
+sub new {
+  my $class = shift;
+  my $self = Pod::Simple::Search->new( @_ );
+  $self->laborious(1);
+  $self;
+}
+1;
+
+=head1 NAME
+
+Inline::Pod::Simple::HTML
+
+=head2 DESCRIPTION
+
+Subclass of Pod::Simple::HTML
+
+Customize parsed HTML output
+
+=cut
+
+# Subclass Pod::Simple::HTML to control HTML output
+package Inline::Pod::Simple::HTML;
+use base 'Pod::Simple::HTML';
+
+sub html_header_before_title { $html_before_title }
+sub html_header_after_title { $html_after_title }
+sub html_footer { $html_footer }
+
+1;
diff --git a/FS/bin/freeside-pod2html b/FS/bin/freeside-pod2html
new file mode 100755 (executable)
index 0000000..991b9fe
--- /dev/null
@@ -0,0 +1,47 @@
+#!/usr/bin/env perl
+
+=head1 NAME
+
+pod2html.pl
+
+=head1 DESCRIPTION
+
+Generate HTML from POD documentation
+
+=head1 SEE ALSO
+
+L<FS::Misc::Pod2Html>
+
+=cut
+
+use strict;
+use warnings;
+use v5.10;
+
+use FS::Misc::Pod2Html 'fs_pod2html';
+use FS::UID qw( checkuid );
+
+die 'Not running uid freeside!'
+  unless checkuid();
+
+my $html_dir = shift @ARGV
+  or HELP_MESSAGE('Please specify an OUTPUT_DIRECTORY');
+
+HELP_MESSAGE("Directory $html_dir: No write access!")
+  unless -w $html_dir;
+
+fs_pod2html( $html_dir );
+
+sub HELP_MESSAGE {
+  my $error = shift;
+  print " ERROR: $error \n"
+    if $error;
+  print "
+    Generate HTML from Freeside POD documentation
+
+    Usage: pod2html.pl OUTPUT_DIRECTORY
+
+  ";
+  exit;
+}
+
index 301dc41..f3bbdc4 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -333,7 +333,7 @@ install-chown:
 install-pod2html:
        echo "${POD2HTML_DIR}"
        mkdir -p "${POD2HTML_DIR}"
-       perl bin/pod2html.pl "${POD2HTML_DIR}"
+       perl -MFS::Misc::Pod2Html -e "FS::Misc::Pod2Html::fs_pod2html('${POD2HTML_DIR}');"
        chown freeside:freeside -R "${POD2HTML_DIR}"
 
 install: install-perl-modules install-docs install-init install-apache install-rt install-torrus install-texmf install-chown install-pod2html
diff --git a/bin/pod2html.pl b/bin/pod2html.pl
deleted file mode 100755 (executable)
index 935ff11..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/env perl
-
-=head1 NAME
-
-pod2html.pl
-
-=head1 DESCRIPTION
-
-Generate HTML from POD documentation
-
-Search directories /usr/local/share/perl and /usr/local/bin
-
-Output HTML to /var/www/html/freeside-doc
-
-=cut
-
-use strict;
-use warnings;
-use v5.10;
-
-use Pod::Simple::Search;
-use Pod::Simple::HTML;
-use Pod::Simple::HTMLBatch;
-
-# Disable this to only build docs for Freeside modules
-# This will cause links to non-freeside packages to be broken,
-# but save 30-60secs during build process
-my $include_system_perl_modules = 1;
-
-
-my $html_dir = shift @ARGV
-  or HELP_MESSAGE('Please specify an OUTPUT_DIRECTORY');
-
-HELP_MESSAGE("Directory $html_dir: No write access!")
-  unless -w $html_dir;
-
-
-my $parser = Pod::Simple::HTMLBatch->new;
-
-# Uncomment to suppress status output to STDIN
-# $parser->verbose(0);
-
-$parser->search_class('Inline::Pod::Simple::Search');
-$parser->html_render_class('Inline::Pod::Simple::HTML');
-
-# Customized HTML output
-our $html_before_title = q{
-  <% include( '/elements/header.html', 'Developer Documentation' ) %>
-  <& /elements/menubar.html,
-    'Freeside Perl Modules' => $fsurl.'docs/library/FS.html',
-    'Complete Index' => $fsurl.'docs/library/index.html',
-  &>
-
-  <div style="width: 90%; margin: 1em auto; font-size: .9em; border: solid 1px #666; background-color: #eee; padding: 1em;">
-  <h1 style="margin: .5em; border-bottom: solid 1px #999;">
-};
-our $html_after_title = q{</h1>};
-our $html_footer = q{</div><% include ('/elements/footer.html' ) %>};
-
-$parser->contents_page_start(
-  "$html_before_title Freeside Documentation Index $html_after_title"
-);
-$parser->contents_page_end( $html_footer );
-
-my @search_dirs = (
-  '/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',
-  ) : (),
-);
-
-$parser->batch_convert( \@search_dirs, $html_dir );
-
-sub HELP_MESSAGE {
-  my $error = shift;
-  print " ERROR: $error \n"
-    if $error;
-  print "
-    Tool to generate HTML from Freeside POD documentation
-
-    Usage: pod2html.pl OUTPUT_DIRECTORY
-
-  ";
-  exit;
-}
-
-
-
-# Subclass Pod::Simple::Search to render POD from files without
-# normal perl extensions like PL and PM
-package Inline::Pod::Simple::Search;
-use base 'Pod::Simple::Search';
-
-sub new {
-  my $class = shift;
-  my $self = Pod::Simple::Search->new( @_ );
-  $self->laborious(1);
-  $self;
-}
-1;
-
-
-# Subclass Pod::Simple::HTML to control HTML output
-package Inline::Pod::Simple::HTML;
-use base 'Pod::Simple::HTML';
-
-sub html_header_before_title { $html_before_title }
-sub html_header_after_title { $html_after_title }
-sub html_footer { $html_footer }
-
-1;
index 870ad31..0692f89 100644 (file)
@@ -1,4 +1,21 @@
 #!/bin/sh
 
+# Rebuild ls-R filename databases used by TeX
 texhash /usr/local/share/texmf
 
+# Generate HTML documentation from perl POD
+if [ -z "$APACHE_VERSION" ]; then
+  export APACHE_VERSION=`/usr/sbin/apache2 -v | grep -q '\/2\.4\.' && echo '2.4' || echo '2'`
+fi
+
+if [ -z "$APACHE_DOCUMENT_ROOT" ]; then
+  export APACHE_DOCUMENT_ROOT=`[ ${APACHE_VERSION} = '2.4' ] && echo '/var/www/html' || echo '/var/www'`
+fi
+
+export POD2HTML_DOCUMENT_ROOT="${APACHE_DOCUMENT_ROOT}/freeside/docs/library"
+
+mkdir -p "$POD2HTML_DOCUMENT_ROOT"
+perl -MFS::Misc::Pod2Html -e "FS::Misc::Pod2Html::fs_pod2html('$POD2HTML_DOCUMENT_ROOT');"
+chown -R freeside "$POD2HTML_DOCUMENT_ROOT"
+
+exit 0
index 7a7d8d7..4bcb266 100644 (file)
@@ -30,6 +30,8 @@
 
 <H3>Core Team</H3>
 Christopher Burger<BR>
+Mitch Jackson<BR>
+Jim Lucas<BR>
 Ivan Kohler<BR>
 <BR>
 
@@ -83,7 +85,6 @@ Troy Hammonds<BR>
 Sean Hanson<BR>
 Dale Hege<BR>
 Kelly Hickel<BR>
-Mitch Jackson<BR>
 Mark James<BR>
 Gary Jones<BR>
 Fernando M. Kiernan<BR>