File Coverage

blib/lib/App/merge_cpanfile.pm
Criterion Covered Total %
statement 14 27 51.8
branch n/a
condition n/a
subroutine 5 8 62.5
pod 0 3 0.0
total 19 38 50.0


line stmt bran cond sub pod time code
1             package App::merge_cpanfile;
2 1     1   459 use 5.008001;
  1         2  
3 1     1   3 use strict;
  1         1  
  1         17  
4 1     1   8 use warnings;
  1         1  
  1         22  
5              
6 1     1   398 use Module::CPANfile;
  1         10593  
  1         24  
7 1     1   5 use CPAN::Meta::Prereqs;
  1         1  
  1         157  
8              
9             our $VERSION = "0.01";
10              
11             sub run {
12 0     0 0   my ($self, @argv) = @_;
13 0           my ($dest, $src) = @argv;
14              
15 0           my $dest_cpanfile = Module::CPANfile->load($dest);
16 0           my $src_cpanfile = Module::CPANfile->load($src);
17              
18 0           my $merged_cpanfile = $self->merge_cpanfiles(
19             $src_cpanfile,
20             $dest_cpanfile,
21             'runtime',
22             'requires',
23             );
24              
25 0           print $merged_cpanfile->to_string;
26             }
27              
28             sub merge_cpanfiles {
29 0     0 0   my ($self, $src, $dest, $phase, $type) = @_;
30              
31 0           my $merged_prereqs = $dest->prereqs->with_merged_prereqs(
32             $self->extract_prereqs_for($src->prereqs, $phase, $type)
33             );
34              
35 0           return Module::CPANfile->from_prereqs($merged_prereqs->as_string_hash);
36             }
37              
38             sub extract_prereqs_for {
39 0     0 0   my ($self, $prereqs, $phase, $type) = @_;
40 0           my $reqs = $prereqs->requirements_for($phase, $type);
41 0           my $new_prereqs = CPAN::Meta::Prereqs->new({
42             $phase => { $type => $reqs->as_string_hash }
43             });
44 0           return $new_prereqs;
45             }
46              
47             1;
48             __END__