File Coverage

blib/lib/Dist/Zilla/PluginBundle/Author/HAYOBAAN.pm
Criterion Covered Total %
statement 50 52 96.1
branch 27 54 50.0
condition 6 18 33.3
subroutine 13 13 100.0
pod 0 3 0.0
total 96 140 68.5


line stmt bran cond sub pod time code
1             package Dist::Zilla::PluginBundle::Author::HAYOBAAN;
2 1     1   2709388 use 5.010; # For // operator
  1         4  
3 1     1   4 use strict;
  1         3  
  1         25  
4 1     1   4 use warnings;
  1         2  
  1         81  
5              
6             # ABSTRACT: Hayo Baan's Dist::Zilla configuration
7             our $VERSION = '0.013'; # VERSION
8              
9             #pod =head1 DESCRIPTION
10             #pod
11             #pod This is a L<Dist::Zilla> PluginBundle. It installs and configures
12             #pod L<Dist::Zilla> plugins according to HAYOBAAN's preferences. The
13             #pod following plugins are (conditionally) installed and configured:
14             #pod
15             #pod =for :list
16             #pod * L<AutoVersion|Dist::Zilla::Plugin::AutoVersion>
17             #pod * L<Author::HAYOBAAN::NextVersion|Dist::Zilla::Plugin::Author::HAYOBAAN::NextVersion>
18             #pod * L<OurPkgVersion|Dist::Zilla::Plugin::OurPkgVersion>
19             #pod * L<GatherDir|Dist::Zilla::Plugin::GatherDir>
20             #pod * L<Git::GatherDir|Dist::Zilla::Plugin::Git::GatherDir>
21             #pod * L<PruneCruft|Dist::Zilla::Plugin::PruneCruft>
22             #pod * L<ManifestSkip|Dist::Zilla::Plugin::ManifestSkip>
23             #pod * L<PodWeaver|Dist::Zilla::Plugin::PodWeaver> (or L<SurgicalPodWeaver|Dist::Zilla::Plugin::SurgicalPodWeaver> when enabled)
24             #pod * L<ReadmeAnyFromPod|Dist::Zilla::Plugin::ReadmeAnyFromPod> (both Text and Markdown generation are configured)
25             #pod * L<License|Dist::Zilla::Plugin::License>
26             #pod * L<InstallGuide|Dist::Zilla::Plugin::InstallGuide>
27             #pod * L<MinimumPerl|Dist::Zilla::Plugin::MinimumPerl>
28             #pod * L<AutoPrereqs|Dist::Zilla::Plugin::AutoPrereqs>
29             #pod * L<MetaNoIndex|Dist::Zilla::Plugin::MetaNoIndex>
30             #pod * L<GitHub::Meta|Dist::Zilla::Plugin::GitHub::Meta>
31             #pod * L<MetaJSON|Dist::Zilla::Plugin::MetaJSON>
32             #pod * L<MetaYAML|Dist::Zilla::Plugin::MetaYAML>
33             #pod * L<MetaProvides::Package|Dist::Zilla::Plugin::MetaProvides::Package>
34             #pod * L<MetaProvides::Class|Dist::Zilla::Plugin::MetaProvides::Class>
35             #pod * L<ExecDir|Dist::Zilla::Plugin::ExecDir>
36             #pod * L<ShareDir|Dist::Zilla::Plugin::ShareDir>
37             #pod * L<MakeMaker|Dist::Zilla::Plugin::MakeMaker> (default)
38             #pod * L<ModuleBuild|Dist::Zilla::Plugin::ModuleBuild> (optional)
39             #pod * L<Manifest|Dist::Zilla::Plugin::Manifest>
40             #pod * L<CopyFilesFromBuild|Dist::Zilla::Plugin::CopyFilesFromBuild>
41             #pod * L<Run::AfterBuild|Dist::Zilla::Plugin::Run::AfterBuild>
42             #pod * L<GitHubREADME::Badge|Dist::Zilla::Plugin::GitHubREADME::Badge>
43             #pod * L<CheckChangesHasContent|Dist::Zilla::Plugin::CheckChangesHasContent>
44             #pod * L<Git::CheckFor::CorrectBranch|Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch>
45             #pod * L<Git::Check|Dist::Zilla::Plugin::Git::Check>
46             #pod * L<CheckMetaResources|Dist::Zilla::Plugin::CheckMetaResources>
47             #pod * L<CheckPrereqsIndexed|Dist::Zilla::Plugin::CheckPrereqsIndexed>
48             #pod * L<Test::Compile|Dist::Zilla::Plugin::Test::Compile>
49             #pod * L<Test::Perl::Critic|Dist::Zilla::Plugin::Test::Perl::Critic>
50             #pod * L<Test::EOL|Dist::Zilla::Plugin::Test::EOL>
51             #pod * L<Test::NoTabs|Dist::Zilla::Plugin::Test::NoTabs>
52             #pod * L<Test::Version|Dist::Zilla::Plugin::Test::Version>
53             #pod * L<Test::MinimumVersion|Dist::Zilla::Plugin::Test::MinimumVersion>
54             #pod * L<MojibakeTests|Dist::Zilla::Plugin::MojibakeTests>
55             #pod * L<Test::Kwalitee|Dist::Zilla::Plugin::Test::Kwalitee>
56             #pod * L<Test::Portability|Dist::Zilla::Plugin::Test::Portability>
57             #pod * L<Test::UnusedVars|Dist::Zilla::Plugin::Test::UnusedVars>
58             #pod * L<Test::CPAN::Changes|Dist::Zilla::Plugin::Test::CPAN::Changes>
59             #pod * L<Test::DistManifest|Dist::Zilla::Plugin::Test::DistManifest>
60             #pod * L<Test::CPAN::Meta::JSON|Dist::Zilla::Plugin::Test::CPAN::Meta::JSON>
61             #pod * L<MetaTests|Dist::Zilla::Plugin::MetaTests>
62             #pod * L<PodSyntaxTests|Dist::Zilla::Plugin::PodSyntaxTests>
63             #pod * L<PodCoverageTests|Dist::Zilla::Plugin::PodCoverageTests>
64             #pod * L<Test::Pod::LinkCheck|Dist::Zilla::Plugin::Test::Pod::LinkCheck>
65             #pod * L<Test::Synopsis|Dist::Zilla::Plugin::Test::Synopsis>
66             #pod * L<TestRelease|Dist::Zilla::Plugin::TestRelease>
67             #pod * L<RunExtraTests|Dist::Zilla::Plugin::RunExtraTests>
68             #pod * L<ConfirmRelease|Dist::Zilla::Plugin::ConfirmRelease>
69             #pod * L<UploadToCPAN|Dist::Zilla::Plugin::UploadToCPAN>
70             #pod * L<SchwartzRatio|Dist::Zilla::Plugin::SchwartzRatio>
71             #pod * L<FakeRelease|Dist::Zilla::Plugin::FakeRelease>
72             #pod * L<NextRelease|Dist::Zilla::Plugin::NextRelease>
73             #pod * L<Git::Commit|Dist::Zilla::Plugin::Git::Commit>
74             #pod * L<Git::Tag|Dist::Zilla::Plugin::Git::Tag>
75             #pod * L<Git::Push|Dist::Zilla::Plugin::Git::Push>
76             #pod * L<GitHub::Update|Dist::Zilla::Plugin::GitHub::Update>
77             #pod * L<Run::AfterRelease|Dist::Zilla::Plugin::Run::AfterRelease>
78             #pod * L<Clean|Dist::Zilla::Plugin::Clean>
79             #pod
80             #pod =head1 USAGE
81             #pod
82             #pod # In dist.ini
83             #pod [@Author::HAYOBAAN]
84             #pod
85             #pod =head1 OPTIONS
86             #pod
87             #pod The following additional command-line option is available for the C<dzil> command.
88             #pod
89             #pod =head2 --local-release-only
90             #pod
91             #pod Adding this option to the C<dzil> command will set the
92             #pod L</local_release_only> attribute to I<true>.
93             #pod
94             #pod C<--local>, C<--local-only>, and C<--local-release> are synonyms for
95             #pod this option.
96             #pod
97             #pod =head2 --make-minor-release
98             #pod
99             #pod Adding this option to the C<dzil> command will set the
100             #pod L</make_minor_release> attribute to I<true>.
101             #pod
102             #pod C<--minor>, C<--minor-release>, and C<--make-minor> are synonyms for
103             #pod this option.
104             #pod
105             #pod Note: Implied with L</--local-release-only>, overriden by L</--make-major-release>.
106             #pod
107             #pod =head2 --make-major-release
108             #pod
109             #pod Adding this option to the C<dzil> command will set the
110             #pod L</make_major_release> attribute to true.
111             #pod
112             #pod C<--major>, C<--major-release>, and C<--make-major> are synonyms for
113             #pod this option.
114             #pod
115             #pod Note: Overrides L<--make-minor-release>.
116             #pod
117             #pod =head2 --keep-version
118             #pod
119             #pod Adding this option will force keep the version number the same (regardless of the other settings above!).
120             #pod
121             #pod C<--keep> is a synonym for this option.
122             #pod
123             #pod =head1 CREDITS
124             #pod
125             #pod I took inspiration from many people's L<Dist::Zilla> and L<Pod::Weaver> PluginBundles. Most notably from:
126             #pod
127             #pod =for :list
128             #pod * David Golden L<DAGOLDEN|Dist::Zilla::PluginBundle::DAGOLDEN>
129             #pod * Mike Doherty L<DOHERTY|Dist::Zilla::PluginBundle::Author::DOHERTY>
130             #pod
131             #pod =cut
132              
133 1     1   748 use Getopt::Long;
  1         7565  
  1         7  
