File Coverage

blib/lib/Dist/Zilla/Plugin/Web/PkgVersion.pm
Criterion Covered Total %
statement 24 24 100.0
branch 3 4 75.0
condition 2 2 100.0
subroutine 5 5 100.0
pod 0 1 0.0
total 34 36 94.4


line stmt bran cond sub pod time code
1             package Dist::Zilla::Plugin::Web::PkgVersion;
2             $Dist::Zilla::Plugin::Web::PkgVersion::VERSION = '0.0.10';
3             # ABSTRACT: Embedd module version to sources
4              
5 1     1   614723 use Moose;
  1         2  
  1         6  
6              
7 1     1   4131 use Path::Class;
  1         1  
  1         254  
8              
9             with 'Dist::Zilla::Role::FileMunger';
10             with 'Dist::Zilla::Plugin::Web::Role::FileMatcher';
11              
12              
13              
14             sub munge_files {
15 2     2 0 82077 my ($self) = @_;
16            
17             $self->for_each_matched_file(sub {
18 3     3   4 my ($file) = @_;
19              
20 3         10 my $content = $file->content;
21 3         1655 my $content_copy = $content;
22            
23 3         8 pos $content = 0;
24            
25            
26 3         30 while ($content =~ m!
27             ( (\s*) /\* VERSION (?'comma',)? \*/)
28             !msxg) {
29            
30 3         5 my $overall = $1;
31 3         7 my $overall_quoted = quotemeta $overall;
32            
33 3   100     11 my $comma = $3 || '';
34 3         4 my $whitespace = $2;
35            
36 3         66 my $version = $self->zilla->version;
37            
38 3 100       86 $version = "'$version'" if $version !~ m/^\d+(\.\d+)?$/;
39            
40 3         49 $content_copy =~ s!$overall_quoted!${whitespace}/*PKGVERSION*/VERSION : ${version}${comma}!;
41             }
42            
43 3 50       15 $file->content($content_copy) if $content_copy ne $content;
44 2         21 });
45             }
46              
47              
48 1     1   4 no Moose;
  1         1  
  1         5  
49             __PACKAGE__->meta->make_immutable();
50              
51              
52             1;
53              
54             __END__
55              
56             =pod
57              
58             =encoding UTF-8
59              
60             =head1 NAME
61              
62             Dist::Zilla::Plugin::Web::PkgVersion - Embedd module version to sources
63              
64             =head1 VERSION
65              
66             version 0.0.10
67              
68             =head1 SYNOPSIS
69              
70             In your F<dist.ini>:
71              
72             [Web::PkgVersion]
73             file_match = ^lib/.*\.js$ ; default, regex for file names to process
74             file_match = ^lib/.*\.css$ ; allow several values
75             excelude_match = ^lib/special.css$ ; default, regex for file names to exclude
76             ; from processing
77             excelude_match = ^lib/donotinclude.css$ ; allow several values
78              
79             In your sources:
80              
81             Class('Digest.MD5', {
82            
83             /*VERSION,*/
84            
85             has : {
86             ...
87             }
88             })
89            
90             Class('Digest.MD5', {
91             /*VERSION*/
92             })
93              
94             will become after build:
95              
96             Class('Digest.MD5', {
97            
98             VERSION : 0.01,
99            
100             has : {
101             ...
102             }
103             })
104            
105             Class('Digest.MD5', {
106             VERSION : 0.01
107             })
108              
109             =head1 DESCRIPTION
110              
111             This plugin will process the files in your distribution, matching any of the "file_match" regular expressions.
112             Files matching any of the "excelude_match" regular expression will not be processed.
113              
114             Processing will mean the following: this plugin will replace the
115              
116             /*VERSION*/
117             /*VERSION,*/
118              
119             placeholders with the distribution version.
120              
121             =head1 AUTHOR
122              
123             Nickolay Platonov <nplatonov@cpan.org>
124              
125             =head1 COPYRIGHT AND LICENSE
126              
127             This software is copyright (c) 2015 by Nickolay Platonov.
128              
129             This is free software; you can redistribute it and/or modify it under
130             the same terms as the Perl 5 programming language system itself.
131              
132             =cut