Revision 97063fbc
Von Sven Schöling vor etwa 14 Jahren hinzugefügt
SL/InstallationCheck.pm | ||
---|---|---|
7 | 7 |
|
8 | 8 |
use strict; |
9 | 9 |
|
10 |
BEGIN { |
|
10 | 11 |
@required_modules = ( |
11 | 12 |
{ name => "parent", url => "http://search.cpan.org/~corion/" }, |
12 |
{ name => "Archive::Zip", url => "http://search.cpan.org/~adamk/" },
|
|
13 |
{ name => "Archive::Zip", version => 12, url => "http://search.cpan.org/~adamk/" },
|
|
13 | 14 |
{ name => "Class::Accessor", url => "http://search.cpan.org/~kasei/" }, |
14 | 15 |
{ name => "CGI::Ajax", url => "http://search.cpan.org/~bct/" }, |
15 | 16 |
{ name => "DateTime", url => "http://search.cpan.org/~drolsky/" }, |
... | ... | |
30 | 31 |
|
31 | 32 |
@optional_modules = (); |
32 | 33 |
|
34 |
$_->{fullname} = join ' ', grep $_, @$_{qw(name version)} |
|
35 |
for @required_modules, @optional_modules; |
|
36 |
} |
|
37 |
|
|
33 | 38 |
sub module_available { |
34 | 39 |
my $module = $_[0]; |
35 | 40 |
my $version = $_[1] || '' ; |
36 | 41 |
|
37 |
if (!defined(eval("require $module $version;"))) { |
|
38 |
return 0; |
|
39 |
} else { |
|
40 |
return 1; |
|
41 |
} |
|
42 |
return eval "use $module $version; 1"; |
|
42 | 43 |
} |
43 | 44 |
|
44 | 45 |
my %conditional_dependencies; |
45 | 46 |
|
46 | 47 |
sub check_for_conditional_dependencies { |
47 |
if (!$conditional_dependencies{net_ldap}) { |
|
48 |
$conditional_dependencies{net_ldap} = 1; |
|
49 |
|
|
50 |
my $in = IO::File->new('config/authentication.pl', 'r'); |
|
51 |
if ($in) { |
|
52 |
my $self = {}; |
|
53 |
my $code; |
|
54 |
|
|
55 |
while (my $line = <$in>) { |
|
56 |
$code .= $line; |
|
57 |
} |
|
58 |
$in->close(); |
|
59 |
|
|
60 |
eval $code; |
|
48 |
return if $conditional_dependencies{net_ldap}++; |
|
61 | 49 |
|
62 |
if (! $EVAL_ERROR) { |
|
50 |
my $self = {}; |
|
51 |
eval do { local (@ARGV, $/) = 'config/authentication.pl'; <> } or return; |
|
63 | 52 |
|
64 |
if ($self->{module} && ($self->{module} eq 'LDAP')) { |
|
65 |
push @required_modules, { 'name' => 'Net::LDAP', 'url' => 'http://search.cpan.org/~gbarr/' }; |
|
66 |
} |
|
67 |
} |
|
68 |
} |
|
69 |
} |
|
53 |
push @required_modules, { 'name' => 'Net::LDAP', 'url' => 'http://search.cpan.org/~gbarr/' } |
|
54 |
if $self->{module} && ($self->{module} eq 'LDAP'); |
|
70 | 55 |
} |
71 | 56 |
|
72 | 57 |
sub test_all_modules { |
Auch abrufbar als: Unified diff
Mehrere Fehler behoben und Texte leichter lesbar gemacht.
- require kann keine Versionierung, also muss das mit use gemacht werden.
- eval + defined Bugs durch idiomatischere Konstrukte ersetzt.
- gefühlte 500 Zeilen IO::File Code durch ein idiomatisches slurp ersetzt.
- Die Meldungen wenn ein Paket nicht gefunden wurden sind jetzt mit einem
freundlichen Kasten umrahmt, und damit in der Textmasse einfacher
auszumachen.
- Es können jetzt mehrere Sourcen an die module Definition angehängt werden.