The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Dist::Zilla::PluginBundle::Author::AMON - dzil config choices by AMON

SYNOPSIS

    # 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

DESCRIPTION

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.

CONFIGURATION

github

The name of a GitHub repository in the format <user>/<repo>. This is used to set the repo and user fields in [GithubMeta].

Required string.

github_issues

Whether Github Issues should be used as the bugtracker. If not, bugtracker info needs to be added manually.

Optional boolean. Defaults to true.

exclude_author_deps

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.

gather_exclude_file

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.

Optional string. Can be specified multiple times. Defaults to empty list.

gather_exclude_match

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.

Optional string. Can be specified multiple times. Defaults to empty list.

autogenerate_file

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.

  • cpanfile as generated by the [CPANFile] plugin.

  • README.md as generated by the [ReadmeAnyFromPod] plugin.

  • ppport.h if specified (see the ppport option).

Optional string. Can be specified multiple times. Defaults to empty list.

ppport

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.

PLUGINS

The plugins are configured in thematic groups. Each group is a method that can be overridden in subclasses of this bundle.

configure_meta

Add metadata.

    [GithubMeta]
    user = {{github.user}}
    repo = {{github.repo}}
    issues = {{github_issues}}

Plugins: GithubMeta.

Configuration options: github, github_issues.

configure_prereqs

Specify prerequisites.

    [Prereqs::AuthorDeps]
    ; exclude = {{exclude_author_deps}}

Plugins: Prereqs::AuthorDeps.

Configuration options: exclude_author_deps.

configure_gather

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.

configure_extra_files

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.

configure_extra_tests

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].

configure_post_build

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.

configure_pre_release

Run pre-release checks.

    [Git::CheckFor::CorrectBranch]
    [Git::Check]
    [CheckChangesHasContent]
    [CheckVersionIncrement]

Plugins: [Git::CheckFor::CorrectBranch], [Git::Check], [CheckChangesHasContent], [CheckVersionIncrement].

configure_post_release

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].

SUPPORT

Homepage: https://github.com/latk/p5-Dist-Zilla-PluginBundle-Author-AMON

Bugtracker: https://github.com/latk/p5-Dist-Zilla-PluginBundle-Author-AMON/issues

AUTHOR

amon - Lukas Atkinson (cpan: AMON) <amon@cpan.org>

COPYRIGHT

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/.