X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/776d31feeb0161f4118b833a7b36f8270236bd3b..412912b60bb061ff9d485db6de9e019158766942:/installhtml diff --git a/installhtml b/installhtml old mode 100755 new mode 100644 index 9884f27..0208cc8 --- a/installhtml +++ b/installhtml @@ -4,6 +4,7 @@ use strict; use Config; # for config options in the makefile +use File::Spec; use Getopt::Long; # for command-line parsing use Cwd; use Pod::Html 'anchorify'; @@ -17,7 +18,7 @@ installhtml - converts a collection of POD pages to HTML format. installhtml [--help] [--podpath=:...:] [--podroot=] [--htmldir=] [--htmlroot=] [--norecurse] [--recurse] [--splithead=,...,] [--splititem=,...,] - [--libpods=,...,] [--verbose] + [--ignore=,...,] [--verbose] =head1 DESCRIPTION @@ -41,7 +42,7 @@ Default is current directory. =item B<--podpath> POD search path The list of directories to search for .pod and .pm files to be converted. -Default is `podroot/.'. +Default is 'podroot/.'. =item B<--recurse> recurse on subdirectories @@ -56,7 +57,7 @@ be a path relative to the filesystem, not the resulting URL. =item B<--htmlroot> URL base directory The base directory which all resulting HTML files will be visible at in -a URL. The default is `/'. +a URL. The default is '/'. =item B<--splithead> POD files to split on =head directive @@ -73,12 +74,12 @@ split, rather it invokes I to do the dirty work. As with =item B<--splitpod> Directory containing the splitpod program -The directory containing the splitpod program. The default is `podroot/pod'. +The directory containing the splitpod program. The default is 'podroot/pod'. -=item B<--libpods> library PODs for LEE links +=item B<--ignore> files to be ignored -Comma-separated list of "library" pod files. This is the same list that -will be passed to pod2html when any pod is converted. +Comma-separated of files that shouldn't be installed, given relative +to podroot. =item B<--verbose> verbose output @@ -97,7 +98,6 @@ perl documentation: --htmlroot=/perl/nmanual \ --splithead=pod/perlipc \ --splititem=pod/perlfunc \ - --libpods=perlfunc,perlguts,perlvar,perlrun,perlop \ --recurse \ --verbose @@ -105,8 +105,6 @@ perl documentation: Chris Hall Ehallc@cs.colorado.eduE -=head1 TODO - =cut my $usage; @@ -115,7 +113,7 @@ $usage =<:...: --podroot= --htmldir= --htmlroot= --norecurse --recurse --splithead=,..., --splititem=,..., - --libpods=,..., --verbose + --ignore=,..., --verbose --help - this message --podpath - colon-separated list of directories containing .pod and @@ -123,12 +121,9 @@ Usage: $0 --help --podpath=:...: --podroot= --podroot - filesystem base directory from which all relative paths in podpath stem (default is .). --htmldir - directory to store resulting html files in relative - to the filesystem (\$podroot/html by default). + to the filesystem (\$podroot/html by default). --htmlroot - http-server base directory from which all relative paths in podpath stem (default is /). - --libpods - comma-separated list of files to search for =item pod - directives in as targets of C<> and implicit links (empty - by default). --norecurse - don't recurse on those subdirectories listed in podpath. (default behavior). --recurse - recurse on those subdirectories listed in podpath @@ -139,14 +134,14 @@ Usage: $0 --help --podpath=:...: --podroot= splitpod. --splitpod - directory where the program splitpod can be found (\$podroot/pod by default). + --ignore - comma-separated list of files that shouldn't be installed. --verbose - self-explanatory. END_OF_USAGE -my (@libpods, @podpath, $podroot, $htmldir, $htmlroot, $recurse, @splithead, - @splititem, $splitpod, $verbose, $pod2html); +my (@podpath, $podroot, $htmldir, $htmlroot, $recurse, @splithead, + @splititem, $splitpod, $verbose, $pod2html, @ignore); -@libpods = (); @podpath = ( "." ); # colon-separated list of directories containing .pod # and .pm files to be converted. $podroot = "."; # assume the pods we want are here @@ -157,14 +152,14 @@ $recurse = 0; # default behavior @splititem = (); # don't split any files by default $splitpod = ""; # nothing for now. -$verbose = 0; # whether or not to print debugging info +$verbose = 0; # whether or not to print debugging info $pod2html = "pod/pod2html"; usage("") unless @ARGV; # Overcome shell's p1,..,p8 limitation. -# See vms/descrip_mms.template -> descrip.mms for invokation. +# See vms/descrip_mms.template -> descrip.mms for invocation. if ( $^O eq 'VMS' ) { @ARGV = split(/\s+/,$ARGV[0]); } use vars qw( %Options ); @@ -176,7 +171,7 @@ my $result = GetOptions( \%Options, qw( podroot=s htmldir=s htmlroot=s - libpods=s + ignore=s recurse! splithead=s splititem=s @@ -202,11 +197,10 @@ $splitpod = "$podroot/pod" unless $splitpod; # ignored in the conversion process. these are files that have been # process by splititem or splithead and should not be converted as a # result. -my @ignore = (); my @splitdirs; -# split pods. its important to do this before convert ANY pods because -# it may effect some of the links +# split pods. It's important to do this before convert ANY pods because +# it may affect some of the links @splitdirs = (); # files in these directories won't get an index split_on_head($podroot, $htmldir, \@splitdirs, \@ignore, @splithead); split_on_item($podroot, \@splitdirs, \@ignore, @splititem); @@ -255,7 +249,7 @@ foreach my $dir (@splithead) { } close(H); - # now rewrite the file + # now rewrite the file open(H, ">$file.html") || die "$0: error opening $file.html for output: $!\n"; print H "@data", "\n"; @@ -281,7 +275,6 @@ sub parse_command_line { # lists of files @splithead = split(",", $Options{splithead}) if defined $Options{splithead}; @splititem = split(",", $Options{splititem}) if defined $Options{splititem}; - @libpods = split(",", $Options{libpods}) if defined $Options{libpods}; $htmldir = $Options{htmldir} if defined $Options{htmldir}; $htmlroot = $Options{htmlroot} if defined $Options{htmlroot}; @@ -290,15 +283,8 @@ sub parse_command_line { $recurse = $Options{recurse} if defined $Options{recurse}; $verbose = $Options{verbose} if defined $Options{verbose}; -} - -sub absolute_path { - my($cwd, $path) = @_; - return "$cwd/$path" unless $path =~ m:/:; - # add cwd if path is not already an absolute path - $path = "$cwd/$path" if (substr($path,0,1) ne '/'); - return $path; + @ignore = map "$podroot/$_", split(",", $Options{ignore}) if defined $Options{ignore}; } @@ -391,7 +377,8 @@ sub split_on_item { print "splitting files by item.\n" if $verbose && $#splititem >= 0; $pwd = getcwd(); - my $splitter = absolute_path($pwd, "$splitpod/splitpod"); + my $splitter = File::Spec->rel2abs("$splitpod/splitpod", $pwd); + my $perl = File::Spec->rel2abs($^X, $pwd); foreach my $pod (@splititem) { # figure out the directory to split into $pod =~ s,^([^/]*)$,/$1,; @@ -412,7 +399,7 @@ sub split_on_item { die "$0: error changing to directory $podroot/$dirname: $!\n"; die "$splitter not found. Use '-splitpod dir' option.\n" unless -f $splitter; - system("perl", $splitter, "../$filename") && + system($perl, $splitter, "../$filename") && warn "$0: error running '$splitter ../$filename'" ." from $podroot/$dirname"; } @@ -549,12 +536,13 @@ sub installdir { # install all the pods we found foreach my $pod (@podlist) { # check if we should ignore it. - next if grep($_ eq "$podroot/$pod.pod", @$ignore); + next if $pod =~ m(/t/); # comes from a test file + next if grep($_ eq "$pod.pod", @$ignore); # check if a .pm files exists too if (grep($_ eq $pod, @pmlist)) { - print "$0: Warning both `$podroot/$pod.pod' and " - . "`$podroot/$pod.pm' exist, using pod\n"; + print "$0: Warning both '$podroot/$pod.pod' and " + . "'$podroot/$pod.pm' exist, using pod\n"; push(@ignore, "$pod.pm"); } runpod2html("$pod.pod", $doindex); @@ -563,6 +551,7 @@ sub installdir { # install all the .pm files we found foreach my $pm (@pmlist) { # check if we should ignore it. + next if $pm =~ m(/t/); # comes from a test file next if grep($_ eq "$pm.pm", @ignore); runpod2html("$pm.pm", $doindex); @@ -598,11 +587,10 @@ sub runpod2html { "--htmldir=$htmldir", "--htmlroot=$htmlroot", "--podpath=".join(":", @podpath), - "--podroot=$podroot", "--netscape", + "--podroot=$podroot", "--header", ($doindex ? "--index" : "--noindex"), "--" . ($recurse ? "" : "no") . "recurse", - ($#libpods >= 0) ? "--libpods=" . join(":", @libpods) : "", "--infile=$podroot/$pod", "--outfile=$htmldir/$html"); die "$0: error running $pod2html: $!\n" if $?; }