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

NAME

Dist::Zilla::PluginBundle::Author::LXP - configure Dist::Zilla like LXP

VERSION

This module is part of distribution Dist-Zilla-PluginBundle-Author-LXP v1.0.1.

This distribution's version numbering follows the conventions defined at semver.org.

SYNOPSIS

In dist.ini:

    [@Author::LXP]

DESCRIPTION

This Dist::Zilla plugin bundle configures Dist::Zilla the way CPAN author LXP uses it, achieving the same result as these entries in a dist.ini file:

    ;; PHASE: METADATA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ; Don't allow PAUSE/CPAN to index test libraries.  Not sure whether
    ; this is strictly needed, but better safe than sorry...
    [MetaNoIndex]
    directory = t

    ; More of the same thing.  Must appear after MetaNoIndex
    ; configuration.
    [MetaProvides::Package]
    meta_noindex = 1

    ;; PHASE: GATHER FILES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ; Without a GatherDir plugin, Dist::Zilla sees no files.
    [GatherDir]

    ; Add a LICENSE file to the build.  The generated POD for each
    ; module will also reference this file.
    [License]

    ; Distributions released to the CPAN include a META.json/META.yml
    ; file.  Emit both of these.
    [MetaJSON]
    [MetaYAML]

    ; Add a MANIFEST file.
    [Manifest]

    ; Add a test to ensure that all of the source code actually
    ; compiles.
    [Test::Compile]

    ; Test that everything has a $VERSION defined.
    [Test::Version]

    ; Ensure that everything is appropriately documented...
    [PodCoverageTests]

    ; ...and properly...
    [PodSyntaxTests]

    ; ...and without typos.  "semver" is added to each file by a plugin
    ; defined in Pod::Weaver::PluginBundle::Author::LXP (see PodWeaver
    ; configuration below), so explicitly whitelist that "word" here.
    [Test::PodSpelling]
    stopwords = semver

    ; Test correctness of the META.yml file.
    [MetaTests]

    ; Add some more tests for source code formatting.
    [Test::EOL]
    [NoTabsTests]

    ; Assess the distribution's readiness for CPAN.
    [Test::Kwalitee]

    ;; PHASE: PRUNE FILES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ; GatherDir...but we don't want to include old builds within new
    ; ones.
    [PruneCruft]

    ; See also: ReadmeAnyFromPod configurations below, apparently.

    ;; PHASE: MUNGE FILES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ; Write a $VERSION declaration into each module.
    [PkgVersion]

    ; Rewrite POD into complete documents.
    [PodWeaver]
    config_plugin = @Author::LXP

    ; On build, update the version number in the built Changes file.
    ; After release, create a new section in the source Changes file.
    ; Conform to the date/time format specified by CPAN::Changes::Spec.
    [NextRelease]
    format = %-7v %{yyyy-MM-dd}d
    time_zone = UTC

    ; All of the extra tests need to be moved into the main test
    ; directory of the build in order to run.
    [ExtraTests]

    ;; PHASE: REGISTER PREREQUISITES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ; See also: PodCoverageTests configuration above.
    ; See also: PodSyntaxTests configuration above.
    ; See also: MetaTests configuration above.

    ; Programmatically determine the distribution's dependencies.
    ; This information is needed for the META.* and Makefile.PL files.
    [AutoPrereqs]

    ; Determine the minimum Perl version required for the distribution.
    [MinimumPerl]

    ; Don't explicitly declare dependencies that are part of Perl
    ; itself.  This needs to be declared after all other plugins in
    ; this phase.
    [PrereqsClean]

    ; See also: MakeMaker configuration below.

    ;; PHASE: INSTALL TOOL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ; Add a README file to the build, generated from the finalised POD
    ; for the main module.
    [ReadmeAnyFromPod]

    ; Also generate a README POD file for the repository root.
    ; (This does not form part of the final build.)
    [ReadmeAnyFromPod / PodRoot]

    ; Emit a Makefile.PL file in the build.  This permits testing via
    ; "dzil test".
    [MakeMaker]

    ; Emit an INSTALL file with installation instructions.
    ; (Must be defined after MakeMaker configuration.)
    [InstallGuide]

    ;; PHASE: BEFORE RELEASE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ; Ensure that the Changes file documents somehing for the release.
    [CheckChangesHasContent]

    ; Don't allow a release to occur while there are dirty files (other
    ; than those that may have new version information written as part
    ; of the build process).
    [Git::Check]
    allow_dirty = Changes
    allow_dirty = dist.ini
    allow_dirty = README.pod

    ; Ensure that all tests pass.
    [TestRelease]

    ; If all is well, publish the distribution.
    [ConfirmRelease]
    [UploadToCPAN]

    ;; PHASE: RELEASER ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ; See also: UploadToCPAN configuration above.

    ;; PHASE: AFTER RELEASE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ; See also: NextRelease configuration above.

    ; Commit changes to the files modified after a release.
    ; (Must be defined after NextRelease configuration.)
    [Git::Commit]
    allow_dirty = Changes
    allow_dirty = dist.ini
    allow_dirty = README.pod
    time_zone = UTC

    ; Tag releases.  Do this before pushing so that the tag is still
    ; created locally if pushing fails for some reason.  Don't create
    ; an annotated tag since another commit occurs at release time
    ; anyway.
    [Git::Tag]
    tag_message =

    ; Push changes to the remote repository when a release is made.
    [Git::Push]

    ;; PHASE: TEST RUNNER ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ; See also: MakeMaker configuration above.

    ;; PHASE: BUILD RUNNER ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ; See also: MakeMaker configuration above.

ACKNOWLEDGEMENTS

Dist::Zilla::AppCommand::dumpphases, which adds a dumpphases command to dzil, was invaluable to me in better understanding Dist::Zilla's phase ordering and better identifying which plugins run during which phase (or in some cases, phases).

SUPPORT

Bugs / Feature Requests

Please report any bugs or feature requests by email to bug-dist-zilla-pluginbundle-author-lxp at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Dist-Zilla-PluginBundle-Author-LXP. You will be automatically notified of any progress on the request by the system.

Source Code

The source code for this distribution is available online in a Git repository. Please feel welcome to contribute patches.

https://github.com/lx/perl5-Dist-Zilla-PluginBundle-Author-LXP

  git clone git://github.com/lx/perl5-Dist-Zilla-PluginBundle-Author-LXP

AUTHOR

Alex Peters <lxp@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Alex Peters.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

The full text of the license can be found in the 'LICENSE' file included with this distribution.