File Coverage

blib/lib/Dist/Zilla/PluginBundle/Author/HAYOBAAN.pm
Criterion Covered Total %
statement 50 52 96.1
branch 28 56 50.0
condition 6 18 33.3
subroutine 13 13 100.0
pod 0 3 0.0
total 97 142 68.3


line stmt bran cond sub pod time code
1             package Dist::Zilla::PluginBundle::Author::HAYOBAAN;
2 1     1   3198727 use 5.010; # For // operator
  1         5  
3 1     1   8 use strict;
  1         4  
  1         39  
4 1     1   7 use warnings;
  1         3  
  1         98  
5              
6             # ABSTRACT: Hayo Baan's Dist::Zilla configuration
7             our $VERSION = '0.014'; # 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> (and 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<Dist::Zilla::Plugin::MetaYAML>
26             #pod * L<License|Dist::Zilla::Plugin::License>
27             #pod * L<InstallGuide|Dist::Zilla::Plugin::InstallGuide>
28             #pod * L<MinimumPerl|Dist::Zilla::Plugin::MinimumPerl>
29             #pod * L<AutoPrereqs|Dist::Zilla::Plugin::AutoPrereqs>
30             #pod * L<MetaNoIndex|Dist::Zilla::Plugin::MetaNoIndex>
31             #pod * L<GitHub::Meta|Dist::Zilla::Plugin::GitHub::Meta>
32             #pod * L<MetaJSON|Dist::Zilla::Plugin::MetaJSON>
33             #pod * L<MetaYAML|Dist::Zilla::Plugin::MetaYAML>
34             #pod * L<MetaProvides::Package|Dist::Zilla::Plugin::MetaProvides::Package>
35             #pod * L<MetaProvides::Class|Dist::Zilla::Plugin::MetaProvides::Class>
36             #pod * L<ExecDir|Dist::Zilla::Plugin::ExecDir>
37             #pod * L<ShareDir|Dist::Zilla::Plugin::ShareDir>
38             #pod * L<MakeMaker|Dist::Zilla::Plugin::MakeMaker> (default)
39             #pod * L<ModuleBuild|Dist::Zilla::Plugin::ModuleBuild> (optional)
40             #pod * L<Manifest|Dist::Zilla::Plugin::Manifest>
41             #pod * L<CopyFilesFromBuild|Dist::Zilla::Plugin::CopyFilesFromBuild>
42             #pod * L<Run::AfterBuild|Dist::Zilla::Plugin::Run::AfterBuild>
43             #pod * L<GitHubREADME::Badge|Dist::Zilla::Plugin::GitHubREADME::Badge>
44             #pod * L<CheckChangesHasContent|Dist::Zilla::Plugin::CheckChangesHasContent>
45             #pod * L<Git::CheckFor::CorrectBranch|Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch>
46             #pod * L<Git::Check|Dist::Zilla::Plugin::Git::Check>
47             #pod * L<CheckMetaResources|Dist::Zilla::Plugin::CheckMetaResources>
48             #pod * L<CheckPrereqsIndexed|Dist::Zilla::Plugin::CheckPrereqsIndexed>
49             #pod * L<Test::Compile|Dist::Zilla::Plugin::Test::Compile>
50             #pod * L<Test::Perl::Critic|Dist::Zilla::Plugin::Test::Perl::Critic>
51             #pod * L<Test::EOL|Dist::Zilla::Plugin::Test::EOL>
52             #pod * L<Test::NoTabs|Dist::Zilla::Plugin::Test::NoTabs>
53             #pod * L<Test::Version|Dist::Zilla::Plugin::Test::Version>
54             #pod * L<Test::MinimumVersion|Dist::Zilla::Plugin::Test::MinimumVersion>
55             #pod * L<MojibakeTests|Dist::Zilla::Plugin::MojibakeTests>
56             #pod * L<Test::Kwalitee|Dist::Zilla::Plugin::Test::Kwalitee>
57             #pod * L<Test::Portability|Dist::Zilla::Plugin::Test::Portability>
58             #pod * L<Test::UnusedVars|Dist::Zilla::Plugin::Test::UnusedVars>
59             #pod * L<Test::CPAN::Changes|Dist::Zilla::Plugin::Test::CPAN::Changes>
60             #pod * L<Test::DistManifest|Dist::Zilla::Plugin::Test::DistManifest>
61             #pod * L<Test::CPAN::Meta::JSON|Dist::Zilla::Plugin::Test::CPAN::Meta::JSON>
62             #pod * L<MetaTests|Dist::Zilla::Plugin::MetaTests>
63             #pod * L<PodSyntaxTests|Dist::Zilla::Plugin::PodSyntaxTests>
64             #pod * L<PodCoverageTests|Dist::Zilla::Plugin::PodCoverageTests>
65             #pod * L<Author::HAYOBAAN::LinkCheck|Dist::Zilla::Plugin::Author::HAYOBAAN::LinkCheck>
66             #pod * L<Test::Synopsis|Dist::Zilla::Plugin::Test::Synopsis>
67             #pod * L<TestRelease|Dist::Zilla::Plugin::TestRelease>
68             #pod * L<RunExtraTests|Dist::Zilla::Plugin::RunExtraTests>
69             #pod * L<ConfirmRelease|Dist::Zilla::Plugin::ConfirmRelease>
70             #pod * L<UploadToCPAN|Dist::Zilla::Plugin::UploadToCPAN>
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   810 use Getopt::Long;
  1         10824  
  1         6  
