]> git.vpit.fr Git - perl/modules/Acme-CPANAuthors-You-re_using.git/blob - lib/Acme/CPANAuthors/You/re_using.pm
Skip 'Perl' from the list of modules
[perl/modules/Acme-CPANAuthors-You-re_using.git] / lib / Acme / CPANAuthors / You / re_using.pm
1 package Acme::CPANAuthors::You::re_using;
2
3 use strict;
4 use warnings;
5
6 use Carp qw/croak/;
7
8 use ExtUtils::Installed;
9
10 use Acme::CPANAuthors::Utils;
11
12 =head1 NAME
13
14 Acme::CPANAuthors::You::re_using - We are the CPAN authors that have written the modules installed on your perl!
15
16 =head1 VERSION
17
18 Version 0.01
19
20 =cut
21
22 our $VERSION;
23 BEGIN {
24  $VERSION = '0.01';
25 }
26
27 =head1 SYNOPSIS
28
29     use Acme::CPANAuthors;
30
31     my $authors = Acme::CPANAuthors->new("You're_using");
32     print $authors->name($_) . " ($_)\n" for $authors->id;
33
34 =head1 DESCRIPTION
35
36 This module builds an L<Acme::CPANAuthors> class by listing all the modules that are installed on the current C<perl> and then retrieving the name and the PAUSE id of their corresponding authors.
37
38 It may take some time to load since it has to get CPAN indexes at C<BEGIN> time.
39
40 =cut
41
42 BEGIN {
43  my %authors;
44
45  my $pkgs = Acme::CPANAuthors::Utils::cpan_packages();
46  croak 'Couldn\'t retrieve a valid Parse::CPAN::Packages object' unless $pkgs;
47
48  my $auths = Acme::CPANAuthors::Utils::cpan_authors();
49  croak 'Couldn\'t retrieve a valid Parse::CPAN::Authors object' unless $auths;
50
51  my $installed = ExtUtils::Installed->new(extra_libs => \@INC);
52  croak 'Couldn\'t create a valid ExtUtils::Installed object' unless $installed;
53
54  for ($installed->modules) {
55   next unless defined and $_ ne 'Perl';
56
57   my $mod = $pkgs->package($_);
58   next unless $mod;
59
60   my $dist = $mod->distribution;
61   next unless $dist;
62
63   my $cpanid = $dist->cpanid;
64   next if not $cpanid or exists $authors{$cpanid};
65
66   my $auth = $auths->author($cpanid);
67
68   my $name;
69   $name = $auth->name if defined $auth;
70  
71   $authors{$cpanid} = defined $name ? $name : $cpanid;
72  }
73
74  require Acme::CPANAuthors::Register;
75  Acme::CPANAuthors::Register->import(%authors);
76 }
77
78 =head1 DEPENDENCIES
79
80 L<Carp>, L<ExtUtils::Installed>, L<Acme::CPANAuthors>.
81
82 =head1 SEE ALSO
83
84 All others C<Acme::CPANAuthors::*> modules.
85
86 =head1 AUTHOR
87
88 Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
89
90 You can contact me by mail or on C<irc.perl.org> (vincent).
91
92 =head1 BUGS
93
94 Please report any bugs or feature requests to C<bug-acme-cpanauthors-you-re_using at rt.cpan.org>, or through the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Acme-CPANAuthors-You-re_using>.  I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
95
96 =head1 SUPPORT
97
98 You can find documentation for this module with the perldoc command.
99
100     perldoc Acme::CPANAuthors::You::re_using
101
102 =head1 COPYRIGHT & LICENSE
103
104 Copyright 2009 Vincent Pit, all rights reserved.
105
106 This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
107
108 =cut
109
110 1;