Dist::Zilla::PluginBundle::Author::AMON - dzil config choices by AMON
# in dist.ini [@Author::AMON] github = example-user/example-repo autogenerate_file = Build.PL ; github_issues = 1 ; exclude_author_deps = inc::Example ; gather_exclude_file = TODO.txt ; gather_exclude_match = ^scripts/ ; ppport = src/ppport.h
This module contains a starting point for AMON's dist.ini. There are a couple of more or less sensible defaults (like pointing metadata at Github, or only gathering files tracked by Git) and a number of valuable checks so that I mess up fewer CPAN releases (like checking that the Changes file was updated.) There are also a few convenience features (like not gathering files that will be generated by the build process.)
Decisions not currently made by this module:
Which build system to use (e.g. Module::Build vs. MakeMaker).
How the version number is managed (e.g. taken from the module with [VersionFromMainModule]).
How prereqs are found. Simply using [AutoPrereqs] is likely to be correct.
All this may change in a future release without prior notice, and will not be seen as a backwards-incompatible change.
The name of a GitHub repository in the format <user>/<repo>. This is used to set the repo and user fields in [GithubMeta].
<user>/<repo>
Required string.
Whether Github Issues should be used as the bugtracker. If not, bugtracker info needs to be added manually.
Optional boolean. Defaults to true.
Exclude authordeps prereqs. This module will add your "dzil authordeps" via [Prereqs::AuthorDeps]. List any modules that should not be required, e.g. because they are bundled as "inc/" modules.
Optional string. Can be specified multiple times. Defaults to empty list.
Filenames that should not be gathered. Use gather_exclude_match to exclude all files matching a pattern, e.g. a whole directory. Use autogenerate_file to exclude files that will be copied from the built dist.
A regex to match filenames that should not be gathered. Use gather_exclude_file to exclude single files. Use autogenerate_file to exclude files that will be copied from the built dist.
Files that should be copied from the built dist. These won't be gathered. After the build phase, they will be copied into your source tree. Use gather_exclude_file or gather_exclude_match to exclude files, without copying them from the built dist.
The following files will be copied or autogenerated without having to add them to this configuration option:
LICENSE as generated by the [License] plugin.
LICENSE
cpanfile as generated by the [CPANFile] plugin.
cpanfile
README.md as generated by the [ReadmeAnyFromPod] plugin.
README.md
ppport.h if specified (see the ppport option).
ppport.h
Add a ppport.h file under the specified path. The value of this option is the path/filename where the ppport.h should be placed. E.g.:
... ppport = src/ppport.h
Optional string or undef. Defaults to undef.
The plugins are configured in thematic groups. Each group is a method that can be overridden in subclasses of this bundle.
configure_meta
configure_prereqs
configure_gather
configure_extra_files
configure_extra_tests
configure_post_build
configure_pre_release
(configure_release)
A minimum release workflow is hardcoded:
[TestRelease] [ConfirmRelease] [UploadToCPAN]
configure_post_release
Add metadata.
[GithubMeta] user = {{github.user}} repo = {{github.repo}} issues = {{github_issues}}
Plugins: GithubMeta.
Configuration options: github, github_issues.
Specify prerequisites.
[Prereqs::AuthorDeps] ; exclude = {{exclude_author_deps}}
Plugins: Prereqs::AuthorDeps.
Configuration options: exclude_author_deps.
Gather files to be included in the dist.
[Git::GatherDir] ; exclude_match = {{gather_exclude_match}} ; exclude_filename = {{gather_exclude_file}} ; exclude_filename = {{autogenerate_file}} ; exclude_filename = {{ppport}} [PruneCruft]
Plugins: Git::GatherDir, PruneCruft.
Configuration options: gather_exclude_file, gather_exclude_match, autogenerate_file, ppport.
Autogenerate certain files in the dist.
; [NextRelease] [CPANFile] [MetaYAML] [MetaJSON] [MetaProvides::Package] [Manifest] [License] [Readme] ; [PPPort] ; filename = {{ppport}}
Plugins: [CPANFile], [MetaYAML], [MetaJSON], [MetaProvides::Package], [Manifest], [License], [Readme], [PPPort].
Configuration options: ppport.
Add extra tests, particularly author tests focussed on release quality.
[Test::Perl::Critic] [PodSyntaxTests] [PodCoverageTests] [Test::Kwalitee::Extra] [RunExtraTests]
Plugins: [Test::Perl::Critic], [PodSyntaxTests], [PodCoverageTests], [Test::Kwalitee::Extra], [RunExtraTests].
Post-build actions, such as copying generated files into the source tree.
[CopyFilesFromBuild copy = {{autogenerate_file}} ; copy = {{ppport}} [ReadmeAnyFromPod] type = markdown filename = README.md location = root phase = build
Plugins: [CopyFilesFromBuild], [ReadmeAnyFromPod].
Configuration options: autogenerate_file, ppport.
Run pre-release checks.
[Git::CheckFor::CorrectBranch] [Git::Check] [CheckChangesHasContent] [CheckVersionIncrement]
Plugins: [Git::CheckFor::CorrectBranch], [Git::Check], [CheckChangesHasContent], [CheckVersionIncrement].
Perform post-release bookkeeping.
[NextRelease] time_zone = UTC [Git::Commit] commit_msg = release-%v [Git::Tag] tag_format = release-%v tag_message = release-%v [Git::Push]
Plugins: [NextRelease], [Git::Commit], [Git::Tag], [Git::Push].
Homepage: https://github.com/latk/p5-Dist-Zilla-PluginBundle-Author-AMON
Bugtracker: https://github.com/latk/p5-Dist-Zilla-PluginBundle-Author-AMON/issues
amon - Lukas Atkinson (cpan: AMON) <amon@cpan.org>
Copyright 2017 Lukas Atkinson
This library is free software and may be distributed under the same terms as perl itself. See http://dev.perl.org/licenses/.
To install Dist::Zilla::PluginBundle::Author::AMON, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Dist::Zilla::PluginBundle::Author::AMON
CPAN shell
perl -MCPAN -e shell install Dist::Zilla::PluginBundle::Author::AMON
For more information on module installation, please visit the detailed CPAN module installation guide.