App-CPANMetaUtils
view release on metacpan or search on metacpan
script/gen-cpan-meta view on Meta::CPAN
summary => 'Generate CPAN META for a distribution',
description => <<'_',
NOTE: EARLY VERSION.
This utility assumes it is run in the top-level directory of a Perl distribution
and will try to generate a CPAN META structure for the distribution. For
example: `abstract` will be searched from POD, `name` from the shortest package
name, `version` from the main module, `prereqs` using <pm:App::ScanPrereqs> and
so on. Finally it will validate its generated META.json first before outputing
it, printing found errors to stderr.
This utility can be used to generate (at least the preliminary version of)
`META.json` for Perl distributions that do not yet have `META.json`. It is
usually not useful for distributions that use a distribution builder tool like
<pm:Dist::Zilla>, because in that case the tool will generate `META.json` for
you.
_
args => {
dir => {
script/gen-cpan-meta view on Meta::CPAN
=head1 DESCRIPTION
NOTE: EARLY VERSION.
This utility assumes it is run in the top-level directory of a Perl distribution
and will try to generate a CPAN META structure for the distribution. For
example: C<abstract> will be searched from POD, C<name> from the shortest package
name, C<version> from the main module, C<prereqs> using L<App::ScanPrereqs> and
so on. Finally it will validate its generated META.json first before outputing
it, printing found errors to stderr.
This utility can be used to generate (at least the preliminary version of)
C<META.json> for Perl distributions that do not yet have C<META.json>. It is
usually not useful for distributions that use a distribution builder tool like
L<Dist::Zilla>, because in that case the tool will generate C<META.json> for
you.
=head1 OPTIONS
C<*> marks required options.
t/00-compile.t view on Meta::CPAN
use File::Spec;
use IPC::Open3;
use IO::Handle;
open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
my @warnings;
for my $lib (@module_files)
{
# see L<perlfaq8/How can I capture STDERR from an external command?>
my $stderr = IO::Handle->new;
diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} }
$^X, @switches, '-e', "require q[$lib]"))
if $ENV{PERL_COMPILE_TEST_DEBUG};
my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]");
binmode $stderr, ':crlf' if $^O eq 'MSWin32';
my @_warnings = <$stderr>;
waitpid($pid, 0);
is($?, 0, "$lib loaded ok");
shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/
and not eval { +require blib; blib->VERSION('1.01') };
if (@_warnings)
{
warn @_warnings;
push @warnings, @_warnings;
t/00-compile.t view on Meta::CPAN
{ SKIP: {
open my $fh, '<', $file or warn("Unable to open $file: $!"), next;
my $line = <$fh>;
close $fh and skip("$file isn't perl", 1) unless $line =~ /^#!\s*(?:\S*perl\S*)((?:\s+-\w*)*)(?:\s*#.*)?$/;
@switches = (@switches, split(' ', $1)) if $1;
close $fh and skip("$file uses -T; not testable with PERL5LIB", 1)
if grep { $_ eq '-T' } @switches and $ENV{PERL5LIB};
my $stderr = IO::Handle->new;
diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} }
$^X, @switches, '-c', $file))
if $ENV{PERL_COMPILE_TEST_DEBUG};
my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-c', $file);
binmode $stderr, ':crlf' if $^O eq 'MSWin32';
my @_warnings = <$stderr>;
waitpid($pid, 0);
is($?, 0, "$file compiled ok");
shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/
and not eval { +require blib; blib->VERSION('1.01') };
# in older perls, -c output is simply the file portion of the path being tested
if (@_warnings = grep { !/\bsyntax OK$/ }
grep { chomp; $_ ne (File::Spec->splitpath($file))[2] } @_warnings)
{
( run in 1.067 second using v1.01-cache-2.11-cpan-49f99fa48dc )