File Coverage

lib/Dist/Zilla/PluginBundle/Author/JMASLAK.pm
Criterion Covered Total %
statement 128 215 59.5
branch 0 24 0.0
condition n/a
subroutine 43 53 81.1
pod 0 1 0.0
total 171 293 58.3


line stmt bran cond sub pod time code
1             #!/usr/bin/perl
2              
3             #
4             # Copyright (C) 2018,2020-2021 Joelle Maslak
5             # All Rights Reserved - See License
6             #
7              
8 1     1   123084 use v5.14;
  1         4  
9 1     1   14 use strict;
  1         2  
  1         22  
10 1     1   9 use warnings;
  1         2  
  1         65  
11              
12             package Dist::Zilla::PluginBundle::Author::JMASLAK;
13             # ABSTRACT: JMASLAK's Plugin Bundle
14             $Dist::Zilla::PluginBundle::Author::JMASLAK::VERSION = '1.231931';
15              
16 1     1   676 use Moose;
  1         563144  
  1         6  
17 1     1   10108 use Dist::Zilla;
  1         1309125  
  1         81  
18              
19             with 'Dist::Zilla::Role::PluginBundle::Easy';
20              
21             # For auto plugins
22             AUTOPLUG: {
23 1     1   779 use Dist::Zilla::Plugin::AutoVersion;
  1         77916  
  1         37  
24 1     1   577 use Dist::Zilla::Plugin::NextRelease;
  1         116052  
  1         43  
25 1     1   550 use Dist::Zilla::Plugin::AutoPrereqs;
  1         300823  
  1         47  
26 1     1   597 use Dist::Zilla::Plugin::ContributorCovenant;
  1         191910  
  1         46  
27 1     1   538 use Dist::Zilla::Plugin::ExecDir;
  1         56571  
  1         38  
28 1     1   516 use Dist::Zilla::Plugin::ExtraTests;
  1         29678  
  1         41  
29 1     1   533 use Dist::Zilla::Plugin::GatherDir;
  1         92683  
  1         56  
30 1     1   793 use Dist::Zilla::Plugin::GenerateFile::FromShareDir;
  1         398515  
  1         59  
31 1     1   767 use Dist::Zilla::Plugin::GitHub::Meta;
  1         203364  
  1         49  
32 1     1   668 use Dist::Zilla::Plugin::License;
  1         35397  
  1         41  
33 1     1   572 use Dist::Zilla::Plugin::ManifestSkip;
  1         33181  
  1         39  
34 1     1   628 use Dist::Zilla::Plugin::MetaJSON;
  1         44092  
  1         37  
35 1     1   617 use Dist::Zilla::Plugin::MetaProvides::Package;
  1         355856  
  1         51  
36 1     1   555 use Dist::Zilla::Plugin::MetaYAML;
  1         35337  
  1         33  
37 1     1   589 use Dist::Zilla::Plugin::PkgVersion;
  1         76065  
  1         46  
38 1     1   608 use Dist::Zilla::Plugin::PodSyntaxTests;
  1         62009  
  1         41  
39 1     1   603 use Dist::Zilla::Plugin::PodWeaver;
  1         1232940  
  1         62  
40 1     1   578 use Dist::Zilla::Plugin::PruneCruft;
  1         52832  
  1         40  
41 1     1   557 use Dist::Zilla::Plugin::ShareDir;
  1         45501  
  1         45  
42 1     1   580 use Dist::Zilla::Plugin::ReadmeAnyFromPod;
  1         109583  
  1         38  
43 1     1   563 use Dist::Zilla::Plugin::Test::ChangesHasContent;
  1         91698  
  1         42  
44 1     1   629 use Dist::Zilla::Plugin::Test::EOL;
  1         89442  
  1         59  
45 1     1   697 use Dist::Zilla::Plugin::Test::Kwalitee;
  1         89389  
  1         40  
46 1     1   636 use Dist::Zilla::Plugin::Test::NoTabs;
  1         84328  
  1         43  
47 1     1   662 use Dist::Zilla::Plugin::Test::ReportPrereqs;
  1         75153  
  1         49  
48 1     1   681 use Dist::Zilla::Plugin::Test::TrailingSpace;
  1         47050  
  1         38  
49 1     1   549 use Dist::Zilla::Plugin::Test::UseAllModules;
  1         29574  
  1         37  
50 1     1   534 use Dist::Zilla::Plugin::Test::Version;
  1         95646  
  1         48  
51              
52 1     1   671 use Dist::Zilla::Plugin::MakeMaker;
  1         180777  
  1         49  
53 1     1   552 use Dist::Zilla::Plugin::Manifest;
  1         102121  
  1         37  
54              
55 1     1   515 use Dist::Zilla::Plugin::CopyFilesFromBuild;
  1         56042  
  1         38  
56 1     1   583 use Dist::Zilla::Plugin::ConfirmRelease;
  1         39335  
  1         43  
57 1     1   606 use Dist::Zilla::Plugin::TestRelease;
  1         30341  
  1         39  
58 1     1   542 use Dist::Zilla::Plugin::UploadToCPAN;
  1         129147  
  1         76  
59              
60 1     1   757 use Dist::Zilla::Plugin::Git::Check;
  1         270008  
  1         48  
61 1     1   524 use Dist::Zilla::Plugin::Git::Commit;
  1         106452  
  1         44  
62 1     1   536 use Dist::Zilla::Plugin::Git::Push;
  1         72416  
  1         37  
63 1     1   488 use Dist::Zilla::Plugin::Git::Tag;
  1         90361  
  1         857  
64             }
65              
66             sub configure {
67 0     0 0   my ($self) = (@_);
68              
69 0           $self->add_plugins( $self->_contributing_plugin() );
70 0           $self->add_plugins( $self->_copy_files_from_build() );
71 0           $self->add_plugins( $self->_covenant_plugin() );
72 0           $self->add_plugins( $self->_mailmap_plugin() );
73 0           $self->add_plugins( $self->_manifestskip_plugin() );
74 0           $self->add_plugins( $self->_todo_plugin() );
75 0           $self->add_plugins( $self->_travis_plugin() );
76              
77 0           $self->add_plugins('AutoVersion');
78 0           $self->add_plugins('NextRelease');
79 0           $self->add_plugins('AutoPrereqs');
80 0           $self->add_plugins('ContributorCovenant');
81 0           $self->add_plugins('ExecDir');
82 0           $self->add_plugins('ExtraTests');
83 0           $self->add_plugins('GatherDir');
84 0           $self->add_plugins('GitHub::Meta');
85 0           $self->add_plugins('License');
86 0           $self->add_plugins('ManifestSkip');
87 0           $self->add_plugins('MetaJSON');
88 0           $self->add_plugins('MetaProvides::Package');
89 0           $self->add_plugins('MetaYAML');
90 0           $self->add_plugins('PkgVersion');
91 0           $self->add_plugins('PodSyntaxTests');
92 0           $self->add_plugins('PodWeaver');
93 0           $self->add_plugins('PruneCruft');
94 0           $self->add_plugins('ShareDir');
95 0           $self->add_plugins( [ 'ReadmeAnyFromPod' => { type => 'pod', filename => 'README.pod' } ] );
96 0           $self->add_plugins('Test::ChangesHasContent');
97 0           $self->add_plugins('Test::EOL');
98 0           $self->add_plugins('Test::Kwalitee');
99 0           $self->add_plugins('Test::NoTabs');
100 0           $self->add_plugins('Test::ReportPrereqs');
101 0           $self->add_plugins(
102             [ 'Test::TrailingSpace' => { filename_regex => '\.($?:ini|pl|pm|t|txt)\z' } ] );
103 0           $self->add_plugins('Test::UseAllModules');
104 0           $self->add_plugins('Test::Version');
105              
106 0           $self->add_plugins('MakeMaker');
107 0           $self->add_plugins('Manifest');
108              
109 0           $self->add_plugins('ConfirmRelease');
110 0           $self->add_plugins('TestRelease');
111 0           $self->add_plugins('UploadToCPAN');
112              
113 0           $self->add_plugins(
114             [ 'Git::Check', => { allow_dirty => [ 'dist.ini', _changes_file(), 'README.pod' ] } ] );
115 0           $self->add_plugins(
116             [ 'Git::Commit', => { allow_dirty => [ 'dist.ini', _changes_file(), 'README.pod' ] } ] );
117 0           $self->add_plugins('Git::Push');
118 0           $self->add_plugins('Git::Tag');
119              
120 0           return;
121             }
122              
123             sub _copy_files_from_build {
124 0     0     my $self = shift;
125              
126 0           my (@files) = ('README.pod');
127              
128 0 0         if ( !-e 'CODE_OF_CONDUCT.md' ) {
129 0           push @files, 'CODE_OF_CONDUCT.md';
130             }
131              
132             return [
133 0           'CopyFilesFromBuild' => {
134             copy => [@files],
135             }
136             ];
137             }
138              
139             sub _changes_file {
140 0 0   0     if ( -f 'Changes' ) { return 'Changes'; }
  0            
141 0 0         if ( -f 'CHANGES' ) { return 'CHANGES'; }
  0            
142 0 0         if ( -f 'ChangeLog' ) { return 'ChangeLog'; }
  0            
143 0 0         if ( -f 'CHANGELOG' ) { return 'CHANGELOG'; }
  0            
144              
145 0           return 'Changes';
146             }
147              
148             sub _changes_plugin {
149 0     0     my $self = shift;
150              
151 0 0         if ( -f _changes_file() ) { return; }
  0            
152              
153             return [
154 0           'GenerateFile::FromShareDir' => 'Generate Changes' => {
155             -dist => ( __PACKAGE__ =~ s/::/-/gr ),
156             -filename => 'Changes',
157             -location => 'root',
158             },
159             ];
160             }
161              
162             # Ruthlessly stolen from DROLSKY
163             sub _contributing_plugin {
164 0     0     my $self = shift;
165              
166 0 0         if ( -f 'CONTRIBUTING' ) { return; }
  0            
167              
168             return [
169 0           'GenerateFile::FromShareDir' => 'Generate CONTRIBUTING' => {
170             -dist => ( __PACKAGE__ =~ s/::/-/gr ),
171             -filename => 'CONTRIBUTING',
172             -location => 'root',
173             },
174             ];
175             }
176              
177             sub _covenant_plugin {
178 0     0     my $self = shift;
179              
180 0 0         if ( -f 'AUTHOR_PLEDGE' ) { return; }
  0            
181              
182             return [
183 0           'GenerateFile::FromShareDir' => 'Generate AUTHOR_PLEDGE' => {
184             -dist => ( __PACKAGE__ =~ s/::/-/gr ),
185             -filename => 'AUTHOR_PLEDGE',
186             -location => 'root',
187             },
188             ];
189             }
190              
191             sub _mailmap_plugin {
192 0     0     my $self = shift;
193              
194 0 0         if ( -f '.mailmap' ) { return; }
  0            
195              
196             return [
197 0           'GenerateFile::FromShareDir' => 'Generate .mailmap' => {
198             -dist => ( __PACKAGE__ =~ s/::/-/gr ),
199             -filename => '.mailmap',
200             -source_filename => 'mailmap',
201             -location => 'root',
202             },
203             ];
204             }
205              
206             sub _manifestskip_plugin {
207 0     0     my $self = shift;
208              
209 0 0         if ( -f 'MANIFEST.SKIP' ) { return; }
  0            
210              
211             return [
212 0           'GenerateFile::FromShareDir' => 'Generate MANIFEST.SKIP' => {
213             -dist => ( __PACKAGE__ =~ s/::/-/gr ),
214             -filename => 'MANIFEST.SKIP',
215             -location => 'root',
216             },
217             ];
218             }
219              
220             sub _travis_plugin {
221 0     0     my $self = shift;
222              
223 0 0         if ( -f '.travis.yml' ) { return; }
  0            
224              
225             return [
226 0           'GenerateFile::FromShareDir' => 'Generate .travis.yml' => {
227             -dist => ( __PACKAGE__ =~ s/::/-/gr ),
228             -filename => '.travis.yml',
229             -source_filename => 'travis.yml',
230             -location => 'root',
231             },
232             ];
233             }
234              
235             sub _todo_plugin {
236 0     0     my $self = shift;
237              
238 0 0         if ( -f 'TODO' ) { return; }
  0            
239              
240             return [
241 0           'GenerateFile::FromShareDir' => 'Generate TODO' => {
242             -dist => ( __PACKAGE__ =~ s/::/-/gr ),
243             -filename => 'TODO',
244             -source_filename => 'TODO',
245             -location => 'root',
246             },
247             ];
248             }
249              
250             __PACKAGE__->meta->make_immutable;
251              
252             1;
253              
254             __END__
255              
256             =pod
257              
258             =encoding UTF-8
259              
260             =head1 NAME
261              
262             Dist::Zilla::PluginBundle::Author::JMASLAK - JMASLAK's Plugin Bundle
263              
264             =head1 VERSION
265              
266             version 1.231931
267              
268             =head1 DESCRIPTION
269              
270             This is Joelle Maslak's plugin bundle, used for her modules. If you're not
271             her, you probably want to create your own plugin module because I may modify
272             this module based on her needs, breaking third party modules that use this.
273              
274             All of the following are in this module as of v1.181840.
275              
276             It is somewhat equivilent to:
277              
278             [AutoVersion]
279             [NextRelease]
280             [AutoPrereqs]
281             [ConfirmRelease]
282             [ContributorCovenant]
283              
284             [CopyFilesFromBuild]
285             copy = 'README.pod'
286              
287             [ExecDir]
288             [ExtraTests]
289             [GatherDir]
290             [GitHub::Meta]
291             [License]
292             [Manifest]
293             [ManifestSkip]
294             [Makemaker]
295             [MetaJSON]
296             [MetaProvides::Package]
297             [MetaYAML]
298             [PkgVersion]
299             [PodSyntaxTests]
300             [PodWeaver]
301             [PruneCruft]
302             [ShareDir]
303              
304             [ReadmeAnyFromPod]
305             type = markdown
306             filename = README.md
307              
308             [Test::ChangesHasContent]
309             [Test::EOL]
310             [Test::Kwalitee]
311             [Test::NoTabs]
312             [Test::ReportPrereqs]
313              
314             [Test::TrailingSpace]
315             filename_regex = '\.($?:ini|pl|pm|t|txt)\z'
316              
317             [Test::UseAllModules]
318             [Test::Version]
319             [TestRelease]
320             [UploadToCPAN]
321              
322             [Git::Check]
323             allow_dirty = dist.ini
324             allow_dirty = Changes
325             allow_dirty = README.pod
326              
327             [Git::Commit]
328             allow_dirty = dist.ini
329             allow_dirty = Changes
330             allow_dirty = README.pod
331              
332             [Git::Push]
333             [Git::Tag]
334              
335             This automatically numbers releases.
336              
337             This creates a C<CODE_OF_CONDUCT.md> from the awesome Contributor Covenant
338             project, a C<Changes> file, a C<CONTRIBUTING> file, a C<TODO> file,
339             a C<MANIFEST_SKIP> file, an C<AUTHOR_PLEDGE> file that indicates CPAN admins
340             can take ownership should the project become abandoned, and a C<.travis.yml>
341             file that will probably need to be edited. If these files exist already, they
342             will not get overwritten.
343              
344             It also generates a C<.mailmap> base file suitable for Joelle, if one does
345             not already exists.
346              
347             =head1 USAGE
348              
349             In your C<dist.ini> -
350              
351             [@Filter]
352             -bundle = @Author::JMASLAK
353             -version = 0.003
354              
355             The C<-version> option should specify the latest version required and tested
356             with a given package.
357              
358             =head1 SEE ALSO
359              
360             Core Dist::Zilla plugins:
361              
362             Dist::Zilla roles:
363             L<PluginBundle|Dist::Zilla::Role::PluginBundle>,
364             L<PluginBundle::Easy|Dist::Zilla::Role::PluginBundle::Easy>.
365              
366             =head1 AUTHOR
367              
368             Joelle Maslak <jmaslak@antelope.net>
369              
370             =head1 COPYRIGHT AND LICENSE
371              
372             This software is copyright (c) 2018,2020-2023 by Joelle Maslak.
373              
374             This is free software; you can redistribute it and/or modify it under
375             the same terms as the Perl 5 programming language system itself.
376              
377             =cut