1 package DBIx::Class::Optional::Dependencies;
8 # NO EXTERNAL NON-5.8.1 CORE DEPENDENCIES EVER (e.g. C::A::G)
9 # This module is to be loaded by Makefile.PM on a pristine system
13 #'Module::Install::Pod::Inherit' => '0.01',
18 'MooseX::Types' => '0.21',
19 'namespace::clean' => '0.11',
20 'Hash::Merge' => '0.11',
27 'SQL::Translator' => '0.11002',
31 'Test::Pod' => '1.26',
32 'Test::Pod::Coverage' => '1.08',
33 'Pod::Coverage' => '0.20',
34 #'Test::NoTabs' => '0.9',
35 #'Test::EOL' => '0.6',
40 'Test::Memory::Cycle' => '0',
41 'Devel::Cycle' => '1.10',
45 'DateTime::Format::SQLite' => '0',
47 # t/96_is_deteministic_value.t
48 'DateTime::Format::Strptime'=> '0',
52 'DBIx::ContextualFetch' => '0',
53 'Class::DBI::Plugin::DeepAbstractSearch' => '0',
54 'Class::Trigger' => '0',
55 'Time::Piece::MySQL' => '0',
57 'Date::Simple' => '3.03',
63 'Sys::SigAction' => '0',
64 'DBD::Pg' => '2.009002',
65 'DateTime::Format::Pg' => '0',
70 $ENV{DBICTEST_MYSQL_DSN}
72 'DateTime::Format::MySQL' => '0',
79 $ENV{DBICTEST_ORA_DSN}
81 'DateTime::Format::Oracle' => '0',
86 $ENV{DBICTEST_SYBASE_DSN}
88 'DateTime::Format::Sybase' => 0,
93 grep $_, @ENV{qw/DBICTEST_SYBASE_ASA_DSN DBICTEST_SYBASE_ASA_ODBC_DSN/}
95 'DateTime::Format::Strptime' => 0,
100 sub all_optional_requirements {
101 return { map { %{ $_ || {} } } (values %$reqs) };
105 my ($class, $group) = @_;
107 die "req_list_for() expects a requirement group name"
110 my $deps = $reqs->{$group}
111 or die "Requirement group '$group' does not exist";
117 our %req_availability_cache;
119 my ($class, $group) = @_;
121 croak "req_ok_for() expects a requirement group name"
124 $class->_check_deps ($group) unless $req_availability_cache{$group};
126 return $req_availability_cache{$group}{status};
129 sub req_missing_for {
130 my ($class, $group) = @_;
132 croak "req_missing_for() expects a requirement group name"
135 $class->_check_deps ($group) unless $req_availability_cache{$group};
137 return $req_availability_cache{$group}{missing};
140 sub req_errorlist_for {
141 my ($class, $group) = @_;
143 croak "req_errorlist_for() expects a requirement group name"
146 $class->_check_deps ($group) unless $req_availability_cache{$group};
148 return $req_availability_cache{$group}{errorlist};
152 my ($class, $group) = @_;
154 my $deps = $reqs->{$group}
155 or croak "Requirement group '$group' does not exist";
158 for my $mod (keys %$deps) {
159 if (my $ver = $deps->{$mod}) {
160 eval "use $mod $ver ()";
166 $errors{$mod} = $@ if $@;
170 $req_availability_cache{$group} = {
172 errorlist => { %errors },
173 missing => join (', ', map { $deps->{$_} ? "$_ >= $deps->{$_}" : $_ } (sort keys %errors) ),
177 $req_availability_cache{$group} = {