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

    This distribution's version numbering follows the conventions defined at
    semver.org <http://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.
        [KwaliteeTests]

        ;; 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
    <http://git-scm.com/> 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.

