[Libguestfs] [PATCH 1/2] podcheck: __INCLUDE:file.pod__ and __VERBATIM:file.txt__ in POD files.

Pino Toscano ptoscano at redhat.com
Wed Dec 11 13:26:32 UTC 2019


Make sure the pod checker script can deal with the newer additions of
podwrapper.pl.

Followup of commit 46e59e9535c2fcd1c188464b5249a249f22af1a0.
---
 podcheck.pl | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/podcheck.pl b/podcheck.pl
index 527a2e47d..795fe0e9b 100755
--- a/podcheck.pl
+++ b/podcheck.pl
@@ -83,6 +83,15 @@ used where the POD includes patterns which podwrapper would substitute.
 
 =cut
 
+my @paths;
+
+=item B<--path DIR>
+
+This works like the L<podwrapper.pl(1)> I<--path> option and should be
+used where the POD includes patterns which podwrapper would substitute.
+
+=cut
+
 # Clean up the program name.
 my $progname = $0;
 $progname =~ s{.*/}{};
@@ -91,6 +100,7 @@ $progname =~ s{.*/}{};
 GetOptions ("help|?" => \$help,
             "ignore=s" => \$ignore,
             "insert=s" => \@inserts,
+            "path=s" => \@paths,
             "verbatim=s" => \@verbatims,
     ) or pod2usage (2);
 pod2usage (1) if $help;
@@ -117,6 +127,10 @@ foreach (@inserts) {
         if $content eq $oldcontent;
 }
 
+# Perform INCLUDE directives.
+$content =~ s{__INCLUDE:([-a-z0-9_]+\.pod)__}
+             {read_whole_file ("$1", use_path => 1)}ge;
+
 # Perform @verbatims.
 foreach (@verbatims) {
     my @a = split /:/, $_, 2;
@@ -128,6 +142,10 @@ foreach (@verbatims) {
         if $content eq $oldcontent;
 }
 
+# Perform VERBATIM directives.
+$content =~ s{__VERBATIM:([-a-z0-9_]+\.txt)__}
+             {read_verbatim_file ("$1", use_path => 1)}ge;
+
 # Run the tool with --long-options and --short-options.
 my @tool_options = ();
 open PIPE, "$tool --long-options |"
@@ -235,11 +253,27 @@ printf "$progname: $tool: checked $tool_options_checked tool options, $pod_optio
 
 exit 0;
 
+sub find_file
+{
+    my $input = shift;
+    my $use_path = shift;
+    local $_;
+
+    my @search_path = (".");
+    push (@search_path, @paths) if $use_path;
+    foreach (@search_path) {
+        return "$_/$input" if -f "$_/$input";
+    }
+    die "$progname: $input: cannot find input file on path"
+}
+
 sub read_whole_file
 {
     my $input = shift;
+    my %options = @_;
     local $/ = undef;
 
+    $input = find_file ($input, $options{use_path});
     open FILE, $input or die "$progname: $input: $!";
     $_ = <FILE>;
     close FILE;
@@ -249,8 +283,10 @@ sub read_whole_file
 sub read_verbatim_file
 {
     my $input = shift;
+    my %options = @_;
     my $r = "";
 
+    $input = find_file ($input, $options{use_path});
     open FILE, $input or die "$progname: $input: $!";
     while (<FILE>) {
         $r .= " $_";
-- 
2.23.0




More information about the Libguestfs mailing list