req => {
%$moose_basic,
'namespace::clean' => '0.11',
- 'Hash::Merge' => '0.11',
+ 'Hash::Merge' => '0.12',
},
pod => {
title => 'Storage::Replicated',
deploy => {
req => {
- 'SQL::Translator' => '0.11002',
+ 'SQL::Translator' => '0.11005',
},
pod => {
title => 'Storage::DBI::deploy()',
},
},
- author => {
+
+ test_pod => {
+ req => {
+ 'Test::Pod' => '1.41',
+ },
+ },
+
+ test_podcoverage => {
req => {
- 'Test::Pod' => '1.26',
'Test::Pod::Coverage' => '1.08',
'Pod::Coverage' => '0.20',
- #'Test::NoTabs' => '0.9',
- #'Test::EOL' => '0.6',
},
},
- core => {
+ test_notabs => {
+ req => {
+ 'Test::NoTabs' => '0.9',
+ },
+ },
+
+ test_eol => {
+ req => {
+ 'Test::EOL' => '0.6',
+ },
+ },
+
+ test_cycle => {
req => {
- # t/52cycle.t
'Test::Memory::Cycle' => '0',
'Devel::Cycle' => '1.10',
+ },
+ },
+ test_dtrelated => {
+ req => {
# t/36datetime.t
# t/60core.t
'DateTime::Format::SQLite' => '0',
# t/96_is_deteministic_value.t
'DateTime::Format::Strptime'=> '0',
+
+ # t/inflate/datetime_mysql.t
+ # (doesn't need Mysql itself)
+ 'DateTime::Format::MySQL' => '0',
+
+ # t/inflate/datetime_pg.t
+ # (doesn't need PG itself)
+ 'DateTime::Format::Pg' => '0',
},
},
? (
'Sys::SigAction' => '0',
'DBD::Pg' => '2.009002',
- 'DateTime::Format::Pg' => '0',
) : ()
},
},
req => {
$ENV{DBICTEST_MYSQL_DSN}
? (
- 'DateTime::Format::MySQL' => '0',
'DBD::mysql' => '0',
) : ()
},
rdbms_asa => {
req => {
- grep $_, @ENV{qw/DBICTEST_SYBASE_ASA_DSN DBICTEST_SYBASE_ASA_ODBC_DSN/}
+ (scalar grep { $ENV{$_} } (qw/DBICTEST_SYBASE_ASA_DSN DBICTEST_SYBASE_ASA_ODBC_DSN/) )
? (
'DateTime::Format::Strptime' => 0,
) : ()
},
},
-};
+ rdbms_db2 => {
+ req => {
+ $ENV{DBICTEST_DB2_DSN}
+ ? (
+ 'DBD::DB2' => 0,
+ ) : ()
+ },
+ },
+
+};
-sub _all_optional_requirements {
- return { map { %{ $reqs->{$_}{req} || {} } } (keys %$reqs) };
-}
sub req_list_for {
my ($class, $group) = @_;
}
}
-# This is to be called by the author onbly (automatically in Makefile.PL)
+sub req_group_list {
+ return { map { $_ => { %{ $reqs->{$_}{req} || {} } } } (keys %$reqs) };
+}
+
+# This is to be called by the author only (automatically in Makefile.PL)
sub _gen_pod {
+
my $class = shift;
my $modfn = __PACKAGE__ . '.pm';
$modfn =~ s/\:\:/\//g;
- require DBIx::Class;
- my $distver = DBIx::Class->VERSION;
+ my $podfn = __FILE__;
+ $podfn =~ s/\.pm$/\.pod/;
+
+ my $distver =
+ eval { require DBIx::Class; DBIx::Class->VERSION; }
+ ||
+ do {
+ warn
+"\n\n---------------------------------------------------------------------\n" .
+'Unable to load core DBIx::Class module to determine current version, '.
+'possibly due to missing dependencies. Author-mode autodocumentation ' .
+"halted\n\n" . $@ .
+"\n\n---------------------------------------------------------------------\n"
+ ;
+ '*UNKNOWN*'; # rv
+ }
+ ;
+
+ my $sqltver = $class->req_list_for ('deploy')->{'SQL::Translator'}
+ or die "Hrmm? No sqlt dep?";
my @chunks = (
<<"EOC",
EOC
'=head1 NAME',
"$class - Optional module dependency specifications (for module authors)",
- '=head1 SYNOPSIS (EXPERIMENTAL)',
+ '=head1 SYNOPSIS',
<<EOS,
-B<THE USAGE SHOWN HERE IS EXPERIMENTAL>
-
Somewhere in your build-file (e.g. L<Module::Install>'s Makefile.PL):
...
push @chunks, (
'=head1 METHODS',
+ '=head2 req_group_list',
+ '=over',
+ '=item Arguments: $none',
+ '=item Returns: \%list_of_requirement_groups',
+ '=back',
+ <<EOD,
+This method should be used by DBIx::Class packagers, to get a hashref of all
+dependencies keyed by dependency group. Each key (group name) can be supplied
+to one of the group-specific methods below.
+EOD
+
'=head2 req_list_for',
'=over',
'=item Arguments: $group_name',
<<EOD,
This method should be used by DBIx::Class extension authors, to determine the
version of modules a specific feature requires in the B<current> version of
-DBIx::Class. See the L<SYNOPSIS|/SYNOPSIS (EXPERIMENTAL)> for a real-world
+DBIx::Class. See the L</SYNOPSIS> for a real-world
example.
EOD
indicate to the user that he needs to install specific modules before he will
be able to use a specific feature.
-For example if the requirements for C<replicated> are not available, the
-returned string would look like:
+For example if some of the requirements for C<deploy> are not available,
+the returned string could look like:
- Moose >= 0.98, MooseX::Types >= 0.21, namespace::clean (see $class for details)
+ SQL::Translator >= $sqltver (see $class for details)
The author is expected to prepend the necessary text to this message before
returning the actual error seen by the user.
'You may distribute this code under the same terms as Perl itself',
);
- my $fn = __FILE__;
- $fn =~ s/\.pm$/\.pod/;
-
- open (my $fh, '>', $fn) or croak "Unable to write to $fn: $!";
+ open (my $fh, '>', $podfn) or croak "Unable to write to $podfn: $!";
print $fh join ("\n\n", @chunks);
close ($fh);
}