File Coverage

blib/lib/CPAN/Test/Dummy/Perl5/cpm/Builder.pm
Criterion Covered Total %
statement 33 65 50.7
branch 0 20 0.0
condition 0 5 0.0
subroutine 11 16 68.7
pod 0 3 0.0
total 44 109 40.3


line stmt bran cond sub pod time code
1             package CPAN::Test::Dummy::Perl5::cpm::Builder;
2 1     1   119012 use strict;
  1         2  
  1         42  
3 1     1   5 use warnings;
  1         3  
  1         67  
4              
5 1     1   585 use CPAN::Meta ();
  1         42707  
  1         33  
6 1     1   617 use ExtUtils::Helpers ();
  1         6946  
  1         34  
7 1     1   610 use ExtUtils::Install ();
  1         17461  
  1         38  
8 1     1   610 use ExtUtils::InstallPaths ();
  1         5599  
  1         33  
9 1     1   8 use File::Copy ();
  1         2  
  1         16  
10 1     1   10 use File::Find ();
  1         3  
  1         14  
11 1     1   4 use File::Spec ();
  1         3  
  1         13  
12 1     1   929 use Getopt::Long ();
  1         14891  
  1         47  
13 1     1   852 use JSON::PP ();
  1         20862  
  1         720  
14              
15             our $VERSION = '2.1';
16              
17             my $BUILD_TEMPLATE = <<'TEMPLATE';
18             #!perl
19             use strict;
20             use warnings;
21             use CPAN::Test::Dummy::Perl5::cpm::Builder;
22             use JSON::PP ();
23              
24             CPAN::Test::Dummy::Perl5::cpm::Builder::function_that_only_exists_in_v2();
25              
26             my $config_argv = JSON::PP->new->utf8->decode(<<'EOF');
27             %s
28             EOF
29             CPAN::Test::Dummy::Perl5::cpm::Builder::Build($config_argv, @ARGV);
30             TEMPLATE
31              
32       0 0   sub function_that_only_exists_in_v2 {
33             }
34              
35             sub Build_PL {
36 0 0   0 0   if ($ENV{PERL_MB_OPT}) {
37 0           push @ARGV, ExtUtils::Helpers::split_like_shell($ENV{PERL_MB_OPT});
38             }
39 0 0         Getopt::Long::GetOptions 'install_base=s' => \my $install_base, 'config=s@' => \my @config or die;
40 0           my $config_argv = JSON::PP->new->canonical->encode({ install_base => $install_base, config => \@config });
41 0 0         open my $fh, ">", "Build" or die;
42 0           printf {$fh} $BUILD_TEMPLATE, $config_argv;
  0            
43 0           close $fh;
44 0           ExtUtils::Helpers::make_executable("Build");
45 0 0         File::Copy::copy("META.json", "MYMETA.json") or die;
46             }
47              
48             sub Build {
49 0     0 0   my $config_argv = shift;
50 0   0       my $action = shift || "build";
51              
52 0 0         if ($action eq "build") {
    0          
    0          
53 0           my @lib = _find( qr/\.pm$/, "lib");
54 0           my @script = _find( qr/(?:)/, "bin", "script" );
55 0           ExtUtils::Install::pm_to_blib( { map { ($_, File::Spec->catfile("blib", $_)) } @lib, @script } );
  0            
56 0           ExtUtils::Helpers::make_executable($_) for map { File::Spec->catfile("blib", $_) } @script;
  0            
57             } elsif ($action eq "test") {
58             # noop
59             } elsif ($action eq "install") {
60 0           my $meta = CPAN::Meta->load_file("META.json");
61             my $paths = ExtUtils::InstallPaths->new(
62             dist_name => $meta->name,
63 0 0         $config_argv->{install_base} ? (install_base => $config_argv->{install_base}) : (),
64             );
65 0           ExtUtils::Install::install( $paths->install_map );
66             } else {
67 0           die "unknown action: $action\n";
68             }
69             }
70              
71             sub _find {
72 0     0     my $regexp = shift;
73 0           my @dir = grep { -d $_ } @_;
  0            
74 0 0         return if !@dir;
75 0 0 0 0     my @file; my $wanted = sub { push @file, $_ if -f $_ && $_ =~ /$regexp/ };
  0            
  0            
76 0           File::Find::find( { wanted => $wanted, no_chdir => 1 }, @dir );
77 0           return @file;
78             }
79              
80             1;
81             __END__