File: dzil_bootstrap

package info (click to toggle)
libdist-zilla-perl 4.300020-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 1,144 kB
  • sloc: perl: 6,159; makefile: 9
file content (49 lines) | stat: -rw-r--r-- 1,111 bytes parent folder | download | duplicates (9)
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
#!/usr/bin/perl

use strict;
use warnings;

use CPAN;
use CPAN::Version;

sub _uptodate {
  my ($mod, $modname, $modver) = @_;

  return unless $mod and defined $mod->inst_version;
  return CPAN::Version->vge($mod->inst_version, $modver);
}

sub _install {
  for (@_) {
    my ($modname, $modver);
    if (ref $_ eq 'ARRAY') {
      ($modname, $modver) = @$_;
    } else {
      $modname = $_;
      $modver = 0;
    }
    print "Looking for $modname $modver\n";
    my $mod = CPAN::Shell->expand(Module => $modname);
    next if _uptodate($mod, $modname, $modver);
    CPAN::Shell->install($modname);
    $mod = CPAN::Shell->expand(Module => $modname);
    die "$modname had failures, aborting"
      unless _uptodate($mod, $modname, $modver);
  }
}

unless (-e "dist.ini") {
  die "No 'dist.ini' file; is this really a Dist::Zilla distribution?\n"
}

unless (eval "require Config::INI::Reader; 1") {
   _install('Config::INI::Reader');
  require Config::INI::Reader;
}

my $data = Config::INI::Reader->read_file('dist.ini');

_install(
  map { [ $_ => $data->{Prereq}->{$_} ] }
  keys %{ $data->{Prereq} }
);