1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
  
     | 
    
      #!/usr/bin/env perl
use warnings;
use strict;
use DBIx::Class::_Util; # load early in case any shims are needed
my $lib_dir = 'lib';
my $pod_dir = 'maint/.Generated_Pod';
my $result_metapod_fn = "$lib_dir/DBIx/Class/Manual/ResultClass.pod";
die "POD generator must be executed from the dist root\n"
  unless -d $lib_dir and -d $pod_dir;
require File::Copy;
File::Copy::copy(
  "$result_metapod_fn.proto",
  "$result_metapod_fn",
) or die "Copying ResultClass proto pod ($result_metapod_fn) failed: $!";
# cleanup
END {
  local ($@, $!, $?);
  unlink $result_metapod_fn;
}
require Pod::Inherit;
Pod::Inherit->new({
   input_files       => $lib_dir,
   out_dir           => "$pod_dir/lib",
   force_permissions => 1,
   class_map         => {
      "DBIx::Class::Relationship::HasMany"    => "DBIx::Class::Relationship",
      "DBIx::Class::Relationship::HasOne"     => "DBIx::Class::Relationship",
      "DBIx::Class::Relationship::BelongsTo"  => "DBIx::Class::Relationship",
      "DBIx::Class::Relationship::ManyToMany" => "DBIx::Class::Relationship",
      "DBIx::Class::ResultSourceProxy"        => "DBIx::Class::ResultSource",
   },
   # skip the deprecated classes that give out *DEPRECATED* warnings
   skip_classes      => [ qw(
      lib/DBIx/Class/Storage/DBI/Sybase/MSSQL.pm
      lib/DBIx/Class/Serialize/Storable.pm
      lib/DBIx/Class/ResultSetManager.pm
      lib/DBIx/Class/InflateColumn/File.pm
      lib/DBIx/Class/DB.pm
      lib/DBIx/Class/CDBICompat/
      lib/DBIx/Class/CDBICompat.pm
   ),
   # skip the ::Storage:: family for now
   qw(
      lib/DBIx/Class/Storage/
      lib/DBIx/Class/Storage.pm
   ),
      'lib/DBIx/Class/Storage/DBI/Replicated/Pool.pm',  # this one just errors out with: The 'add_attribute' method cannot be called on an immutable instance
      'lib/DBIx/Class/Relationship.pm',                 # it already documents its own inheritors
      'lib/DBIx/Class/Core.pm',                         # we actually don't want this populated in favor of redirecting users to the ResultClass docs
      'lib/DBIx/Class/Optional/Dependencies.pm'         # the POD is already auto-generated
   ],
   # these appear everywhere, and are typically lower-level methods not used by the general user
   skip_inherits     => [ qw/
      DBIx::Class
      DBIx::Class::Componentised
      Class::C3::Componentised
      DBIx::Class::AccessorGroup
      Class::Accessor::Grouped
      Moose::Object
      Exporter
   / ],
   force_inherits    => {
      'DBIx::Class::Manual::ResultClass' => 'DBIx::Class::Core',  # this forces the contents of ::Core to be dumped into the POD doc for ::ResultClass
   },
   dead_links        => '',
   method_format     => 'L<%m|%c/%m>',
   #debug => 1,
})->write_pod;
# important - write_pod returns undef >.<
1;
 
     |