@@ -150,10 +150,10 @@ sub preflight_check {
150
150
}
151
151
152
152
sub scan_files {
153
- my ($files , $omit ) = @_ ;
153
+ my ($files , $omit , %extra_args ) = @_ ;
154
154
my $combined = CPAN::Meta::Requirements-> new;
155
155
require Perl::PrereqScanner;
156
- my $scanner = Perl::PrereqScanner-> new;
156
+ my $scanner = Perl::PrereqScanner-> new(\ %extra_args ) ;
157
157
for my $file (@{$files }) {
158
158
my $prereqs = $scanner -> scan_file($file );
159
159
$combined -> add_requirements($prereqs );
@@ -164,19 +164,30 @@ sub scan_files {
164
164
165
165
sub _scan_prereqs {
166
166
my ($omit , %opts ) = @_ ;
167
- my (@runtime_files , @test_files );
167
+ my (@runtime_files , @test_files , @planner_files );
168
168
File::Find::find(sub { push @runtime_files , $File::Find::name if -f && / \. pm$ / }, ' lib' ) if -d ' lib' ;
169
169
File::Find::find(sub { push @runtime_files , $File::Find::name if -f }, ' script' ) if -d ' script' ;
170
170
File::Find::find(sub { push @test_files , $File::Find::name if -f && / \. (t|pm)$ / }, ' t' ) if -d ' t' ;
171
171
172
172
my $runtime = scan_files(\@runtime_files , $omit );
173
173
my $test = scan_files(\@test_files , $omit );
174
174
175
- my $prereqs = CPAN::Meta::Prereqs-> new({
176
- runtime => { requires => $runtime -> as_string_hash },
177
- test => { requires => $test -> as_string_hash },
178
- configure => { requires => { ' Module::Build::Tiny' => mbt_version() } },
179
- });
175
+ my %prereqs = (
176
+ runtime => { requires => $runtime -> as_string_hash },
177
+ test => { requires => $test -> as_string_hash },
178
+ );
179
+
180
+ if (-d ' planner' ) {
181
+ File::Find::find(sub { push @planner_files , $File::Find::name if -f && / \. pl$ / }, ' planner' );
182
+ require Perl::PrereqScanner::Scanner::DistBuild;
183
+ my $configure = scan_files(\@planner_files , [' strict' , ' warnings' , @{$omit }], extra_scanners => [ ' DistBuild' ]);
184
+ $configure -> add_minimum(' Dist::Build' => ' 0.003' );
185
+ $prereqs {configure } = { requires => $configure -> as_string_hash };
186
+ } else {
187
+ $prereqs {configure } = { requires => { ' Module::Build::Tiny' => mbt_version() } };
188
+ }
189
+
190
+ my $prereqs = CPAN::Meta::Prereqs-> new(\%prereqs );
180
191
require CPAN::Meta::Prereqs::Filter;
181
192
return CPAN::Meta::Prereqs::Filter::filter_prereqs($prereqs , %opts );
182
193
}
@@ -232,13 +243,19 @@ sub new {
232
243
my $license = detect_license($pod_data , $filename , \@authors , $mergedata );
233
244
234
245
my $load_meta = !%{ $opts {regenerate } // {} } && uptodate(' META.json' , ' cpanfile' , ' prereqs.json' , ' prereqs.yml' , $mergefile );
246
+
247
+ my $mode = -d ' planner' ? ' DB' : ' MBT' ;
235
248
my $meta = $load_meta ? CPAN::Meta-> load_file(' META.json' , { lazy_validation => 0 }) : do {
236
249
my ($abstract ) = ($pod_data -> pod(' NAME' ) // ' ' ) =~ / \A \s + \S + \s ? - \s ? (.+?) \s * \z /x or warn " Could not parse abstract from `=head1 NAME` in $filename " ;
237
250
my $version = $data -> version($data -> name) // die " Cannot parse \$ VERSION from $filename " ;
238
251
239
252
my $provides = Module::Metadata-> provides(version => 2, dir => ' lib' );
240
253
my $prereqs = load_prereqs($provides , %opts );
241
- $prereqs -> {configure }{requires }{' Module::Build::Tiny' } //= mbt_version();
254
+ if ($mode eq ' MBT' ) {
255
+ $prereqs -> {configure }{requires }{' Module::Build::Tiny' } //= mbt_version();
256
+ } else {
257
+ $prereqs -> {configure }{requires }{' Dist::Build' } //= ' 0.003' ;
258
+ }
242
259
$prereqs -> {develop }{requires }{' App::ModuleBuildTiny' } //= $VERSION ;
243
260
my %resources = $class -> generate_resources(%opts );
244
261
@@ -299,9 +316,15 @@ sub new {
299
316
300
317
my $dist_name = $meta -> name;
301
318
$files {' Build.PL' } //= do {
302
- my $minimum_mbt = prereqs_for($meta , qw/ configure requires Module::Build::Tiny/ );
303
319
my $minimum_perl = prereqs_for($meta , qw/ runtime requires perl 5.008/ );
304
- " # This Build.PL for $dist_name was generated by mbtiny $VERSION .\n use $minimum_perl ;\n use Module::Build::Tiny $minimum_mbt ;\n Build_PL();\n " ;
320
+ my $header = " # This Build.PL for $dist_name was generated by mbtiny $VERSION ." ;
321
+ if ($mode eq ' MBT' ) {
322
+ my $minimum_mbt = prereqs_for($meta , qw/ configure requires Module::Build::Tiny/ );
323
+ " $header \n use $minimum_perl ;\n use Module::Build::Tiny $minimum_mbt ;\n Build_PL();\n " ;
324
+ } else {
325
+ my $minimum_db = prereqs_for($meta , qw/ configure requires Dist::Build/ );
326
+ " $header \n use $minimum_perl ;\n use Dist::Build $minimum_db ;\n Build_PL(\\\@ ARGV, \\\% ENV);\n " ;
327
+ }
305
328
};
306
329
$files {' META.json' } //= $meta -> as_string;
307
330
$files {' META.yml' } //= $meta -> as_string({ version => 1.4 });
0 commit comments