134              
135 1     1   159 use Moose 0.99;
  1         16  
  1         8  
136 1     1   6345 use namespace::autoclean 0.09;
  1         25  
  1         8  
137 1     1   72 use Dist::Zilla 5.014; # default_jobs
  1         18  
  1         119  
138             with 'Dist::Zilla::Role::PluginBundle::Easy';
139              
140             # Required non-core Dist::Zilla plugins:
141             require Dist::Zilla::Plugin::OurPkgVersion;
142             require Dist::Zilla::Plugin::Git::GatherDir;
143             require Dist::Zilla::Plugin::PodWeaver; # And Dist::Zilla::Plugin::SurgicalPodWeaver if enabled
144 1     1   580 use Dist::Zilla::Plugin::ReadmeAnyFromPod 0.161150;
  1         157734  
  1         1622  
145             require Dist::Zilla::Plugin::InstallGuide;
146             require Dist::Zilla::Plugin::MinimumPerl;
147             require Dist::Zilla::Plugin::GitHub::Meta;
148             require Dist::Zilla::Plugin::MetaProvides::Package;
149             require Dist::Zilla::Plugin::MetaProvides::Class;
150             require Dist::Zilla::Plugin::CopyFilesFromBuild;
151             require Dist::Zilla::Plugin::Run;
152             require Dist::Zilla::Plugin::GitHubREADME::Badge;
153             require Dist::Zilla::Plugin::CheckChangesHasContent;
154             require Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch;
155             require Dist::Zilla::Plugin::Git::Check;
156             require Dist::Zilla::Plugin::CheckMetaResources;
157             require Dist::Zilla::Plugin::CheckPrereqsIndexed;
158             require Dist::Zilla::Plugin::Test::Compile;
159             require Dist::Zilla::Plugin::Test::Perl::Critic;
160             require Test::Perl::Critic;
161             require Dist::Zilla::Plugin::Test::EOL;
162             require Dist::Zilla::Plugin::Test::NoTabs;
163             require Dist::Zilla::Plugin::Test::Version;
164             require Dist::Zilla::Plugin::Test::MinimumVersion;
165             require Dist::Zilla::Plugin::MojibakeTests;
166             require Dist::Zilla::Plugin::Test::Kwalitee;
167             require Dist::Zilla::Plugin::Test::Portability;
168             require Dist::Zilla::Plugin::Test::UnusedVars;
169             require Dist::Zilla::Plugin::Test::CPAN::Changes;
170             require Dist::Zilla::Plugin::Test::DistManifest;
171             require Dist::Zilla::Plugin::Test::CPAN::Meta::JSON;
172             require Test::CPAN::Meta::JSON;
173             require Test::CPAN::Meta;
174             require Test::Pod::Coverage;
175             require Pod::Coverage::TrustPod;
176             require Dist::Zilla::Plugin::Test::Pod::LinkCheck;
177             require Dist::Zilla::Plugin::Test::Synopsis;
178             require Dist::Zilla::Plugin::RunExtraTests;
179             require Dist::Zilla::Plugin::SchwartzRatio;
180             require Dist::Zilla::Plugin::Git::Commit;
181             require Dist::Zilla::Plugin::Git::Tag;
182             require Dist::Zilla::Plugin::Git::Push;
183             require Dist::Zilla::Plugin::GitHub::Update;
184             require Dist::Zilla::Plugin::Clean;
185              
186 1     1 0 189 sub mvp_multivalue_args { return qw(git_remote run_after_build run_after_release additional_test disable_test) }
187              
188             sub mvp_aliases {
189             return {
190 1     1 0 141 local => "local_release_only",
191             local_only => "local_release_only",
192             local_release => "local_release_only",
193             minor => "make_minor_release",
194             minor_relase => "make_minor_release",
195             make_minor => "make_minor_release",
196             major => "make_major_release",
197             major_relase => "make_major_release",
198             make_major => "make_major_release",
199             }
200             }
201              
202             #pod =for Pod::Coverage mvp_multivalue_args mvp_aliases
203             #pod
204             #pod =attr is_cpan
205             #pod
206             #pod Specifies that this is a distribution that is destined for CPAN. When
207             #pod true, releases are uploaded to CPAN using
208             #pod L<UploadToCPAN|Dist::Zilla::Plugin::UploadToCPAN>. If false, releases
209             #pod are made using L<FakeRelease|Dist::Zilla::Plugin::FakeRelease>.
210             #pod
211             #pod Default: I<false>.
212             #pod
213             #pod =cut
214              
215             has is_cpan => (
216             is => 'ro',
217             isa => 'Bool',
218             lazy => 1,
219             default => sub { $_[0]->payload->{is_cpan} },
220             );
221              
222             #pod =attr is_github_hosted
223             #pod
224             #pod Specifies that the distribution's repository is hosted on GitHub.
225             #pod
226             #pod Default: I<false> (note: setting L</is_cpan> enforces L</is_github_hosted>
227             #pod to I<true>)
228             #pod
229             #pod =cut
230              
231             has is_github_hosted => (
232             is => 'ro',
233             isa => 'Bool',
234             lazy => 1,
235             default => sub { $_[0]->payload->{is_github} || $_[0]->is_cpan },
236             );
237              
238             #pod =attr git_remote
239             #pod
240             #pod Specifies where to push the distribution on GitHub. Can be used
241             #pod multiple times to upload to multiple branches.
242             #pod
243             #pod Default: C<origin>
244             #pod
245             #pod =cut
246              
247             has git_remote => (
248             is => 'ro',
249             isa => 'ArrayRef',
250             lazy => 1,
251             default => sub { $_[0]->payload->{git_remote} // [ 'origin' ] },
252             );
253              
254             #pod =attr no_git
255             #pod
256             #pod Specifies that the distribution is not under git version control.
257             #pod
258             #pod Default: I<false> (note: setting L</is_github_hosted> enforces this
259             #pod setting to I<false>)
260             #pod
261             #pod =cut
262              
263             has no_git => (
264             is => 'ro',
265             isa => 'Bool',
266             lazy => 1,
267             default => sub { $_[0]->payload->{no_git} && !$_[0]->is_github_hosted },
268             );
269              
270             #pod =attr local_release_only
271             #pod
272             #pod Setting this to I<true> will:
273             #pod
274             #pod =for :list
275             #pod * inhibit uploading to CPAN,
276             #pod * inhibit git checking, tagging, commiting, and pushing,
277             #pod * inhibit checking the F<Changes> file,
278             #pod * include a minor version number (e.g., C<_001>) in the version string (see L</make_minor_release>).
279             #pod
280             #pod When releasing, the L</run_after_release> code is still run so you can
281             #pod use this flag to I<release> a development version locally for further
282             #pod use or testing, without e.g., fixing a new major version number.
283             #pod
284             #pod C<local>, C<local_only>, and C<local_release> are synonyms for
285             #pod this setting.
286             #pod
287             #pod Default: I<false>
288             #pod
289             #pod =cut
290              
291             has local_release_only => (
292             is => 'rw',
293             isa => 'Bool',
294             lazy => 1,
295             default => sub { $_[0]->payload->{local_release_only} }
296             );
297              
298             #pod =attr make_minor_release
299             #pod
300             #pod If the version string does not yet have a minor release number, this will add one with the value of C<_001>.
301             #pod
302             #pod C<minor>, C<minor_release>, and C<make_minor> are synonyms for this
303             #pod setting.
304             #pod
305             #pod Default: value of L</local_release_only>
306             #pod
307             #pod Note: Overridden by L</make_major_release>.
308             #pod
309             #pod =cut
310              
311             has make_minor_release => (
312             is => 'rw',
313             isa => 'Bool',
314             lazy => 1,
315             default => sub { exists $_[0]->payload->{make_minor_release} ? $_[0]->payload->{make_minor_release} : $_[0]->local_release_only }
316             );
317              
318             #pod =attr make_major_release
319             #pod
320             #pod Removes any minor version from the version string.
321             #pod
322             #pod C<major>, C<major_release>, and C<make_major> are synonyms for this
323             #pod setting.
324             #pod
325             #pod Default: I<false>
326             #pod
327             #pod Note: Overrides L</make_minor_release>.
328             #pod
329             #pod =cut
330              
331             has make_major_release => (
332             is => 'rw',
333             isa => 'Bool',
334             lazy => 1,
335             default => sub { $_[0]->payload->{make_major_release} }
336             );
337              
338             #pod =attr keep_version
339             #pod
340             #pod Will keep the current version number the same when building/releasing.
341             #pod
342             #pod =cut
343              
344             has keep_version => (
345             is => 'rw',
346             isa => 'Bool',
347             lazy => 1,
348             default => sub { $_[0]->payload->{keep_version} }
349             );
350              
351             #pod =attr use_makemaker
352             #pod
353             #pod Uses MakeMaker as build method.
354             #pod
355             #pod Default: I<true>
356             #pod
357             #pod Note: When both C<use_makemaker> and C<use_modulebuild> are I<false>, MakeMaker will be used!
358             #pod
359             #pod =cut
360              
361             has use_makemaker => (
362             is => 'rw',
363             isa => 'Bool',
364             lazy => 1,
365             default => sub { ($_[0]->payload->{use_makemaker} // 1) || !$_[0]->payload->{use_modulebuild} }
366             );
367              
368             #pod =attr use_modulebuild
369             #pod
370             #pod Uses L<Module::Build> as build method.
371             #pod
372             #pod Default: I<false>
373             #pod
374             #pod =cut
375              
376             has use_modulebuild => (
377             is => 'rw',
378             isa => 'Bool',
379             lazy => 1,
380             default => sub { $_[0]->payload->{use_modulebuild} }
381             );
382              
383             #pod =attr run_after_build
384             #pod
385             #pod Specifies commands to run after the release has been built (but not yet released). Multiple
386             #pod L</run_after_build> commands can be specified.
387             #pod
388             #pod The commands are run from the root of your development tree and has the following special symbols available:
389             #pod
390             #pod =for :list
391             #pod * C<%d> the directory in which the distribution was built
392             #pod * C<%n> the name of the distribution
393             #pod * C<%p> path separator ('/' on Unix, '\\' on Win32... useful for cross-platform dist.ini files)
394             #pod * C<%v> the version of the distribution
395             #pod * C<%t> -TRIAL if the release is a trial release, otherwise the empty string
396             #pod * C<%x> full path to the current perl interpreter (like $^X but from Config)
397             #pod
398             #pod Default: I<nothing>
399             #pod
400             #pod =cut
401              
402             has run_after_build => (
403             is => 'ro',
404             isa => 'ArrayRef',
405             lazy => 1,
406             default => sub { $_[0]->payload->{run_after_build} // [] },
407             );
408              
409             #pod =attr run_after_release
410             #pod
411             #pod Specifies commands to run after the release has been made. Use it to e.g.,
412             #pod automatically install your distibution after releasing. Multiple
413             #pod run_after_release commands can be specified.
414             #pod
415             #pod The commands are run from the root of your development tree and has
416             #pod the same symbols available as the L</run_after_build>, plus the
417             #pod following:
418             #pod
419             #pod =for :list
420             #pod * C<%a> the archive of the release
421             #pod
422             #pod Default: C<cpanm './%d'>
423             #pod
424             #pod =head3 Examples:
425             #pod
426             #pod To install using cpanm (this is the default):
427             #pod
428             #pod run_after_release = cpanm './%d'
429             #pod
430             #pod To install using cpan:
431             #pod
432             #pod run_after_release = %x -MCPAN -einstall './%d'
433             #pod
434             #pod To not do anything:
435             #pod
436             #pod run_after_release =
437             #pod
438             #pod =cut
439              
440             has run_after_release => (
441             is => 'ro',
442             isa => 'ArrayRef',
443             lazy => 1,
444             default => sub { exists $_[0]->payload->{run_after_release} ? $_[0]->payload->{run_after_release} : [ 'cpanm ./%d' ] },
445             );
446              
447             #pod =attr additional_test
448             #pod
449             #pod Additional test plugin to use. Can be used multiple times to add more
450             #pod than one additional test.
451             #pod
452             #pod By default the following tests are executed:
453             #pod
454             #pod =for :list
455             #pod * L<Test::Compile|Dist::Zilla::Plugin::Test::Compile> -- Checks if perl code compiles correctly
456             #pod * L<Test::Perl::Critic|Dist::Zilla::Plugin::Test::Perl::Critic> -- Checks Perl source code for best-practices
457             #pod * L<Test::EOL|Dist::Zilla::Plugin::Test::EOL> -- Checks line endings
458             #pod * L<Test::NoTabs|Dist::Zilla::Plugin::Test::NoTabs> -- Checks for the use of tabs
459             #pod * L<Test::Version|Dist::Zilla::Plugin::Test::Version> -- Checks to see if each module has the correct version set
460             #pod * L<Test::MinimumVersion|Dist::Zilla::Plugin::Test::MinimumVersion> -- Checks the minimum perl version, using L</max_target_perl>
461             #pod * L<MojibakeTests|Dist::Zilla::Plugin::MojibakeTests> -- Checks source encoding
462             #pod * L<Test::Kwalitee|Dist::Zilla::Plugin::Test::Kwalitee> -- Checks the Kwalitee
463             #pod * L<Test::Portability|Dist::Zilla::Plugin::Test::Portability> -- Checks portability of code
464             #pod * L<Test::UnusedVars|Dist::Zilla::Plugin::Test::UnusedVars> -- Checks for unused variables
465             #pod * L<Test::CPAN::Changes|Dist::Zilla::Plugin::Test::CPAN::Changes> -- Validation of the Changes file
466             #pod * L<Test::DistManifest|Dist::Zilla::Plugin::Test::DistManifest> -- Validation of the MANIFEST file
467             #pod * L<Test::CPAN::Meta::JSON|Dist::Zilla::Plugin::Test::CPAN::Meta::JSON> -- Validation of the META.json file -- only when hosted on GitHub
468             #pod * L<MetaTests|Dist::Zilla::Plugin::MetaTests> -- Validation of the META.yml file -- only when hosted on GitHub
469             #pod * L<PodSyntaxTests|Dist::Zilla::Plugin::PodSyntaxTests> -- Checks pod syntax
470             #pod * L<PodCoverageTests|Dist::Zilla::Plugin::PodCoverageTests> -- Checks pod coverage
471             #pod * L<Test::Pod::LinkCheck|Dist::Zilla::Plugin::Test::Pod::LinkCheck> -- Checks pod links
472             #pod * L<Test::Synopsis|Dist::Zilla::Plugin::Test::Synopsis> -- Checks the pod synopsis
473             #pod
474             #pod =cut
475              
476             has additional_test => (
477             is => 'ro',
478             isa => 'ArrayRef[Str]',
479             lazy => 1,
480             default => sub { $_[0]->payload->{additional_test} // [] },
481             );
482              
483             #pod =attr disable_test
484             #pod
485             #pod Specifies the test you don't want to be run. Can bu used more than
486             #pod once to disable multiple tests.
487             #pod
488             #pod Default: I<none> (i.e., run all default and L</additional_test> tests).
489             #pod
490             #pod =cut
491              
492             has disable_test => (
493             is => 'ro',
494             isa => 'ArrayRef[Str]',
495             lazy => 1,
496             default => sub { $_[0]->payload->{disable_test} // [] },
497             );
498              
499             #pod =attr max_target_perl
500             #pod
501             #pod Defines the highest minimum version of perl you intend to require.
502             #pod This is passed to L<Test::MinimumVersion|Dist::Zilla::Plugin::Test::MinimumVersion>, which generates
503             #pod a F<minimum-version.t> test that'll warn you if you accidentally used features
504             #pod from a higher version of perl than you wanted. (Having a lower required version
505             #pod of perl is okay.)
506             #pod
507             #pod Default: C<5.006>
508             #pod
509             #pod =cut
510              
511             has max_target_perl => (
512             is => 'ro',
513             isa => 'Str',
514             lazy => 1,
515             default => sub { $_[0]->payload->{max_target_perl} // '5.006' },
516             );
517              
518             #pod =attr surgical
519             #pod
520             #pod If this is set to I<true>,
521             #pod L<SurgicalPodWeaver|Dist::Zilla::Plugin::SurgicalPodWeaver> is used
522             #pod instead of the standard L<PodWeaver|Dist::Zilla::Plugin::PodWeaver>
523             #pod plugin. L<SurgicalPodWeaver|Dist::Zilla::Plugin::SurgicalPodWeaver>
524             #pod only munges files that contain either a C<# ABSTRACT> or a C<#
525             #pod Dist::Zilla: +PodWeaver> line.
526             #pod
527             #pod Default: I<false>
528             #pod
529             #pod =cut
530              
531             has surgicalpod => (
532             is => 'ro',
533             isa => 'Str',
534             lazy => 1,
535             default => sub { $_[0]->payload->{surgicalpod} // 0 },
536             );
537              
538             #pod =attr weaver_config
539             #pod
540             #pod Specifies the configuration for L<Pod::Weaver>.
541             #pod
542             #pod Default: C<@Author::HAYOBAAN>.
543             #pod
544             #pod =cut
545              
546             has weaver_config => (
547             is => 'ro',
548             isa => 'Str',
549             lazy => 1,
550             default => sub { $_[0]->payload->{weaver_config} // '@Author::HAYOBAAN' },
551             );
552              
553             #pod =attr tag_format
554             #pod
555             #pod Specifies the format for tagging a release (see
556             #pod L<Git::Tag|Dist::Zilla::Plugin::Git::Tag> for details).
557             #pod
558             #pod Default: C<v%v%t>
559             #pod
560             #pod =cut
561              
562             has tag_format => (
563             is => 'ro',
564             isa => 'Str',
565             lazy => 1,
566             default => sub { $_[0]->payload->{tag_format} // 'v%v%t' },
567             );
568              
569             #pod =attr version_regexp
570             #pod
571             #pod Specifies the regexp for versions (see
572             #pod L<Git::NextVersion|Dist::Zilla::Plugin::Git::NextVersion> for details).
573             #pod
574             #pod Default: C<^v?([\d.]+(?:_\d+)?)(?:-TRIAL)?$>
575             #pod
576             #pod Note: Only used in case of git version controlled repositories
577             #pod (L<AutoVersion|Dist::Zilla::Plugin::AutoVersion> is used in case of
578             #pod non-git version controlled repositories).
579             #pod
580             #pod =cut
581              
582             has version_regexp => (
583             is => 'ro',
584             isa => 'Str',
585             lazy => 1,
586             default => sub { $_[0]->payload->{version_regexp} // '^v?([\d.]+(?:_\d+)?)(?:-TRIAL)?$' },
587             );
588              
589             ################################################################################
590              
591             # List of files to copy to the root after they were built.
592             has copy_build_files => (
593             is => 'ro',
594             isa => 'ArrayRef[Str]',
595             lazy => 1,
596             default => sub { [ ($_[0]->use_modulebuild ? qw(Build.PL) : ()),
597             ($_[0]->use_makemaker ? qw(Makefile.PL) : ()),
598             qw(README README.mkdn) ] },
599             );
600              
601             # Files to exclude from gatherer
602             has exclude_files => (
603             is => 'ro',
604             isa => 'ArrayRef[Str]',
605             lazy => 1,
606             default => sub { [
607             @{$_[0]->copy_build_files},
608             qw(MANIFEST),
609             ] },
610             );
611              
612             # Files that can be "dirty"
613             has allow_dirty => (
614             is => 'ro',
615             isa => 'ArrayRef[Str]',
616             lazy => 1,
617             default => sub { [
618             @{$_[0]->copy_build_files},
619             qw(dist.ini Changes),
620             ] },
621             );
622              
623             # Directories that should not be indexed
624             has meta_no_index_dirs => (
625             is => 'ro',
626             isa => 'ArrayRef[Str]',
627             lazy => 1,
628             default => sub { [ qw(corpus) ] },
629             );
630              
631             sub _is_disabled {
632 16     16   26 my $self = shift;
633 16         27 my $plugin = shift;
634 16         26 return grep { $_ eq $plugin } @{$self->disable_test}
  0         0  
  16         503  
635             }
636              
637             # Helper function to add a test, checks for disabled tests
638             sub _add_test {
639 16     16   31 my $self = shift;
640 16 100       29 return grep { ! $self->_is_disabled(ref $_ ? $_->[0] : $_) } @_;
  16         42  
641             }
642              
643             #pod =for Pod::Coverage configure
644             #pod
645             #pod =cut
646              
647             sub configure {
648 1     1 0 7 my $self = shift;
649              
650             {
651             # Command-line argument processing
652              
653             # Local-relase-only
654 1         2 my $local;
  1         3  
655 1         6 GetOptions('local|local-only|local-release|local-release-only!' => \$local);
656 1 50       219 $self->local_release_only($local) if defined $local;
657              
658             # Make-minor-release
659 1         2 my $minor;
660 1         4 GetOptions('minor|minor-relase|make-minor|make-minor-release!' => \$minor);
661 1 50       126 $self->make_minor_release($minor) if defined $minor;
662              
663             # Make-major-release
664 1         3 my $major;
665 1         4 GetOptions('major|major-relase|make-major|make-major-release!' => \$major);
666 1 50       120 $self->make_major_release($major) if defined $major;
667              
668             # Keep-version
669 1         3 my $keep;
670 1         4 GetOptions('keep|keep-version!' => \$keep);
671 1 50       97 $self->keep_version($keep) if defined $keep;
672             }
673              
674             return $self->add_plugins(
675             #### Version ####
676             $self->no_git ? (
677             # Provide automatic version based on date
678             'AutoVersion'
679             ) : (
680             # Provide a version number by bumping the last git release tag
681             [
682             'Author::HAYOBAAN::NextVersion' => {
683             first_version => '0.001', # First version = 0.001
684             version_by_branch => 0, # Set to 1 if doing maintenance branch
685             version_regexp => $self->version_regexp, # Regexp for version format
686             include_minor_version => $self->make_minor_release, # Minor release?
687             remove_minor_version => $self->make_major_release, # Force major release?
688             keep_version => $self->keep_version, # Keep release number?
689             },
690             ],
691             ),
692              
693             # Adds version to file (no line insertion, using our)
694             'OurPkgVersion',
695              
696             #### Gather & Prune ####
697             # Gather files to include
698             [ $self->no_git ? 'GatherDir' : 'Git::GatherDir' => { exclude_filename => $self->exclude_files } ],
699             # Remove cruft
700             'PruneCruft',
701             # Skip files in MANIFEST.SKIP
702             'ManifestSkip',
703              
704             #### PodWeaver ####
705             # Automatically extends POD
706             [
707             ($self->surgicalpod ? 'SurgicalPodWeaver' : 'PodWeaver') => {
708             config_plugin => $self->weaver_config,
709             replacer => 'replace_with_comment',
710             post_code_replacer => 'replace_with_nothing',
711             }
712             ],
713              
714             #### Distribution Files & Metadata ####
715             # Create README and README.mkdn from POD
716             [ 'ReadmeAnyFromPod', 'Text' ],
717             [ 'ReadmeAnyFromPod', 'Markdown' ],
718              
719             $self->is_github_hosted ? (
720             # Create a LICENSE file
721             'License',
722             # Create an INSTALL file
723             'InstallGuide',
724             ) : (),
725              
726             # Automatically determine minimum perl version
727             'MinimumPerl',
728             # Automatically determine prerequisites
729             'AutoPrereqs',
730              
731             # Do not index certain dirs",
732             [ 'MetaNoIndex' => { dir => $self->meta_no_index_dirs } ],
733              
734             $self->is_github_hosted ? (
735             # Add GitHub metadata",
736             'GitHub::Meta',
737             # Add META.json",
738             'MetaJSON',
739             # Add META.yaml",
740             'MetaYAML',
741             # Add provided Packages to META.*",
742             'MetaProvides::Package',
743             # Add provided Classes to META.*",
744             'MetaProvides::Class',
745             ) : (),
746              
747             #### Build System ####
748             # Install content of bin directory as executables
749             'ExecDir',
750             # Install content of share directory as sharedir
751             'ShareDir',
752             $self->use_makemaker ? (
753             # Build a Makefile.PL that uses ExtUtils::MakeMaker
754             [ 'MakeMaker', { default_jobs => 9 } ],
755             ) : (),
756             $self->use_modulebuild ? (
757             # Build a Build.PL that uses Module::Build
758             'ModuleBuild',
759             ) : (),
760              
761             # Add Manifest
762             'Manifest',
763              
764             #### After Build ####
765             # Copy/move specific files after building them
766             [ 'CopyFilesFromBuild' => { copy => $self->copy_build_files } ],
767              
768 1         33 @{$self->run_after_build} ? (
769             # Run specified commands
770             [ 'Run::AfterBuild' => { run => $self->run_after_build } ],
771             ) : (),
772              
773             $self->is_github_hosted && $self->is_cpan ? (
774             # Add status badges to README.mkdn
775             [ 'GitHubREADME::Badge' => { ':version' => '0.16', badges => [ qw(travis cpants) ] } ],
776             ) : (),
777              
778             #### Before Release Tests ####
779             !$self->local_release_only ? (
780             # Check if Changes file has content
781             'CheckChangesHasContent',
782             ) : (),
783              
784             !$self->no_git && !$self->local_release_only ? (
785             # Check if we're on the correct git branch
786             'Git::CheckFor::CorrectBranch',
787             # Check git repository for uncommitted files before releasing
788             [ 'Git::Check' => { allow_dirty => $self->allow_dirty } ],
789             $self->is_cpan ? (
790             # Check resources section of meta files
791             'CheckMetaResources',
792             # Check if prereqs are available on CPAN
793             'CheckPrereqsIndexed',
794             ) : (),
795             ) : (),
796              
797             # Extra test (gatherdir)
798             # Checks if perl code compiles correctly
799             $self->_add_test('Test::Compile'),
800              
801             # Extra tests (author)
802             # Checks Perl source code for best-practices
803             $self->_add_test('Test::Perl::Critic'),
804             # Checks line endings
805             $self->_add_test('Test::EOL'),
806             # Checks for the use of tabs
807             $self->_add_test('Test::NoTabs'),
808              
809             # Extra tests (release)
810             # Checks to see if each module has the correct version set
811             $self->_add_test('Test::Version'),
812             # Checks the minimum perl version
813             $self->_add_test([ 'Test::MinimumVersion' => { max_target_perl => $self->max_target_perl } ]),
814             # Checks source encoding
815             $self->_add_test('MojibakeTests'),
816             # Checks the Kwalitee
817             $self->_add_test('Test::Kwalitee'),
818             # Checks portability of code
819             $self->_add_test('Test::Portability'),
820             # Checks for unused variables
821             $self->_add_test('Test::UnusedVars'),
822             !$self->local_release_only ? (
823             # Validation of the Changes file
824             $self->_add_test('Test::CPAN::Changes'),
825             ) : (),
826             # Validation of the MANIFEST file
827             $self->_add_test('Test::DistManifest'),
828              
829             $self->is_github_hosted ? (
830             # Validation of the META.json file
831             $self->_add_test('Test::CPAN::Meta::JSON'),
832             # Validation of the META.yml file
833             $self->_add_test('MetaTests'),
834             ) : (),
835              
836             # Checks pod syntax
837             $self->_add_test('PodSyntaxTests'),
838             # Checks pod coverage
839             $self->_add_test('PodCoverageTests'),
840             # Checks pod links
841             $self->_add_test('Test::Pod::LinkCheck'),
842             # Checks the pod synopsis
843             $self->_add_test('Test::Synopsis'),
844              
845             # Add the additional tests specified
846 1         37 @{$self->additional_test} ? $self->_add_test(@{$self->additional_test}) : (),
  0         0  
847              
848             #### Run tests ####
849             # Run provided tests in /t directory before releasing
850             'TestRelease',
851             # Run the extra tests
852             [ 'RunExtraTests' => { default_jobs => 9 } ],
853              
854             #### Release ####
855             !$self->local_release_only ? (
856             # Prompt for confirmation before releasing
857             'ConfirmRelease',
858             ) : (),
859             $self->is_cpan && !$self->local_release_only ? (
860             # Upload release to CPAN,
861             'UploadToCPAN',
862             # Provide statistics
863             'SchwartzRatio',
864             ) : (
865             # Fake release
866             'FakeRelease',
867             ),
868              
869             #### After release ###
870             !$self->local_release_only ? (
871             # Update the next release number in the changelog
872             [ 'NextRelease' => { format => '%-9v %{yyyy-MM-dd}d' } ],
873             ) : (),
874              
875             !$self->no_git && !$self->local_release_only ? (
876             # Commit dirty files
877             [ 'Git::Commit' => { allow_dirty => $self->allow_dirty } ],
878             # Tag the new version
879             [
880             'Git::Tag' => {
881             tag_format => $self->tag_format,
882             tag_message => 'Released ' . $self->tag_format,
883             }
884             ],
885             ) : (),
886              
887             $self->is_github_hosted && @{$self->git_remote} && !$self->local_release_only ? (
888             # Push current branch
889             [ 'Git::Push', { push_to => $self->git_remote } ],
890             ) : (),
891              
892             $self->is_cpan && !$self->local_release_only ? (
893             # Update GitHub repository info on release
894             [ 'GitHub::Update' => { metacpan => 1 } ]
895             ) : (),
896              
897 1 50 33     38 @{$self->run_after_release} ? (
  1 50 33     33  
    50 33        
    50 33        
    50 33        
    50 33        
    50          
    50          
    50          
    50          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
898             # Install the release
899             [ 'Run::AfterRelease' => { run => $self->run_after_release } ],
900             ) : (),
901              
902             # Cleanup
903             'Clean',
904             );
905             }
906              
907             __PACKAGE__->meta->make_immutable;
908             1;
909              
910             __END__
911              
912             =pod
913              
914             =encoding UTF-8
915              
916             =head1 NAME
917              
918             Dist::Zilla::PluginBundle::Author::HAYOBAAN - Hayo Baan's Dist::Zilla configuration
919              
920             =head1 VERSION
921              
922             version 0.013
923              
924             =head1 DESCRIPTION
925              
926             This is a L<Dist::Zilla> PluginBundle. It installs and configures
927             L<Dist::Zilla> plugins according to HAYOBAAN's preferences. The
928             following plugins are (conditionally) installed and configured:
929              
930             =over 4
931              
932             =item *
933              
934             L<AutoVersion|Dist::Zilla::Plugin::AutoVersion>
935              
936             =item *
937              
938             L<Author::HAYOBAAN::NextVersion|Dist::Zilla::Plugin::Author::HAYOBAAN::NextVersion>
939              
940             =item *
941              
942             L<OurPkgVersion|Dist::Zilla::Plugin::OurPkgVersion>
943              
944             =item *
945              
946             L<GatherDir|Dist::Zilla::Plugin::GatherDir>
947              
948             =item *
949              
950             L<Git::GatherDir|Dist::Zilla::Plugin::Git::GatherDir>
951              
952             =item *
953              
954             L<PruneCruft|Dist::Zilla::Plugin::PruneCruft>
955              
956             =item *
957              
958             L<ManifestSkip|Dist::Zilla::Plugin::ManifestSkip>
959              
960             =item *
961              
962             L<PodWeaver|Dist::Zilla::Plugin::PodWeaver> (or L<SurgicalPodWeaver|Dist::Zilla::Plugin::SurgicalPodWeaver> when enabled)
963              
964             =item *
965              
966             L<ReadmeAnyFromPod|Dist::Zilla::Plugin::ReadmeAnyFromPod> (both Text and Markdown generation are configured)
967              
968             =item *
969              
970             L<License|Dist::Zilla::Plugin::License>
971              
972             =item *
973              
974             L<InstallGuide|Dist::Zilla::Plugin::InstallGuide>
975              
976             =item *
977              
978             L<MinimumPerl|Dist::Zilla::Plugin::MinimumPerl>
979              
980             =item *
981              
982             L<AutoPrereqs|Dist::Zilla::Plugin::AutoPrereqs>
983              
984             =item *
985              
986             L<MetaNoIndex|Dist::Zilla::Plugin::MetaNoIndex>
987              
988             =item *
989              
990             L<GitHub::Meta|Dist::Zilla::Plugin::GitHub::Meta>
991              
992             =item *
993              
994             L<MetaJSON|Dist::Zilla::Plugin::MetaJSON>
995              
996             =item *
997              
998             L<MetaYAML|Dist::Zilla::Plugin::MetaYAML>
999              
1000             =item *
1001              
1002             L<MetaProvides::Package|Dist::Zilla::Plugin::MetaProvides::Package>
1003              
1004             =item *
1005              
1006             L<MetaProvides::Class|Dist::Zilla::Plugin::MetaProvides::Class>
1007              
1008             =item *
1009              
1010             L<ExecDir|Dist::Zilla::Plugin::ExecDir>
1011              
1012             =item *
1013              
1014             L<ShareDir|Dist::Zilla::Plugin::ShareDir>
1015              
1016             =item *
1017              
1018             L<MakeMaker|Dist::Zilla::Plugin::MakeMaker> (default)
1019              
1020             =item *
1021              
1022             L<ModuleBuild|Dist::Zilla::Plugin::ModuleBuild> (optional)
1023              
1024             =item *
1025              
1026             L<Manifest|Dist::Zilla::Plugin::Manifest>
1027              
1028             =item *
1029              
1030             L<CopyFilesFromBuild|Dist::Zilla::Plugin::CopyFilesFromBuild>
1031              
1032             =item *
1033              
1034             L<Run::AfterBuild|Dist::Zilla::Plugin::Run::AfterBuild>
1035              
1036             =item *
1037              
1038             L<GitHubREADME::Badge|Dist::Zilla::Plugin::GitHubREADME::Badge>
1039              
1040             =item *
1041              
1042             L<CheckChangesHasContent|Dist::Zilla::Plugin::CheckChangesHasContent>
1043              
1044             =item *
1045              
1046             L<Git::CheckFor::CorrectBranch|Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch>
1047              
1048             =item *
1049              
1050             L<Git::Check|Dist::Zilla::Plugin::Git::Check>
1051              
1052             =item *
1053              
1054             L<CheckMetaResources|Dist::Zilla::Plugin::CheckMetaResources>
1055              
1056             =item *
1057              
1058             L<CheckPrereqsIndexed|Dist::Zilla::Plugin::CheckPrereqsIndexed>
1059              
1060             =item *
1061              
1062             L<Test::Compile|Dist::Zilla::Plugin::Test::Compile>
1063              
1064             =item *
1065              
1066             L<Test::Perl::Critic|Dist::Zilla::Plugin::Test::Perl::Critic>
1067              
1068             =item *
1069              
1070             L<Test::EOL|Dist::Zilla::Plugin::Test::EOL>
1071              
1072             =item *
1073              
1074             L<Test::NoTabs|Dist::Zilla::Plugin::Test::NoTabs>
1075              
1076             =item *
1077              
1078             L<Test::Version|Dist::Zilla::Plugin::Test::Version>
1079              
1080             =item *
1081              
1082             L<Test::MinimumVersion|Dist::Zilla::Plugin::Test::MinimumVersion>
1083              
1084             =item *
1085              
1086             L<MojibakeTests|Dist::Zilla::Plugin::MojibakeTests>
1087              
1088             =item *
1089              
1090             L<Test::Kwalitee|Dist::Zilla::Plugin::Test::Kwalitee>
1091              
1092             =item *
1093              
1094             L<Test::Portability|Dist::Zilla::Plugin::Test::Portability>
1095              
1096             =item *
1097              
1098             L<Test::UnusedVars|Dist::Zilla::Plugin::Test::UnusedVars>
1099              
1100             =item *
1101              
1102             L<Test::CPAN::Changes|Dist::Zilla::Plugin::Test::CPAN::Changes>
1103              
1104             =item *
1105              
1106             L<Test::DistManifest|Dist::Zilla::Plugin::Test::DistManifest>
1107              
1108             =item *
1109              
1110             L<Test::CPAN::Meta::JSON|Dist::Zilla::Plugin::Test::CPAN::Meta::JSON>
1111              
1112             =item *
1113              
1114             L<MetaTests|Dist::Zilla::Plugin::MetaTests>
1115              
1116             =item *
1117              
1118             L<PodSyntaxTests|Dist::Zilla::Plugin::PodSyntaxTests>
1119              
1120             =item *
1121              
1122             L<PodCoverageTests|Dist::Zilla::Plugin::PodCoverageTests>
1123              
1124             =item *
1125              
1126             L<Test::Pod::LinkCheck|Dist::Zilla::Plugin::Test::Pod::LinkCheck>
1127              
1128             =item *
1129              
1130             L<Test::Synopsis|Dist::Zilla::Plugin::Test::Synopsis>
1131              
1132             =item *
1133              
1134             L<TestRelease|Dist::Zilla::Plugin::TestRelease>
1135              
1136             =item *
1137              
1138             L<RunExtraTests|Dist::Zilla::Plugin::RunExtraTests>
1139              
1140             =item *
1141              
1142             L<ConfirmRelease|Dist::Zilla::Plugin::ConfirmRelease>
1143              
1144             =item *
1145              
1146             L<UploadToCPAN|Dist::Zilla::Plugin::UploadToCPAN>
1147              
1148             =item *
1149              
1150             L<SchwartzRatio|Dist::Zilla::Plugin::SchwartzRatio>
1151              
1152             =item *
1153              
1154             L<FakeRelease|Dist::Zilla::Plugin::FakeRelease>
1155              
1156             =item *
1157              
1158             L<NextRelease|Dist::Zilla::Plugin::NextRelease>
1159              
1160             =item *
1161              
1162             L<Git::Commit|Dist::Zilla::Plugin::Git::Commit>
1163              
1164             =item *
1165              
1166             L<Git::Tag|Dist::Zilla::Plugin::Git::Tag>
1167              
1168             =item *
1169              
1170             L<Git::Push|Dist::Zilla::Plugin::Git::Push>
1171              
1172             =item *
1173              
1174             L<GitHub::Update|Dist::Zilla::Plugin::GitHub::Update>
1175              
1176             =item *
1177              
1178             L<Run::AfterRelease|Dist::Zilla::Plugin::Run::AfterRelease>
1179              
1180             =item *
1181              
1182             L<Clean|Dist::Zilla::Plugin::Clean>
1183              
1184             =back
1185              
1186             =head1 USAGE
1187              
1188             # In dist.ini
1189             [@Author::HAYOBAAN]
1190              
1191             =head1 OPTIONS
1192              
1193             The following additional command-line option is available for the C<dzil> command.
1194              
1195             =head2 --local-release-only
1196              
1197             Adding this option to the C<dzil> command will set the
1198             L</local_release_only> attribute to I<true>.
1199              
1200             C<--local>, C<--local-only>, and C<--local-release> are synonyms for
1201             this option.
1202              
1203             =head2 --make-minor-release
1204              
1205             Adding this option to the C<dzil> command will set the
1206             L</make_minor_release> attribute to I<true>.
1207              
1208             C<--minor>, C<--minor-release>, and C<--make-minor> are synonyms for
1209             this option.
1210              
1211             Note: Implied with L</--local-release-only>, overriden by L</--make-major-release>.
1212              
1213             =head2 --make-major-release
1214              
1215             Adding this option to the C<dzil> command will set the
1216             L</make_major_release> attribute to true.
1217              
1218             C<--major>, C<--major-release>, and C<--make-major> are synonyms for
1219             this option.
1220              
1221             Note: Overrides L<--make-minor-release>.
1222              
1223             =head2 --keep-version
1224              
1225             Adding this option will force keep the version number the same (regardless of the other settings above!).
1226              
1227             C<--keep> is a synonym for this option.
1228              
1229             =head1 ATTRIBUTES
1230              
1231             =head2 is_cpan
1232              
1233             Specifies that this is a distribution that is destined for CPAN. When
1234             true, releases are uploaded to CPAN using
1235             L<UploadToCPAN|Dist::Zilla::Plugin::UploadToCPAN>. If false, releases
1236             are made using L<FakeRelease|Dist::Zilla::Plugin::FakeRelease>.
1237              
1238             Default: I<false>.
1239              
1240             =head2 is_github_hosted
1241              
1242             Specifies that the distribution's repository is hosted on GitHub.
1243              
1244             Default: I<false> (note: setting L</is_cpan> enforces L</is_github_hosted>
1245             to I<true>)
1246              
1247             =head2 git_remote
1248              
1249             Specifies where to push the distribution on GitHub. Can be used
1250             multiple times to upload to multiple branches.
1251              
1252             Default: C<origin>
1253              
1254             =head2 no_git
1255              
1256             Specifies that the distribution is not under git version control.
1257              
1258             Default: I<false> (note: setting L</is_github_hosted> enforces this
1259             setting to I<false>)
1260              
1261             =head2 local_release_only
1262              
1263             Setting this to I<true> will:
1264              
1265             =over 4
1266              
1267             =item *
1268              
1269             inhibit uploading to CPAN,
1270              
1271             =item *
1272              
1273             inhibit git checking, tagging, commiting, and pushing,
1274              
1275             =item *
1276              
1277             inhibit checking the F<Changes> file,
1278              
1279             =item *
1280              
1281             include a minor version number (e.g., C<_001>) in the version string (see L</make_minor_release>).
1282              
1283             =back
1284              
1285             When releasing, the L</run_after_release> code is still run so you can
1286             use this flag to I<release> a development version locally for further
1287             use or testing, without e.g., fixing a new major version number.
1288              
1289             C<local>, C<local_only>, and C<local_release> are synonyms for
1290             this setting.
1291              
1292             Default: I<false>
1293              
1294             =head2 make_minor_release
1295              
1296             If the version string does not yet have a minor release number, this will add one with the value of C<_001>.
1297              
1298             C<minor>, C<minor_release>, and C<make_minor> are synonyms for this
1299             setting.
1300              
1301             Default: value of L</local_release_only>
1302              
1303             Note: Overridden by L</make_major_release>.
1304              
1305             =head2 make_major_release
1306              
1307             Removes any minor version from the version string.
1308              
1309             C<major>, C<major_release>, and C<make_major> are synonyms for this
1310             setting.
1311              
1312             Default: I<false>
1313              
1314             Note: Overrides L</make_minor_release>.
1315              
1316             =head2 keep_version
1317              
1318             Will keep the current version number the same when building/releasing.
1319              
1320             =head2 use_makemaker
1321              
1322             Uses MakeMaker as build method.
1323              
1324             Default: I<true>
1325              
1326             Note: When both C<use_makemaker> and C<use_modulebuild> are I<false>, MakeMaker will be used!
1327              
1328             =head2 use_modulebuild
1329              
1330             Uses L<Module::Build> as build method.
1331              
1332             Default: I<false>
1333              
1334             =head2 run_after_build
1335              
1336             Specifies commands to run after the release has been built (but not yet released). Multiple
1337             L</run_after_build> commands can be specified.
1338              
1339             The commands are run from the root of your development tree and has the following special symbols available:
1340              
1341             =over 4
1342              
1343             =item *
1344              
1345             C<%d> the directory in which the distribution was built
1346              
1347             =item *
1348              
1349             C<%n> the name of the distribution
1350              
1351             =item *
1352              
1353             C<%p> path separator ('/' on Unix, '\\' on Win32... useful for cross-platform dist.ini files)
1354              
1355             =item *
1356              
1357             C<%v> the version of the distribution
1358              
1359             =item *
1360              
1361             C<%t> -TRIAL if the release is a trial release, otherwise the empty string
1362              
1363             =item *
1364              
1365             C<%x> full path to the current perl interpreter (like $^X but from Config)
1366              
1367             =back
1368              
1369             Default: I<nothing>
1370              
1371             =head2 run_after_release
1372              
1373             Specifies commands to run after the release has been made. Use it to e.g.,
1374             automatically install your distibution after releasing. Multiple
1375             run_after_release commands can be specified.
1376              
1377             The commands are run from the root of your development tree and has
1378             the same symbols available as the L</run_after_build>, plus the
1379             following:
1380              
1381             =over 4
1382              
1383             =item *
1384              
1385             C<%a> the archive of the release
1386              
1387             =back
1388              
1389             Default: C<cpanm './%d'>
1390              
1391             =head3 Examples:
1392              
1393             To install using cpanm (this is the default):
1394              
1395             run_after_release = cpanm './%d'
1396              
1397             To install using cpan:
1398              
1399             run_after_release = %x -MCPAN -einstall './%d'
1400              
1401             To not do anything:
1402              
1403             run_after_release =
1404              
1405             =head2 additional_test
1406              
1407             Additional test plugin to use. Can be used multiple times to add more
1408             than one additional test.
1409              
1410             By default the following tests are executed:
1411              
1412             =over 4
1413              
1414             =item *
1415              
1416             L<Test::Compile|Dist::Zilla::Plugin::Test::Compile> -- Checks if perl code compiles correctly
1417              
1418             =item *
1419              
1420             L<Test::Perl::Critic|Dist::Zilla::Plugin::Test::Perl::Critic> -- Checks Perl source code for best-practices
1421              
1422             =item *
1423              
1424             L<Test::EOL|Dist::Zilla::Plugin::Test::EOL> -- Checks line endings
1425              
1426             =item *
1427              
1428             L<Test::NoTabs|Dist::Zilla::Plugin::Test::NoTabs> -- Checks for the use of tabs
1429              
1430             =item *
1431              
1432             L<Test::Version|Dist::Zilla::Plugin::Test::Version> -- Checks to see if each module has the correct version set
1433              
1434             =item *
1435              
1436             L<Test::MinimumVersion|Dist::Zilla::Plugin::Test::MinimumVersion> -- Checks the minimum perl version, using L</max_target_perl>
1437              
1438             =item *
1439              
1440             L<MojibakeTests|Dist::Zilla::Plugin::MojibakeTests> -- Checks source encoding
1441              
1442             =item *
1443              
1444             L<Test::Kwalitee|Dist::Zilla::Plugin::Test::Kwalitee> -- Checks the Kwalitee
1445              
1446             =item *
1447              
1448             L<Test::Portability|Dist::Zilla::Plugin::Test::Portability> -- Checks portability of code
1449              
1450             =item *
1451              
1452             L<Test::UnusedVars|Dist::Zilla::Plugin::Test::UnusedVars> -- Checks for unused variables
1453              
1454             =item *
1455              
1456             L<Test::CPAN::Changes|Dist::Zilla::Plugin::Test::CPAN::Changes> -- Validation of the Changes file
1457              
1458             =item *
1459              
1460             L<Test::DistManifest|Dist::Zilla::Plugin::Test::DistManifest> -- Validation of the MANIFEST file
1461              
1462             =item *
1463              
1464             L<Test::CPAN::Meta::JSON|Dist::Zilla::Plugin::Test::CPAN::Meta::JSON> -- Validation of the META.json file -- only when hosted on GitHub
1465              
1466             =item *
1467              
1468             L<MetaTests|Dist::Zilla::Plugin::MetaTests> -- Validation of the META.yml file -- only when hosted on GitHub
1469              
1470             =item *
1471              
1472             L<PodSyntaxTests|Dist::Zilla::Plugin::PodSyntaxTests> -- Checks pod syntax
1473              
1474             =item *
1475              
1476             L<PodCoverageTests|Dist::Zilla::Plugin::PodCoverageTests> -- Checks pod coverage
1477              
1478             =item *
1479              
1480             L<Test::Pod::LinkCheck|Dist::Zilla::Plugin::Test::Pod::LinkCheck> -- Checks pod links
1481              
1482             =item *
1483              
1484             L<Test::Synopsis|Dist::Zilla::Plugin::Test::Synopsis> -- Checks the pod synopsis
1485              
1486             =back
1487              
1488             =head2 disable_test
1489              
1490             Specifies the test you don't want to be run. Can bu used more than
1491             once to disable multiple tests.
1492              
1493             Default: I<none> (i.e., run all default and L</additional_test> tests).
1494              
1495             =head2 max_target_perl
1496              
1497             Defines the highest minimum version of perl you intend to require.
1498             This is passed to L<Test::MinimumVersion|Dist::Zilla::Plugin::Test::MinimumVersion>, which generates
1499             a F<minimum-version.t> test that'll warn you if you accidentally used features
1500             from a higher version of perl than you wanted. (Having a lower required version
1501             of perl is okay.)
1502              
1503             Default: C<5.006>
1504              
1505             =head2 surgical
1506              
1507             If this is set to I<true>,
1508             L<SurgicalPodWeaver|Dist::Zilla::Plugin::SurgicalPodWeaver> is used
1509             instead of the standard L<PodWeaver|Dist::Zilla::Plugin::PodWeaver>
1510             plugin. L<SurgicalPodWeaver|Dist::Zilla::Plugin::SurgicalPodWeaver>
1511             only munges files that contain either a C<# ABSTRACT> or a C<#
1512             Dist::Zilla: +PodWeaver> line.
1513              
1514             Default: I<false>
1515              
1516             =head2 weaver_config
1517              
1518             Specifies the configuration for L<Pod::Weaver>.
1519              
1520             Default: C<@Author::HAYOBAAN>.
1521              
1522             =head2 tag_format
1523              
1524             Specifies the format for tagging a release (see
1525             L<Git::Tag|Dist::Zilla::Plugin::Git::Tag> for details).
1526              
1527             Default: C<v%v%t>
1528              
1529             =head2 version_regexp
1530              
1531             Specifies the regexp for versions (see
1532             L<Git::NextVersion|Dist::Zilla::Plugin::Git::NextVersion> for details).
1533              
1534             Default: C<^v?([\d.]+(?:_\d+)?)(?:-TRIAL)?$>
1535              
1536             Note: Only used in case of git version controlled repositories
1537             (L<AutoVersion|Dist::Zilla::Plugin::AutoVersion> is used in case of
1538             non-git version controlled repositories).
1539              
1540             =for Pod::Coverage mvp_multivalue_args mvp_aliases
1541              
1542             =for Pod::Coverage configure
1543              
1544             =head1 BUGS
1545              
1546             Please report any bugs or feature requests on the bugtracker
1547             L<website|https://github.com/HayoBaan/Dist-Zilla-PluginBundle-Author-HAYOBAAN/issues>.
1548              
1549             When submitting a bug or request, please include a test-file or a
1550             patch to an existing test-file that illustrates the bug or desired
1551             feature.
1552              
1553             =head1 CREDITS
1554              
1555             I took inspiration from many people's L<Dist::Zilla> and L<Pod::Weaver> PluginBundles. Most notably from:
1556              
1557             =over 4
1558              
1559             =item *
1560              
1561             David Golden L<DAGOLDEN|Dist::Zilla::PluginBundle::DAGOLDEN>
1562              
1563             =item *
1564              
1565             Mike Doherty L<DOHERTY|Dist::Zilla::PluginBundle::Author::DOHERTY>
1566              
1567             =back
1568              
1569             =head1 AUTHOR
1570              
1571             Hayo Baan <info@hayobaan.com>
1572              
1573             =head1 COPYRIGHT AND LICENSE
1574              
1575             This software is copyright (c) 2014 by Hayo Baan.
1576              
1577             This is free software; you can redistribute it and/or modify it under
1578             the same terms as the Perl 5 programming language system itself.
1579              
1580             =cut