134              
135 1     1   189 use Moose 0.99;
  1         22  
  1         10  
136 1     1   7612 use namespace::autoclean 0.09;
  1         23  
  1         9  
137 1     1   91 use Dist::Zilla 5.014; # default_jobs
  1         22  
  1         87  
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   664 use Dist::Zilla::Plugin::ReadmeAnyFromPod 0.161150;
  1         188964  
  1         2362  
145             require Dist::Zilla::Plugin::MetaYAML;
146             require Dist::Zilla::Plugin::InstallGuide;
147             require Dist::Zilla::Plugin::MinimumPerl;
148             require Dist::Zilla::Plugin::GitHub::Meta;
149             require Dist::Zilla::Plugin::MetaProvides::Package;
150             require Dist::Zilla::Plugin::MetaProvides::Class;
151             require Dist::Zilla::Plugin::CopyFilesFromBuild;
152             require Dist::Zilla::Plugin::Run;
153             require Dist::Zilla::Plugin::GitHubREADME::Badge;
154             require Dist::Zilla::Plugin::CheckChangesHasContent;
155             require Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch;
156             require Dist::Zilla::Plugin::Git::Check;
157             require Dist::Zilla::Plugin::CheckMetaResources;
158             require Dist::Zilla::Plugin::CheckPrereqsIndexed;
159             require Dist::Zilla::Plugin::Test::Compile;
160             require Dist::Zilla::Plugin::Test::Perl::Critic;
161             require Test::Perl::Critic;
162             require Dist::Zilla::Plugin::Test::EOL;
163             require Dist::Zilla::Plugin::Test::NoTabs;
164             require Dist::Zilla::Plugin::Test::Version;
165             require Dist::Zilla::Plugin::Test::MinimumVersion;
166             require Dist::Zilla::Plugin::MojibakeTests;
167             require Dist::Zilla::Plugin::Test::Kwalitee;
168             require Dist::Zilla::Plugin::Test::Portability;
169             require Dist::Zilla::Plugin::Test::UnusedVars;
170             require Dist::Zilla::Plugin::Test::CPAN::Changes;
171             require Dist::Zilla::Plugin::Test::DistManifest;
172             require Dist::Zilla::Plugin::Test::CPAN::Meta::JSON;
173             require Test::CPAN::Meta::JSON;
174             require Test::CPAN::Meta;
175             require Test::Pod::Coverage;
176             require Pod::Coverage::TrustPod;
177             require Dist::Zilla::Plugin::Author::HAYOBAAN::LinkCheck;
178             require Pod::Weaver::PluginBundle::Author::HAYOBAAN;
179             require Pod::Weaver::Section::Author::HAYOBAAN::Bugs;
180             require Dist::Zilla::Plugin::Test::Synopsis;
181             require Dist::Zilla::Plugin::RunExtraTests;
182             require Dist::Zilla::Plugin::Git::Commit;
183             require Dist::Zilla::Plugin::Git::Tag;
184             require Dist::Zilla::Plugin::Git::Push;
185             require Dist::Zilla::Plugin::GitHub::Update;
186             require Dist::Zilla::Plugin::Clean;
187              
188 1     1 0 255 sub mvp_multivalue_args { return qw(git_remote run_after_build run_after_release additional_test disable_test) }
189              
190             sub mvp_aliases {
191             return {
192 1     1 0 187 local => "local_release_only",
193             local_only => "local_release_only",
194             local_release => "local_release_only",
195             minor => "make_minor_release",
196             minor_relase => "make_minor_release",
197             make_minor => "make_minor_release",
198             major => "make_major_release",
199             major_relase => "make_major_release",
200             make_major => "make_major_release",
201             }
202             }
203              
204             #pod =for Pod::Coverage mvp_multivalue_args mvp_aliases
205             #pod
206             #pod =attr is_cpan
207             #pod
208             #pod Specifies that this is a distribution that is destined for CPAN. When
209             #pod true, releases are uploaded to CPAN using
210             #pod L<UploadToCPAN|Dist::Zilla::Plugin::UploadToCPAN>. If false, releases
211             #pod are made using L<FakeRelease|Dist::Zilla::Plugin::FakeRelease>.
212             #pod
213             #pod Default: I<false>.
214             #pod
215             #pod =cut
216              
217             has is_cpan => (
218             is => 'ro',
219             isa => 'Bool',
220             lazy => 1,
221             default => sub { $_[0]->payload->{is_cpan} },
222             );
223              
224             #pod =attr is_github_hosted
225             #pod
226             #pod Specifies that the distribution's repository is hosted on GitHub.
227             #pod
228             #pod Default: I<false> (note: setting L</is_cpan> enforces L</is_github_hosted>
229             #pod to I<true>)
230             #pod
231             #pod =cut
232              
233             has is_github_hosted => (
234             is => 'ro',
235             isa => 'Bool',
236             lazy => 1,
237             default => sub { $_[0]->payload->{is_github} || $_[0]->is_cpan },
238             );
239              
240             #pod =attr git_remote
241             #pod
242             #pod Specifies where to push the distribution on GitHub. Can be used
243             #pod multiple times to upload to multiple branches.
244             #pod
245             #pod Default: C<origin>
246             #pod
247             #pod =cut
248              
249             has git_remote => (
250             is => 'ro',
251             isa => 'ArrayRef',
252             lazy => 1,
253             default => sub { $_[0]->payload->{git_remote} // [ 'origin' ] },
254             );
255              
256             #pod =attr no_git
257             #pod
258             #pod Specifies that the distribution is not under git version control.
259             #pod
260             #pod Default: I<false> (note: setting L</is_github_hosted> enforces this
261             #pod setting to I<false>)
262             #pod
263             #pod =cut
264              
265             has no_git => (
266             is => 'ro',
267             isa => 'Bool',
268             lazy => 1,
269             default => sub { $_[0]->payload->{no_git} && !$_[0]->is_github_hosted },
270             );
271              
272             #pod =attr local_release_only
273             #pod
274             #pod Setting this to I<true> will:
275             #pod
276             #pod =for :list
277             #pod * inhibit uploading to CPAN,
278             #pod * inhibit git checking, tagging, commiting, and pushing,
279             #pod * inhibit checking the F<Changes> file,
280             #pod * include a minor version number (e.g., C<_001>) in the version string (see L</make_minor_release>).
281             #pod
282             #pod When releasing, the L</run_after_release> code is still run so you can
283             #pod use this flag to I<release> a development version locally for further
284             #pod use or testing, without e.g., fixing a new major version number.
285             #pod
286             #pod C<local>, C<local_only>, and C<local_release> are synonyms for
287             #pod this setting.
288             #pod
289             #pod Default: I<false>
290             #pod
291             #pod =cut
292              
293             has local_release_only => (
294             is => 'rw',
295             isa => 'Bool',
296             lazy => 1,
297             default => sub { $_[0]->payload->{local_release_only} }
298             );
299              
300             #pod =attr make_minor_release
301             #pod
302             #pod If the version string does not yet have a minor release number, this will add one with the value of C<_001>.
303             #pod
304             #pod C<minor>, C<minor_release>, and C<make_minor> are synonyms for this
305             #pod setting.
306             #pod
307             #pod Default: value of L</local_release_only>
308             #pod
309             #pod Note: Overridden by L</make_major_release>.
310             #pod
311             #pod =cut
312              
313             has make_minor_release => (
314             is => 'rw',
315             isa => 'Bool',
316             lazy => 1,
317             default => sub { exists $_[0]->payload->{make_minor_release} ? $_[0]->payload->{make_minor_release} : $_[0]->local_release_only }
318             );
319              
320             #pod =attr make_major_release
321             #pod
322             #pod Removes any minor version from the version string.
323             #pod
324             #pod C<major>, C<major_release>, and C<make_major> are synonyms for this
325             #pod setting.
326             #pod
327             #pod Default: I<false>
328             #pod
329             #pod Note: Overrides L</make_minor_release>.
330             #pod
331             #pod =cut
332              
333             has make_major_release => (
334             is => 'rw',
335             isa => 'Bool',
336             lazy => 1,
337             default => sub { $_[0]->payload->{make_major_release} }
338             );
339              
340             #pod =attr keep_version
341             #pod
342             #pod Will keep the current version number the same when building/releasing.
343             #pod
344             #pod =cut
345              
346             has keep_version => (
347             is => 'rw',
348             isa => 'Bool',
349             lazy => 1,
350             default => sub { $_[0]->payload->{keep_version} }
351             );
352              
353             #pod =attr use_makemaker
354             #pod
355             #pod Uses MakeMaker as build method.
356             #pod
357             #pod Default: I<true>
358             #pod
359             #pod Note: When both C<use_makemaker> and C<use_modulebuild> are I<false>, MakeMaker will be used!
360             #pod
361             #pod =cut
362              
363             has use_makemaker => (
364             is => 'rw',
365             isa => 'Bool',
366             lazy => 1,
367             default => sub { ($_[0]->payload->{use_makemaker} // 1) || !$_[0]->payload->{use_modulebuild} }
368             );
369              
370             #pod =attr use_modulebuild
371             #pod
372             #pod Uses L<Module::Build> as build method.
373             #pod
374             #pod Default: I<false>
375             #pod
376             #pod =cut
377              
378             has use_modulebuild => (
379             is => 'rw',
380             isa => 'Bool',
381             lazy => 1,
382             default => sub { $_[0]->payload->{use_modulebuild} }
383             );
384              
385             #pod =attr run_after_build
386             #pod
387             #pod Specifies commands to run after the release has been built (but not yet released). Multiple
388             #pod L</run_after_build> commands can be specified.
389             #pod
390             #pod The commands are run from the root of your development tree and has the following special symbols available:
391             #pod
392             #pod =for :list
393             #pod * C<%d> the directory in which the distribution was built
394             #pod * C<%n> the name of the distribution
395             #pod * C<%p> path separator ('/' on Unix, '\\' on Win32... useful for cross-platform dist.ini files)
396             #pod * C<%v> the version of the distribution
397             #pod * C<%t> -TRIAL if the release is a trial release, otherwise the empty string
398             #pod * C<%x> full path to the current perl interpreter (like $^X but from Config)
399             #pod
400             #pod Default: I<nothing>
401             #pod
402             #pod =cut
403              
404             has run_after_build => (
405             is => 'ro',
406             isa => 'ArrayRef',
407             lazy => 1,
408             default => sub { $_[0]->payload->{run_after_build} // [] },
409             );
410              
411             #pod =attr run_after_release
412             #pod
413             #pod Specifies commands to run after the release has been made. Use it to e.g.,
414             #pod automatically install your distibution after releasing. Multiple
415             #pod run_after_release commands can be specified.
416             #pod
417             #pod The commands are run from the root of your development tree and has
418             #pod the same symbols available as the L</run_after_build>, plus the
419             #pod following:
420             #pod
421             #pod =for :list
422             #pod * C<%a> the archive of the release
423             #pod
424             #pod Default: C<cpanm './%d'>
425             #pod
426             #pod =head3 Examples:
427             #pod
428             #pod To install using cpanm (this is the default):
429             #pod
430             #pod run_after_release = cpanm './%d'
431             #pod
432             #pod To install using cpan:
433             #pod
434             #pod run_after_release = %x -MCPAN -einstall './%d'
435             #pod
436             #pod To not do anything:
437             #pod
438             #pod run_after_release =
439             #pod
440             #pod =cut
441              
442             has run_after_release => (
443             is => 'ro',
444             isa => 'ArrayRef',
445             lazy => 1,
446             default => sub { exists $_[0]->payload->{run_after_release} ? $_[0]->payload->{run_after_release} : [ 'cpanm ./%d' ] },
447             );
448              
449             #pod =attr additional_test
450             #pod
451             #pod Additional test plugin to use. Can be used multiple times to add more
452             #pod than one additional test.
453             #pod
454             #pod By default the following tests are executed:
455             #pod
456             #pod =for :list
457             #pod * L<Test::Compile|Dist::Zilla::Plugin::Test::Compile> -- Checks if perl code compiles correctly
458             #pod * L<Test::Perl::Critic|Dist::Zilla::Plugin::Test::Perl::Critic> -- Checks Perl source code for best-practices
459             #pod * L<Test::EOL|Dist::Zilla::Plugin::Test::EOL> -- Checks line endings
460             #pod * L<Test::NoTabs|Dist::Zilla::Plugin::Test::NoTabs> -- Checks for the use of tabs
461             #pod * L<Test::Version|Dist::Zilla::Plugin::Test::Version> -- Checks to see if each module has the correct version set
462             #pod * L<Test::MinimumVersion|Dist::Zilla::Plugin::Test::MinimumVersion> -- Checks the minimum perl version, using L</max_target_perl>
463             #pod * L<MojibakeTests|Dist::Zilla::Plugin::MojibakeTests> -- Checks source encoding
464             #pod * L<Test::Kwalitee|Dist::Zilla::Plugin::Test::Kwalitee> -- Checks the Kwalitee
465             #pod * L<Test::Portability|Dist::Zilla::Plugin::Test::Portability> -- Checks portability of code
466             #pod * L<Test::UnusedVars|Dist::Zilla::Plugin::Test::UnusedVars> -- Checks for unused variables
467             #pod * L<Test::CPAN::Changes|Dist::Zilla::Plugin::Test::CPAN::Changes> -- Validation of the Changes file
468             #pod * L<Test::DistManifest|Dist::Zilla::Plugin::Test::DistManifest> -- Validation of the MANIFEST file
469             #pod * L<Test::CPAN::Meta::JSON|Dist::Zilla::Plugin::Test::CPAN::Meta::JSON> -- Validation of the META.json file -- only when hosted on GitHub
470             #pod * L<MetaTests|Dist::Zilla::Plugin::MetaTests> -- Validation of the META.yml file -- only when hosted on GitHub
471             #pod * L<PodSyntaxTests|Dist::Zilla::Plugin::PodSyntaxTests> -- Checks pod syntax
472             #pod * L<PodCoverageTests|Dist::Zilla::Plugin::PodCoverageTests> -- Checks pod coverage
473             #pod * L<LinkCheck|Dist::Zilla::Plugin::Author::HAYOBAAN::LinkCheck> -- Checks pod links
474             #pod * L<Test::Synopsis|Dist::Zilla::Plugin::Test::Synopsis> -- Checks the pod synopsis
475             #pod
476             #pod =cut
477              
478             has additional_test => (
479             is => 'ro',
480             isa => 'ArrayRef[Str]',
481             lazy => 1,
482             default => sub { $_[0]->payload->{additional_test} // [] },
483             );
484              
485             #pod =attr disable_test
486             #pod
487             #pod Specifies the test you don't want to be run. Can bu used more than
488             #pod once to disable multiple tests.
489             #pod
490             #pod Default: I<none> (i.e., run all default and L</additional_test> tests).
491             #pod
492             #pod =cut
493              
494             has disable_test => (
495             is => 'ro',
496             isa => 'ArrayRef[Str]',
497             lazy => 1,
498             default => sub { $_[0]->payload->{disable_test} // [] },
499             );
500              
501             #pod =attr max_target_perl
502             #pod
503             #pod Defines the highest minimum version of perl you intend to require.
504             #pod This is passed to L<Test::MinimumVersion|Dist::Zilla::Plugin::Test::MinimumVersion>, which generates
505             #pod a F<minimum-version.t> test that'll warn you if you accidentally used features
506             #pod from a higher version of perl than you wanted. (Having a lower required version
507             #pod of perl is okay.)
508             #pod
509             #pod Default: C<5.006>
510             #pod
511             #pod =cut
512              
513             has max_target_perl => (
514             is => 'ro',
515             isa => 'Str',
516             lazy => 1,
517             default => sub { $_[0]->payload->{max_target_perl} // '5.006' },
518             );
519              
520             #pod =attr surgical
521             #pod
522             #pod If this is set to I<true>,
523             #pod L<SurgicalPodWeaver|Dist::Zilla::Plugin::SurgicalPodWeaver> is used
524             #pod instead of the standard L<PodWeaver|Dist::Zilla::Plugin::PodWeaver>
525             #pod plugin. L<SurgicalPodWeaver|Dist::Zilla::Plugin::SurgicalPodWeaver>
526             #pod only munges files that contain either a C<# ABSTRACT> or a C<#
527             #pod Dist::Zilla: +PodWeaver> line.
528             #pod
529             #pod Default: I<false>
530             #pod
531             #pod =cut
532              
533             has surgicalpod => (
534             is => 'ro',
535             isa => 'Str',
536             lazy => 1,
537             default => sub { $_[0]->payload->{surgicalpod} // 0 },
538             );
539              
540             #pod =attr weaver_config
541             #pod
542             #pod Specifies the configuration for L<Pod::Weaver>.
543             #pod
544             #pod Default: C<@Author::HAYOBAAN>.
545             #pod
546             #pod =cut
547              
548             has weaver_config => (
549             is => 'ro',
550             isa => 'Str',
551             lazy => 1,
552             default => sub { $_[0]->payload->{weaver_config} // '@Author::HAYOBAAN' },
553             );
554              
555             #pod =attr tag_format
556             #pod
557             #pod Specifies the format for tagging a release (see
558             #pod L<Git::Tag|Dist::Zilla::Plugin::Git::Tag> for details).
559             #pod
560             #pod Default: C<v%v%t>
561             #pod
562             #pod =cut
563              
564             has tag_format => (
565             is => 'ro',
566             isa => 'Str',
567             lazy => 1,
568             default => sub { $_[0]->payload->{tag_format} // 'v%v%t' },
569             );
570              
571             #pod =attr version_regexp
572             #pod
573             #pod Specifies the regexp for versions (see
574             #pod L<Git::NextVersion|Dist::Zilla::Plugin::Git::NextVersion> for details).
575             #pod
576             #pod Default: C<^v?([\d.]+(?:_\d+)?)(?:-TRIAL)?$>
577             #pod
578             #pod Note: Only used in case of git version controlled repositories
579             #pod (L<AutoVersion|Dist::Zilla::Plugin::AutoVersion> is used in case of
580             #pod non-git version controlled repositories).
581             #pod
582             #pod =cut
583              
584             has version_regexp => (
585             is => 'ro',
586             isa => 'Str',
587             lazy => 1,
588             default => sub { $_[0]->payload->{version_regexp} // '^v?([\d.]+(?:_\d+)?)(?:-TRIAL)?$' },
589             );
590              
591             ################################################################################
592              
593             # List of files to copy to the root after they were built.
594             has copy_build_files => (
595             is => 'ro',
596             isa => 'ArrayRef[Str]',
597             lazy => 1,
598             default => sub { [ ($_[0]->use_modulebuild ? qw(Build.PL) : ()),
599             ($_[0]->use_makemaker ? qw(Makefile.PL) : ()),
600             qw(README README.mkdn) ] },
601             );
602              
603             # Files to exclude from gatherer
604             has exclude_files => (
605             is => 'ro',
606             isa => 'ArrayRef[Str]',
607             lazy => 1,
608             default => sub { [
609             @{$_[0]->copy_build_files},
610             qw(MANIFEST),
611             ] },
612             );
613              
614             # Files that can be "dirty"
615             has allow_dirty => (
616             is => 'ro',
617             isa => 'ArrayRef[Str]',
618             lazy => 1,
619             default => sub { [
620             @{$_[0]->copy_build_files},
621             qw(dist.ini Changes),
622             ] },
623             );
624              
625             # Directories that should not be indexed
626             has meta_no_index_dirs => (
627             is => 'ro',
628             isa => 'ArrayRef[Str]',
629             lazy => 1,
630             default => sub { [ qw(corpus) ] },
631             );
632              
633             sub _is_disabled {
634 16     16   30 my $self = shift;
635 16         26 my $plugin = shift;
636 16         27 return grep { $_ eq $plugin } @{$self->disable_test}
  0         0  
  16         625  
637             }
638              
639             # Helper function to add a test, checks for disabled tests
640             sub _add_test {
641 16     16   36 my $self = shift;
642 16 100       35 return grep { ! $self->_is_disabled(ref $_ ? $_->[0] : $_) } @_;
  16         41  
643             }
644              
645             #pod =for Pod::Coverage configure
646             #pod
647             #pod =cut
648              
649             sub configure {
650 1     1 0 8 my $self = shift;
651              
652             {
653             # Command-line argument processing
654              
655             # Local-relase-only
656 1         2 my $local;
  1         4  
657 1         8 GetOptions('local|local-only|local-release|local-release-only!' => \$local);
658 1 50       258 $self->local_release_only($local) if defined $local;
659              
660             # Make-minor-release
661 1         3 my $minor;
662 1         6 GetOptions('minor|minor-relase|make-minor|make-minor-release!' => \$minor);
663 1 50       140 $self->make_minor_release($minor) if defined $minor;
664              
665             # Make-major-release
666 1         2 my $major;
667 1         5 GetOptions('major|major-relase|make-major|make-major-release!' => \$major);
668 1 50       131 $self->make_major_release($major) if defined $major;
669              
670             # Keep-version
671 1         4 my $keep;
672 1         4 GetOptions('keep|keep-version!' => \$keep);
673 1 50       111 $self->keep_version($keep) if defined $keep;
674             }
675              
676             return $self->add_plugins(
677             #### Version ####
678             $self->no_git ? (
679             # Provide automatic version based on date
680             'AutoVersion'
681             ) : (
682             # Provide a version number by bumping the last git release tag
683             [
684             'Author::HAYOBAAN::NextVersion' => {
685             first_version => '0.001', # First version = 0.001
686             version_by_branch => 0, # Set to 1 if doing maintenance branch
687             version_regexp => $self->version_regexp, # Regexp for version format
688             include_minor_version => $self->make_minor_release, # Minor release?
689             remove_minor_version => $self->make_major_release, # Force major release?
690             keep_version => $self->keep_version, # Keep release number?
691             },
692             ],
693             ),
694              
695             # Adds version to file (no line insertion, using our)
696             'OurPkgVersion',
697              
698             #### Gather & Prune ####
699             # Gather files to include
700             [ $self->no_git ? 'GatherDir' : 'Git::GatherDir' => { exclude_filename => $self->exclude_files } ],
701             # Remove cruft
702             'PruneCruft',
703             # Skip files in MANIFEST.SKIP
704             'ManifestSkip',
705              
706             #### PodWeaver ####
707             # Automatically extends POD
708             [
709             ($self->surgicalpod ? 'SurgicalPodWeaver' : 'PodWeaver') => {
710             config_plugin => $self->weaver_config,
711             replacer => 'replace_with_comment',
712             post_code_replacer => 'replace_with_nothing',
713             }
714             ],
715              
716             #### Distribution Files & Metadata ####
717             # Create README and README.mkdn from POD
718             [ 'ReadmeAnyFromPod', 'Text' ],
719             [ 'ReadmeAnyFromPod', 'Markdown' ],
720              
721             $self->is_github_hosted ? (
722             # Create a LICENSE file
723             'License',
724             # Create an INSTALL file
725             'InstallGuide',
726             ) : (),
727              
728             # Automatically determine minimum perl version
729             'MinimumPerl',
730             # Automatically determine prerequisites
731             'AutoPrereqs',
732              
733             # Do not index certain dirs",
734             [ 'MetaNoIndex' => { dir => $self->meta_no_index_dirs } ],
735              
736             $self->is_github_hosted ? (
737             # Add GitHub metadata",
738             'GitHub::Meta',
739             # Add META.json",
740             'MetaJSON',
741             # Add META.yml",
742             'MetaYAML',
743             # Add provided Packages to META.*",
744             'MetaProvides::Package',
745             # Add provided Classes to META.*",
746             'MetaProvides::Class',
747             ) : (),
748              
749             #### Build System ####
750             # Install content of bin directory as executables
751             'ExecDir',
752             # Install content of share directory as sharedir
753             'ShareDir',
754             $self->use_makemaker ? (
755             # Build a Makefile.PL that uses ExtUtils::MakeMaker
756             [ 'MakeMaker', { default_jobs => 9 } ],
757             ) : (),
758             $self->use_modulebuild ? (
759             # Build a Build.PL that uses Module::Build
760             'ModuleBuild',
761             ) : (),
762              
763             # Add Manifest
764             'Manifest',
765              
766             #### After Build ####
767             # Copy/move specific files after building them
768             [ 'CopyFilesFromBuild' => { copy => $self->copy_build_files } ],
769              
770 1         42 @{$self->run_after_build} ? (
771             # Run specified commands
772             [ 'Run::AfterBuild' => { run => $self->run_after_build } ],
773             ) : (),
774              
775             $self->is_github_hosted && $self->is_cpan ? (
776             # Add status badges to README.mkdn
777             [ 'GitHubREADME::Badge' => { ':version' => '0.16', badges => [ qw(travis cpants) ] } ],
778             ) : (),
779              
780             #### Before Release Tests ####
781             !$self->local_release_only ? (
782             # Check if Changes file has content
783             'CheckChangesHasContent',
784             ) : (),
785              
786             !$self->no_git && !$self->local_release_only ? (
787             # Check if we're on the correct git branch
788             'Git::CheckFor::CorrectBranch',
789             # Check git repository for uncommitted files before releasing
790             [ 'Git::Check' => { allow_dirty => $self->allow_dirty } ],
791             $self->is_cpan ? (
792             # Check resources section of meta files
793             'CheckMetaResources',
794             # Check if prereqs are available on CPAN
795             'CheckPrereqsIndexed',
796             ) : (),
797             ) : (),
798              
799             # Extra test (gatherdir)
800             # Checks if perl code compiles correctly
801             $self->_add_test('Test::Compile'),
802              
803             # Extra tests (author)
804             # Checks Perl source code for best-practices
805             $self->_add_test('Test::Perl::Critic'),
806             # Checks line endings
807             $self->_add_test('Test::EOL'),
808             # Checks for the use of tabs
809             $self->_add_test('Test::NoTabs'),
810              
811             # Extra tests (release)
812             # Checks to see if each module has the correct version set
813             $self->_add_test('Test::Version'),
814             # Checks the minimum perl version
815             $self->_add_test([ 'Test::MinimumVersion' => { max_target_perl => $self->max_target_perl } ]),
816             # Checks source encoding
817             $self->_add_test('MojibakeTests'),
818             # Checks the Kwalitee
819             $self->_add_test([ 'Test::Kwalitee' => { $self->is_github_hosted ? () : (skiptest => [ qw(has_meta_yml) ]) } ]),
820             # Checks portability of code
821             $self->_add_test('Test::Portability'),
822             # Checks for unused variables
823             $self->_add_test('Test::UnusedVars'),
824             !$self->local_release_only ? (
825             # Validation of the Changes file
826             $self->_add_test('Test::CPAN::Changes'),
827             ) : (),
828             # Validation of the MANIFEST file
829             $self->_add_test('Test::DistManifest'),
830              
831             $self->is_github_hosted ? (
832             # Validation of the META.json file
833             $self->_add_test('Test::CPAN::Meta::JSON'),
834             # Validation of the META.yml file
835             $self->_add_test('MetaTests'),
836             ) : (),
837              
838             # Checks pod syntax
839             $self->_add_test('PodSyntaxTests'),
840             # Checks pod coverage
841             $self->_add_test('PodCoverageTests'),
842             # Checks pod links
843             $self->_add_test('Author::HAYOBAAN::LinkCheck'),
844             # Checks the pod synopsis
845             $self->_add_test('Test::Synopsis'),
846              
847             # Add the additional tests specified
848 1         42 @{$self->additional_test} ? $self->_add_test(@{$self->additional_test}) : (),
  0         0  
849              
850             #### Run tests ####
851             # Run provided tests in /t directory before releasing
852             'TestRelease',
853             # Run the extra tests
854             [ 'RunExtraTests' => { default_jobs => 9 } ],
855              
856             #### Release ####
857             !$self->local_release_only ? (
858             # Prompt for confirmation before releasing
859             'ConfirmRelease',
860             ) : (),
861             $self->is_cpan && !$self->local_release_only ? (
862             # Upload release to CPAN,
863             'UploadToCPAN',
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     48 @{$self->run_after_release} ? (
  1 50 33     57  
    50 33        
    50 33        
    50 33        
    50 33        
    50          
    50          
    50          
    50          
    0          
    50          
    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.014
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> (and 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<Dist::Zilla::Plugin::MetaYAML>
971              
972             =item *
973              
974             L<License|Dist::Zilla::Plugin::License>
975              
976             =item *
977              
978             L<InstallGuide|Dist::Zilla::Plugin::InstallGuide>
979              
980             =item *
981              
982             L<MinimumPerl|Dist::Zilla::Plugin::MinimumPerl>
983              
984             =item *
985              
986             L<AutoPrereqs|Dist::Zilla::Plugin::AutoPrereqs>
987              
988             =item *
989              
990             L<MetaNoIndex|Dist::Zilla::Plugin::MetaNoIndex>
991              
992             =item *
993              
994             L<GitHub::Meta|Dist::Zilla::Plugin::GitHub::Meta>
995              
996             =item *
997              
998             L<MetaJSON|Dist::Zilla::Plugin::MetaJSON>
999              
1000             =item *
1001              
1002             L<MetaYAML|Dist::Zilla::Plugin::MetaYAML>
1003              
1004             =item *
1005              
1006             L<MetaProvides::Package|Dist::Zilla::Plugin::MetaProvides::Package>
1007              
1008             =item *
1009              
1010             L<MetaProvides::Class|Dist::Zilla::Plugin::MetaProvides::Class>
1011              
1012             =item *
1013              
1014             L<ExecDir|Dist::Zilla::Plugin::ExecDir>
1015              
1016             =item *
1017              
1018             L<ShareDir|Dist::Zilla::Plugin::ShareDir>
1019              
1020             =item *
1021              
1022             L<MakeMaker|Dist::Zilla::Plugin::MakeMaker> (default)
1023              
1024             =item *
1025              
1026             L<ModuleBuild|Dist::Zilla::Plugin::ModuleBuild> (optional)
1027              
1028             =item *
1029              
1030             L<Manifest|Dist::Zilla::Plugin::Manifest>
1031              
1032             =item *
1033              
1034             L<CopyFilesFromBuild|Dist::Zilla::Plugin::CopyFilesFromBuild>
1035              
1036             =item *
1037              
1038             L<Run::AfterBuild|Dist::Zilla::Plugin::Run::AfterBuild>
1039              
1040             =item *
1041              
1042             L<GitHubREADME::Badge|Dist::Zilla::Plugin::GitHubREADME::Badge>
1043              
1044             =item *
1045              
1046             L<CheckChangesHasContent|Dist::Zilla::Plugin::CheckChangesHasContent>
1047              
1048             =item *
1049              
1050             L<Git::CheckFor::CorrectBranch|Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch>
1051              
1052             =item *
1053              
1054             L<Git::Check|Dist::Zilla::Plugin::Git::Check>
1055              
1056             =item *
1057              
1058             L<CheckMetaResources|Dist::Zilla::Plugin::CheckMetaResources>
1059              
1060             =item *
1061              
1062             L<CheckPrereqsIndexed|Dist::Zilla::Plugin::CheckPrereqsIndexed>
1063              
1064             =item *
1065              
1066             L<Test::Compile|Dist::Zilla::Plugin::Test::Compile>
1067              
1068             =item *
1069              
1070             L<Test::Perl::Critic|Dist::Zilla::Plugin::Test::Perl::Critic>
1071              
1072             =item *
1073              
1074             L<Test::EOL|Dist::Zilla::Plugin::Test::EOL>
1075              
1076             =item *
1077              
1078             L<Test::NoTabs|Dist::Zilla::Plugin::Test::NoTabs>
1079              
1080             =item *
1081              
1082             L<Test::Version|Dist::Zilla::Plugin::Test::Version>
1083              
1084             =item *
1085              
1086             L<Test::MinimumVersion|Dist::Zilla::Plugin::Test::MinimumVersion>
1087              
1088             =item *
1089              
1090             L<MojibakeTests|Dist::Zilla::Plugin::MojibakeTests>
1091              
1092             =item *
1093              
1094             L<Test::Kwalitee|Dist::Zilla::Plugin::Test::Kwalitee>
1095              
1096             =item *
1097              
1098             L<Test::Portability|Dist::Zilla::Plugin::Test::Portability>
1099              
1100             =item *
1101              
1102             L<Test::UnusedVars|Dist::Zilla::Plugin::Test::UnusedVars>
1103              
1104             =item *
1105              
1106             L<Test::CPAN::Changes|Dist::Zilla::Plugin::Test::CPAN::Changes>
1107              
1108             =item *
1109              
1110             L<Test::DistManifest|Dist::Zilla::Plugin::Test::DistManifest>
1111              
1112             =item *
1113              
1114             L<Test::CPAN::Meta::JSON|Dist::Zilla::Plugin::Test::CPAN::Meta::JSON>
1115              
1116             =item *
1117              
1118             L<MetaTests|Dist::Zilla::Plugin::MetaTests>
1119              
1120             =item *
1121              
1122             L<PodSyntaxTests|Dist::Zilla::Plugin::PodSyntaxTests>
1123              
1124             =item *
1125              
1126             L<PodCoverageTests|Dist::Zilla::Plugin::PodCoverageTests>
1127              
1128             =item *
1129              
1130             L<Author::HAYOBAAN::LinkCheck|Dist::Zilla::Plugin::Author::HAYOBAAN::LinkCheck>
1131              
1132             =item *
1133              
1134             L<Test::Synopsis|Dist::Zilla::Plugin::Test::Synopsis>
1135              
1136             =item *
1137              
1138             L<TestRelease|Dist::Zilla::Plugin::TestRelease>
1139              
1140             =item *
1141              
1142             L<RunExtraTests|Dist::Zilla::Plugin::RunExtraTests>
1143              
1144             =item *
1145              
1146             L<ConfirmRelease|Dist::Zilla::Plugin::ConfirmRelease>
1147              
1148             =item *
1149              
1150             L<UploadToCPAN|Dist::Zilla::Plugin::UploadToCPAN>
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<LinkCheck|Dist::Zilla::Plugin::Author::HAYOBAAN::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