]> git.vpit.fr Git - perl/modules/Acme-CPANAuthors-You-re_using.git/commitdiff
Replace ExtUtils::Installed by File::Find/Module::Metadata
authorVincent Pit <vince@profvince.com>
Wed, 24 Aug 2011 22:57:49 +0000 (00:57 +0200)
committerVincent Pit <vince@profvince.com>
Wed, 24 Aug 2011 22:57:49 +0000 (00:57 +0200)
Reading from the packlists seems to cause a lot of test failures. Moreover,
this new technique is closer from how the PAUSE indexer processes modules.

Makefile.PL
lib/Acme/CPANAuthors/You/re_using.pm

index dbd54921b1386d044312a04295b29846ffa9c566..692897efdb5e235e1b161b746782c66bb24a1a91 100644 (file)
@@ -10,9 +10,10 @@ my $dist = 'Acme-CPANAuthors-You-re_using';
 $file = "lib/$file.pm";
 
 my %PREREQ_PM = (
- 'Acme::CPANAuthors'   => '0.16',
- 'Carp'                => 0,
- 'ExtUtils::Installed' => '1.999',
+ 'Acme::CPANAuthors' => '0.16',
+ 'Carp'              => 0,
+ 'File::Find'        => 0,
+ 'Module::Metadata'  => '1.000005',
 );
 
 my %META = (
index 42c52936a545184b7ffa90682a8c181e9cd5c120..8c8a746578eeb3ef3e234b819ff469618c899858 100644 (file)
@@ -5,7 +5,8 @@ use warnings;
 
 use Carp qw/croak/;
 
-use ExtUtils::Installed;
+use File::Find ();
+use Module::Metadata;
 
 use Acme::CPANAuthors::Utils;
 
@@ -61,12 +62,20 @@ sub register {
  my $auths = Acme::CPANAuthors::Utils::cpan_authors();
  croak 'Couldn\'t retrieve a valid Parse::CPAN::Authors object' unless $auths;
 
- my $installed = ExtUtils::Installed->new();
- croak 'Couldn\'t create a valid ExtUtils::Installed object' unless $installed;
+ my %modules;
 
- for ($installed->modules) {
-  next unless defined and $_ ne 'Perl';
+ File::Find::find({
+  wanted => sub {
+   return unless /\.pm$/;
+   my $mod = Module::Metadata->new_from_file($_);
+   return unless $mod;
+   @modules{grep $_, $mod->packages_inside} = ();
+  },
+  follow   => 0,
+  no_chdir => 1,
+ }, @INC);
 
+ for (keys %modules) {
   my $mod = $pkgs->package($_);
   next unless $mod;
 
@@ -91,7 +100,7 @@ BEGIN { register() }
 
 =head1 DEPENDENCIES
 
-L<Carp>, L<ExtUtils::Installed>, L<Acme::CPANAuthors>.
+L<Carp>, L<File::Find>, L<Module::Metadata>, L<Acme::CPANAuthors>.
 
 =head1 SEE ALSO