@@ -4,65 +4,9 @@
# =========================================================================
use 5.008_001;
-
use strict;
-use warnings;
-use utf8;
-
-use Module::Build;
-use File::Basename;
-use File::Spec;
-use CPAN::Meta;
-use CPAN::Meta::Prereqs;
-
-my %args = (
- license => 'perl',
- dynamic_config => 0,
-
- configure_requires => {
- 'Module::Build' => 0.38,
- },
-
- name => 'App-scan_prereqs_cpanfile',
- module_name => 'App::scan_prereqs_cpanfile',
- allow_pureperl => 0,
-
- script_files => [glob('script/*'), glob('bin/*')],
- test_files => ((-d '.git' || $ENV{RELEASE_TESTING}) && -d 'xt') ? 't/ xt/' : 't/',
- recursive_test_files => 1,
-);
-if (-d 'share') {
- $args{share_dir} = 'share';
-}
+use Module::Build::Tiny 0.035;
-my $builder = Module::Build->subclass(
- class => 'MyBuilder',
- code => q{
- sub ACTION_distmeta {
- die "Do not run distmeta. Install Minilla and `minil install` instead.\n";
- }
- sub ACTION_installdeps {
- die "Do not run installdeps. Run `cpanm --installdeps .` instead.\n";
- }
- }
-)->new(%args);
-$builder->create_build_script();
+Build_PL();
-my $mbmeta = CPAN::Meta->load_file('MYMETA.json');
-my $meta = CPAN::Meta->load_file('META.json');
-my $prereqs_hash = CPAN::Meta::Prereqs->new(
- $meta->prereqs
-)->with_merged_prereqs(
- CPAN::Meta::Prereqs->new($mbmeta->prereqs)
-)->as_string_hash;
-my $mymeta = CPAN::Meta->new(
- {
- %{$meta->as_struct},
- prereqs => $prereqs_hash
- }
-);
-print "Merging cpanfile prereqs to MYMETA.yml\n";
-$mymeta->save('MYMETA.yml', { version => 1.4 });
-print "Merging cpanfile prereqs to MYMETA.json\n";
-$mymeta->save('MYMETA.json', { version => 2 });
@@ -1,5 +1,32 @@
Revision history for Perl extension App-scan_prereqs_cpanfile
+1.02 2014-07-16T06:47:07Z
+
+ - Added experimental --scan-test-requires option.
+ (songmu)
+
+1.01 2014-05-02T01:33:31Z
+
+ - ignore ./.build/
+
+1.00 2014-04-02T22:49:36Z
+
+ - Make Perl::PrereqScanner::Lite as the default scanner.
+ (moznion)
+
+0.10 2014-03-21T10:14:20Z
+
+ - --fast option
+ (moznion)
+
+0.09 2014-02-26T05:45:47Z
+
+ commit 8b855a107aedf0248fc7b6e42f7a981e3ec0f340
+ Author: HIROSE Masaaki <hirose31@gmail.com>
+ Date: Wed Feb 26 14:37:58 2014 +0900
+
+ Treat t/(author|release)-*.t as develop files
+
0.08 2013-06-17T06:28:03Z
- Do not use /usr/bin/env
@@ -5,6 +5,7 @@ META.json
README.md
cpanfile
lib/App/scan_prereqs_cpanfile.pm
+minil.toml
script/scan-prereqs-cpanfile
t/00_compile.t
META.yml
@@ -4,8 +4,10 @@
"tokuhirom <tokuhirom@gmail.com>"
],
"dynamic_config" : 0,
- "generated_by" : "Minilla/v0.5.3",
- "license" : "perl_5",
+ "generated_by" : "Minilla/v2.1.0",
+ "license" : [
+ "perl_5"
+ ],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
"version" : "2"
@@ -19,26 +21,29 @@
"share",
"eg",
"examples",
- "author"
+ "author",
+ "builder"
]
},
"prereqs" : {
"configure" : {
"requires" : {
- "CPAN::Meta" : "0",
- "CPAN::Meta::Prereqs" : "0",
- "Module::Build" : "0.38"
+ "Module::Build::Tiny" : "0.035"
}
},
"develop" : {
"requires" : {
"Test::CPAN::Meta" : "0",
- "Test::MinimumVersion" : "0.10108",
+ "Test::MinimumVersion::Fast" : "0.04",
+ "Test::PAUSE::Permissions" : "0.04",
"Test::Pod" : "1.41",
"Test::Spellunker" : "v0.2.7"
}
},
"runtime" : {
+ "recommends" : {
+ "Test::Requires::Scanner" : "0"
+ },
"requires" : {
"CPAN::Meta" : "0",
"CPAN::Meta::Requirements" : "0",
@@ -46,7 +51,7 @@
"Module::CPANfile" : "0.9020",
"Module::CoreList" : "0",
"Module::Metadata" : "0",
- "Perl::PrereqScanner" : "0",
+ "Perl::PrereqScanner::Lite" : "0.15",
"perl" : "5.008005",
"version" : "0"
}
@@ -60,7 +65,7 @@
"provides" : {
"App::scan_prereqs_cpanfile" : {
"file" : "lib/App/scan_prereqs_cpanfile.pm",
- "version" : "0.08"
+ "version" : "1.02"
}
},
"release_status" : "stable",
@@ -74,9 +79,12 @@
"web" : "https://github.com/tokuhirom/App-scan_prereqs_cpanfile"
}
},
- "version" : "0.08",
+ "version" : "1.02",
"x_contributors" : [
"Syohei YOSHIDA <syohex@gmail.com>",
- "Kan Fushihara <kan.fushihara@gmail.com>"
+ "Kan Fushihara <kan.fushihara@gmail.com>",
+ "HIROSE Masaaki <hirose31@gmail.com>",
+ "moznion <moznion@gmail.com>",
+ "Songmu <y.songmu@gmail.com>"
]
}
@@ -3,17 +3,15 @@ abstract: 'Scan prerequisite modules and generate CPANfile'
author:
- 'tokuhirom <tokuhirom@gmail.com>'
build_requires:
- Test::More: 0.98
+ Test::More: '0.98'
configure_requires:
- CPAN::Meta: 0
- CPAN::Meta::Prereqs: 0
- Module::Build: 0.38
+ Module::Build::Tiny: '0.035'
dynamic_config: 0
-generated_by: 'Minilla/v0.5.3, CPAN::Meta::Converter version 2.130880'
+generated_by: 'Minilla/v2.1.0, CPAN::Meta::Converter version 2.141520'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
- version: 1.4
+ version: '1.4'
name: App-scan_prereqs_cpanfile
no_index:
directory:
@@ -24,25 +22,31 @@ no_index:
- eg
- examples
- author
+ - builder
provides:
App::scan_prereqs_cpanfile:
file: lib/App/scan_prereqs_cpanfile.pm
- version: 0.08
+ version: '1.02'
+recommends:
+ Test::Requires::Scanner: '0'
requires:
- CPAN::Meta: 0
- CPAN::Meta::Requirements: 0
- Getopt::Long: 0
- Module::CPANfile: 0.9020
- Module::CoreList: 0
- Module::Metadata: 0
- Perl::PrereqScanner: 0
- perl: 5.008005
- version: 0
+ CPAN::Meta: '0'
+ CPAN::Meta::Requirements: '0'
+ Getopt::Long: '0'
+ Module::CPANfile: '0.9020'
+ Module::CoreList: '0'
+ Module::Metadata: '0'
+ Perl::PrereqScanner::Lite: '0.15'
+ perl: '5.008005'
+ version: '0'
resources:
bugtracker: https://github.com/tokuhirom/App-scan_prereqs_cpanfile/issues
homepage: https://github.com/tokuhirom/App-scan_prereqs_cpanfile
repository: git://github.com/tokuhirom/App-scan_prereqs_cpanfile.git
-version: 0.08
+version: '1.02'
x_contributors:
- 'Syohei YOSHIDA <syohex@gmail.com>'
- 'Kan Fushihara <kan.fushihara@gmail.com>'
+ - 'HIROSE Masaaki <hirose31@gmail.com>'
+ - 'moznion <moznion@gmail.com>'
+ - 'Songmu <y.songmu@gmail.com>'
@@ -4,7 +4,7 @@ App::scan\_prereqs\_cpanfile - Scan prerequisite modules and generate CPANfile
# DESCRIPTION
-Please look [scan-prereqs-cpanfile](http://search.cpan.org/perldoc?scan-prereqs-cpanfile).
+Please look [scan-prereqs-cpanfile](https://metacpan.org/pod/scan-prereqs-cpanfile).
# LICENSE
@@ -4,9 +4,11 @@ requires 'Getopt::Long';
requires 'Module::CPANfile', '0.9020';
requires 'Module::CoreList';
requires 'Module::Metadata';
-requires 'Perl::PrereqScanner';
+requires 'Perl::PrereqScanner::Lite', '0.15';
requires 'version';
+recommends 'Test::Requires::Scanner';
+
on test => sub {
requires 'Test::More', 0.98;
};
@@ -2,7 +2,7 @@ package App::scan_prereqs_cpanfile;
use strict;
use warnings;
use 5.008005;
-our $VERSION = "0.08";
+our $VERSION = "1.02";
@@ -0,0 +1 @@
+module_maker="ModuleBuildTiny"
@@ -6,7 +6,6 @@ use 5.008001;
use version;
use CPAN::Meta;
-use Perl::PrereqScanner;
use Getopt::Long;
use CPAN::Meta::Requirements ();
use File::Find qw(find);
@@ -15,8 +14,9 @@ use Module::CPANfile;
use File::Spec;
use File::Basename ();
use Module::Metadata;
+use Perl::PrereqScanner::Lite;
-our $VERSION = '0.08';
+our $VERSION = '1.02';
sub debugf {
if ($ENV{SCAN_PREREQS_CPANFILE_DEBUG}) {
@@ -33,16 +33,18 @@ sub debugf {
my $version;
my $diff;
my $include_empty;
-my @ignore = qw(eg examples share fatlib _build .git blib local);
+my $scan_test_requires;
+my @ignore = qw(eg examples share fatlib _build .git blib local .build);
my $add_ignore;
my $p = Getopt::Long::Parser->new(
config => [qw(posix_default no_ignore_case auto_help)]
);
$p->getoptions(
'version!' => \$version,
- 'diff=s' => \$diff,
- 'ignore=s' => \$add_ignore,
+ 'diff=s' => \$diff,
+ 'ignore=s' => \$add_ignore,
'include-empty!' => \$include_empty,
+ 'scan-test-requires' => \$scan_test_requires,
);
push @ignore, split /,/,$add_ignore if $add_ignore;
if ($version) {
@@ -71,6 +73,10 @@ sub main {
# develop
my $develop_prereqs = scan($develop_files, \@inner_packages, $meta_prereqs, [qw(develop test runtime)], 'develop', +{ %{$runtime_prereqs||{}}, %{$test_prereqs||{}}});
+ if ($scan_test_requires) {
+ $develop_prereqs = scan_test_requires($develop_prereqs);
+ }
+
print Module::CPANfile->from_prereqs(
{
runtime => {
@@ -131,7 +137,10 @@ sub scan_files {
my $combined = CPAN::Meta::Requirements->new;
for my $file (@files) {
debugf("Reading %s", $file);
- my $prereqs = Perl::PrereqScanner->new->scan_file($file);
+
+ my $scanner = Perl::PrereqScanner::Lite->new;
+ $scanner->add_extra_scanner('Moose');
+ my $prereqs = $scanner->scan_file($file);
$combined->add_requirements($prereqs);
}
my $prereqs = $combined->as_string_hash;
@@ -216,7 +225,12 @@ sub find_perl_files {
push @configure_files, $_
} elsif ($topdir eq 't') {
if (/\.(pl|pm|psgi|t)$/) {
- push @test_files, $_
+ if ($basename =~ /^(?:author|release)-/) {
+ # dzil creates author test files to t/author-XXX.t
+ push @develop_files, $_
+ } else {
+ push @test_files, $_
+ }
}
} elsif ($topdir eq 'xt' || $topdir eq 'author' || $topdir eq 'benchmark') {
if (/\.(pl|pm|psgi|t)$/) {
@@ -245,6 +259,42 @@ sub find_perl_files {
return (\@runtime_files, \@test_files, \@configure_files, \@develop_files);
}
+sub scan_test_requires {
+ my $develop_prereqs = shift;
+
+ require Test::Requires::Scanner;
+
+ my @test_files;
+ find(
+ {
+ no_chdir => 1,
+ wanted => sub {
+ return if $_ eq '.';
+ return if -S $_; # Ignore UNIX socket
+
+ my (undef, $topdir, ) = File::Spec->splitdir($_);
+ if (($topdir eq 'xt' || $topdir eq 't') && /\.t$/ ) {
+ push @test_files, $_
+ }
+ },
+ },
+ '.'
+ );
+ my $test_requires_prereqs = Test::Requires::Scanner->scan_files(@test_files);
+
+ for my $module (keys %$test_requires_prereqs) {
+ my $version = $test_requires_prereqs->{$module};
+
+ if (! exists $develop_prereqs->{$module} ||
+ parse_version($version) > parse_version($develop_prereqs->{$module})
+ ) {
+ $develop_prereqs->{$module} = $version || 0;
+ }
+ }
+
+ return $develop_prereqs;
+}
+
__END__
=head1 NAME
@@ -301,11 +351,15 @@ Ignore some directories.
By default, phases without any prereqs are not dumped, By giving this option, cpanfile will have an empty block such as:
on test => sub {
-
+
};
Defaults to false.
+=item --scan-test-requires (EXPERIMENTAL)
+
+Scan test files and include the modules specified by L<Test::Requires> as 'develop' requires.
+
=back
=head1 AUTHOR
@@ -314,5 +368,5 @@ Tokuhiro Matsuno
=head1 SEE ALSO
-L<Module::CPANfile>, L<Perl::PrereqScanner>
+L<Module::CPANfile>, L<Perl::PrereqScanner::Lite>