]> git.vpit.fr Git - perl/modules/Acme-CPANAuthors-You-re_using.git/blobdiff - lib/Acme/CPANAuthors/You/re_using.pm
die instead of croak-ing for internal errors
[perl/modules/Acme-CPANAuthors-You-re_using.git] / lib / Acme / CPANAuthors / You / re_using.pm
index 42c52936a545184b7ffa90682a8c181e9cd5c120..12818020ad53d813e2297e2db0b08146095c9103 100644 (file)
@@ -3,9 +3,8 @@ package Acme::CPANAuthors::You::re_using;
 use strict;
 use warnings;
 
-use Carp qw/croak/;
-
-use ExtUtils::Installed;
+use File::Find ();
+use Module::Metadata;
 
 use Acme::CPANAuthors::Utils;
 
@@ -56,17 +55,25 @@ sub register {
  my %authors;
 
  my $pkgs = Acme::CPANAuthors::Utils::cpan_packages();
croak 'Couldn\'t retrieve a valid Parse::CPAN::Packages object' unless $pkgs;
die 'Couldn\'t retrieve a valid Parse::CPAN::Packages object' unless $pkgs;
 
  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;
-
- for ($installed->modules) {
-  next unless defined and $_ ne 'Perl';
-
+ die 'Couldn\'t retrieve a valid Parse::CPAN::Authors object' unless $auths;
+
+ my %modules;
+
+ 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 +98,7 @@ BEGIN { register() }
 
 =head1 DEPENDENCIES
 
-L<Carp>, L<ExtUtils::Installed>, L<Acme::CPANAuthors>.
+L<File::Find>, L<Module::Metadata>, L<Acme::CPANAuthors>.
 
 =head1 SEE ALSO