This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
davem's perldelta entries for 5.25.9 so far
[perl5.git] / dist / Module-CoreList / corelist
index 36b74c2..9f3d335 100644 (file)
@@ -10,12 +10,13 @@ See L<Module::CoreList> for one.
 
 =head1 SYNOPSIS
 
-    corelist -v
-    corelist [-a|-d] <ModuleName> | /<ModuleRegex>/ [<ModuleVersion>] ...
-    corelist [-v <PerlVersion>] [ <ModuleName> | /<ModuleRegex>/ ] ...
-    corelist [-r <PerlVersion>] ...
-    corelist --feature <FeatureName> [<FeatureName>] ...
-    corelist --diff PerlVersion PerlVersion
+   corelist -v
+   corelist [-a|-d] <ModuleName> | /<ModuleRegex>/ [<ModuleVersion>] ...
+   corelist [-v <PerlVersion>] [ <ModuleName> | /<ModuleRegex>/ ] ...
+   corelist [-r <PerlVersion>] ...
+   corelist --feature <FeatureName> [<FeatureName>] ...
+   corelist --diff PerlVersion PerlVersion
+   corelist --upstream <ModuleName>
 
 =head1 OPTIONS
 
@@ -116,6 +117,11 @@ If you pass a perl version you get the release date for that version only.
 
 lists the first version bundle of each named feature given
 
+=item --upstream, -u
+
+Shows if the given module is primarily maintained in perl core or on CPAN
+and bug tracker URL.
+
 =back
 
 As a special case, if you specify the module name C<Unicode>, you'll get
@@ -124,8 +130,9 @@ requested perl versions.
 
 =cut
 
+BEGIN { pop @INC if $INC[-1] eq '.' }
 use Module::CoreList;
-use Getopt::Long;
+use Getopt::Long qw(:config no_ignore_case);
 use Pod::Usage;
 use strict;
 use warnings;
@@ -135,7 +142,7 @@ my %Opts;
 
 GetOptions(
     \%Opts,
-    qw[ help|?! man! r|release:s v|version:s a! d diff|D feature|f ]
+    qw[ help|?! man! r|release:s v|version:s a! d diff|D feature|f u|upstream ]
 );
 
 pod2usage(1) if $Opts{help};
@@ -146,7 +153,7 @@ if(exists $Opts{r} ){
         print "\nModule::CoreList has release info for the following perl versions:\n";
         my $versions = { };
         my $max_ver_len = max_mod_len(\%Module::CoreList::released);
-        for my $ver ( sort keys %Module::CoreList::released ) {
+        for my $ver ( grep !/0[01]0$/, sort keys %Module::CoreList::released ) {
           printf "%-${max_ver_len}s    %s\n", format_perl_version($ver), $Module::CoreList::released{$ver};
         }
         print "\n";
@@ -168,7 +175,7 @@ if(exists $Opts{r} ){
 if(exists $Opts{v} ){
     if( !$Opts{v} ) {
         print "\nModule::CoreList has info on the following perl versions:\n";
-        print format_perl_version($_)."\n" for sort keys %Module::CoreList::version;
+        print format_perl_version($_)."\n" for grep !/0[01]0$/, sort keys %Module::CoreList::version;
         print "\n";
         exit 0;
     }
@@ -221,6 +228,9 @@ if ($Opts{diff}) {
 }
 
 if ($Opts{feature}) {
+    die "\n--feature is only available with perl v5.16.0 or greater\n"
+      if $] < 5.016;
+
     die "\nprovide at least one feature name to --feature\n"
         unless @ARGV;
 
@@ -330,7 +340,7 @@ sub module_version {
         $msg .= " was ";
         $msg .= "first " unless $ver;
         $msg .= "released with perl " . format_perl_version($ret);
-        $msg .= ( $rem ? ',' : ' and' ) . " deprecated in " . format_perl_version($deprecated) if $deprecated;
+        $msg .= ( $rem ? ',' : ' and' ) . " deprecated (will be CPAN-only) in " . format_perl_version($deprecated) if $deprecated;
         $msg .= " and removed from " . format_perl_version($rem) if $rem;
     } else {
         $msg .= " was not in CORE (or so I think)";
@@ -338,6 +348,17 @@ sub module_version {
 
     print $msg,"\n";
 
+    if( defined $ret and exists $Opts{u} ) {
+        my $upstream = $Module::CoreList::upstream{$mod};
+        $upstream = 'undef' unless $upstream;
+        print "upstream: $upstream\n";
+        if ( $upstream ne 'blead' ) {
+            my $bugtracker = $Module::CoreList::bug_tracker{$mod};
+            $bugtracker = 'unknown' unless $bugtracker;
+            print "bug tracker: $bugtracker\n";
+        }
+    }
+
     if(defined $ret and exists $Opts{a} and $Opts{a}){
         display_a($mod);
     }
@@ -363,7 +384,7 @@ sub max {
 sub display_a {
     my $mod = shift;
 
-    for my $v (grep !/000$/, sort keys %Module::CoreList::version ) {
+    for my $v (grep !/0[01]0$/, sort keys %Module::CoreList::version ) {
         next unless exists $Module::CoreList::version{$v}{$mod};
 
         my $mod_v = $Module::CoreList::version{$v}{$mod} || 'undef';