Commit | Line | Data |
afaa1345 |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use CPAN::FindDependencies qw( finddeps ); |
7 | use CPAN::Mini; |
8 | use List::AllUtils qw( any ); |
9 | use Module::CoreList; |
10 | use version; |
11 | |
12 | |
13 | sub main { |
14 | my @deps = grep { is_real_dep($_) } finddeps('Moose'); |
15 | |
16 | my @distros = map { $_->distribution() } @deps; |
17 | |
18 | my $filter_sub = sub { return ! any { $_[0] eq $_ } @distros }; |
19 | |
20 | CPAN::Mini->update_mirror( |
21 | remote => 'ftp://mirrors2.kernel.org/pub/CPAN/', |
79ec5c5e |
22 | local => './moosepan', |
afaa1345 |
23 | path_filters => $filter_sub, |
24 | trace => 1, |
25 | skip_perl => 1, |
26 | ); |
27 | } |
28 | |
29 | my %skip_deps = map { $_ => 1 } qw( |
30 | ExtUtils::MakeMaker |
31 | Archive::Tar |
32 | Compress::Zlib |
33 | Compress::Raw::Bzip2 |
34 | Compress::Raw::Zlib |
35 | IO::Zlib |
36 | Package::Constants |
37 | ExtUtils::CBuilder |
38 | Pod::Simple |
39 | Pod::Escapes |
40 | Task::Weaken |
41 | Module::Build |
42 | ); |
43 | |
44 | my $min_perl = version->new('5.8.5'); |
45 | sub is_real_dep { |
46 | my $dep = shift; |
47 | |
48 | # Include this just to make sure the user gets a version with |
49 | # weaken available. |
50 | return 1 if $dep->name eq 'Scalar::Util'; |
51 | |
52 | return if $skip_deps{ $dep->name() }; |
53 | |
54 | my $perl = Module::CoreList->first_release( $dep->name() ); |
55 | |
56 | return if defined $perl && version->new($perl) le $min_perl; |
57 | |
58 | return 1; |
59 | } |
60 | |
61 | main(); |