]> git.vpit.fr Git - perl/modules/CPANPLUS-Dist-Gentoo.git/blobdiff - samples/gengentooisms
Try to lookup unknown dists as modules
[perl/modules/CPANPLUS-Dist-Gentoo.git] / samples / gengentooisms
index 980ecbf7dcaf56b8b4418080ad5deb7a6e347853..03253e053397a87edec037b6624ca2fb9cda5bb8 100755 (executable)
@@ -32,6 +32,8 @@ use constant STATE_FILE  => 'gentooisms.state.sto';
 
 my %is_on_cpan = (
  'Audio-CD-disc-cover' => 0,
 
 my %is_on_cpan = (
  'Audio-CD-disc-cover' => 0,
+ 'Video-Frequencies'   => 0,
+ 'Sphinx-Search'       => 1,
  'WattsUp-Daemon'      => 1,
 );
 
  'WattsUp-Daemon'      => 1,
 );
 
@@ -193,6 +195,28 @@ sub parse_portage_tree {
      local $@;
      eval { $pcp->latest_distribution($pseudo_dist->dist) };
     };
      local $@;
      eval { $pcp->latest_distribution($pseudo_dist->dist) };
     };
+
+    unless (defined $latest_dist) {
+     print "no\n";
+     p(2, 'is similiar to a module indexed in another distribution of the CPAN... ');
+     (my $mod_name = $pkg_name) =~ s/-/::/g;
+     $latest_dist = do {
+      local $@;
+      eval {
+       my $module = $pcp->package($mod_name);
+       defined $module ? $module->distribution : undef;
+      };
+     };
+     if (defined $latest_dist) {
+      # Re-forge the pseudo dist so that it will pick up the correct dist
+      # name when looking for a mismatch.
+      $pseudo_dist = CPAN::DistnameInfo->new(
+       $latest_dist->dist . '-' . $pseudo_dist->version
+                          . '.' . $pseudo_dist->extension
+      );
+     }
+    }
+
     my ($latest_file, $latest_author);
     if (defined $latest_dist) {
      $latest_file   = $latest_dist->filename;
     my ($latest_file, $latest_author);
     if (defined $latest_dist) {
      $latest_file   = $latest_dist->filename;