Sponsoring The Perl Toolchain Summit 2025: Help make this important event another success Learn more

#!/usr/bin/env perl
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;