|
Packit |
e6feea |
#!perl
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
use strict;
|
|
Packit |
e6feea |
use warnings;
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
use Test::More tests => 1;
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
use ExtUtils::MakeMaker;
|
|
Packit |
e6feea |
use File::Spec::Functions;
|
|
Packit |
e6feea |
use List::Util qw/max/;
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
my @modules = qw(
|
|
Packit |
e6feea |
Capture::Tiny
|
|
Packit |
e6feea |
Carp
|
|
Packit |
e6feea |
Cwd
|
|
Packit |
e6feea |
ExtUtils::MakeMaker
|
|
Packit |
e6feea |
File::Spec
|
|
Packit |
e6feea |
File::Spec::Functions
|
|
Packit |
e6feea |
File::Temp
|
|
Packit |
e6feea |
IO::Handle
|
|
Packit |
e6feea |
IPC::Open3
|
|
Packit |
e6feea |
List::Util
|
|
Packit |
e6feea |
Test::More
|
|
Packit |
e6feea |
constant
|
|
Packit |
e6feea |
lib
|
|
Packit |
e6feea |
perl
|
|
Packit |
e6feea |
strict
|
|
Packit |
e6feea |
warnings
|
|
Packit |
e6feea |
);
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
# replace modules with dynamic results from MYMETA.json if we can
|
|
Packit |
e6feea |
# (hide CPAN::Meta from prereq scanner)
|
|
Packit |
e6feea |
my $cpan_meta = "CPAN::Meta";
|
|
Packit |
e6feea |
if ( -f "MYMETA.json" && eval "require $cpan_meta" ) { ## no critic
|
|
Packit |
e6feea |
if ( my $meta = eval { CPAN::Meta->load_file("MYMETA.json") } ) {
|
|
Packit |
e6feea |
my $prereqs = $meta->prereqs;
|
|
Packit |
e6feea |
delete $prereqs->{develop};
|
|
Packit |
e6feea |
my %uniq = map {$_ => 1} map { keys %$_ } map { values %$_ } values %$prereqs;
|
|
Packit |
e6feea |
$uniq{$_} = 1 for @modules; # don't lose any static ones
|
|
Packit |
e6feea |
@modules = sort keys %uniq;
|
|
Packit |
e6feea |
}
|
|
Packit |
e6feea |
}
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
my @reports = [qw/Version Module/];
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
for my $mod ( @modules ) {
|
|
Packit |
e6feea |
next if $mod eq 'perl';
|
|
Packit |
e6feea |
my $file = $mod;
|
|
Packit |
e6feea |
$file =~ s{::}{/}g;
|
|
Packit |
e6feea |
$file .= ".pm";
|
|
Packit |
e6feea |
my ($prefix) = grep { -e catfile($_, $file) } @INC;
|
|
Packit |
e6feea |
if ( $prefix ) {
|
|
Packit |
e6feea |
my $ver = MM->parse_version( catfile($prefix, $file) );
|
|
Packit |
e6feea |
$ver = "undef" unless defined $ver; # Newer MM should do this anyway
|
|
Packit |
e6feea |
push @reports, [$ver, $mod];
|
|
Packit |
e6feea |
}
|
|
Packit |
e6feea |
else {
|
|
Packit |
e6feea |
push @reports, ["missing", $mod];
|
|
Packit |
e6feea |
}
|
|
Packit |
e6feea |
}
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
if ( @reports ) {
|
|
Packit |
e6feea |
my $vl = max map { length $_->[0] } @reports;
|
|
Packit |
e6feea |
my $ml = max map { length $_->[1] } @reports;
|
|
Packit |
e6feea |
splice @reports, 1, 0, ["-" x $vl, "-" x $ml];
|
|
Packit |
e6feea |
diag "Prerequisite Report:\n", map {sprintf(" %*s %*s\n",$vl,$_->[0],-$ml,$_->[1])} @reports;
|
|
Packit |
e6feea |
}
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
pass;
|
|
Packit |
e6feea |
|
|
Packit |
e6feea |
# vim: ts=2 sts=2 sw=2 et:
|