SYNOPSIS

      # in dist.ini
      [@NGLENN]

DESCRIPTION

    This is a Dist::Zilla PluginBundle. It is roughly equivalent to the
    following dist.ini:

      ; version provider
      [RewriteVersion] ; also munges
    
      ; collect contributors list
      [Git::Contributors]
    
      ; choose files to include
      [Git::GatherDir]         ; everything from git ls-files
      exclude_filename = README.mkdn  ; skip this generated file
      exclude_filename = Makefile.PL  ; skip this generated file
      exclude_filename = cpanfile     ; skip this generated file
    
      [PruneCruft]        ; default stuff to skip
      [ManifestSkip]      ; if -f MANIFEST.SKIP, skip those, too
    
      ; file modifications
      [InsertCopyright    ; add copyright at "# COPYRIGHT"
      [PodWeaver]         ; generate Pod
      config_plugin = @NGLENN ; my own plugin allows Pod::WikiDoc
      replacer = replace_with_comment
      post_code_replacer = replace_with_nothing
    
      ; generated files
      [License]           ; boilerplate license
      [ReadmeFromPod]     ; from Pod (runs after PodWeaver)
      [InstallGuide]      ; installation guide
      [TravisYML]         ; Travis-CI configuration
      build_branch = master
      ; t tests
      [Test::ReportPrereqs]   ; show prereqs in automated test output
    
      ; xt tests
      [Test::MinimumVersion]  ; xt/release/minimum-version.t
      max_target_perl = 5.010 ; don't use syntax/features past 5.10
      [Test::PodSpelling] ; xt/author/pod-spell.t
      [Test::Perl::Critic]; xt/author/critic.t
      [MetaTests]         ; xt/release/meta-yaml.t
      [PodSyntaxTests]    ; xt/release/pod-syntax.t
      [PodCoverageTests]  ; xt/release/pod-coverage.t
      [Test::Portability] ; xt/release/portability.t (of file name)
      options = test_one_dot = 0
      [Test::Version]     ; xt/release/test-version.t
      [Test::Compile]     ; xt/author/00-compile.t
      fake_home = 1       ; fakes $ENV{HOME} just in case
      xt_mode = 1         ; make sure all files compile
    
      ; metadata
      [AutoPrereqs]       ; find prereqs from code
      skip = ^t::lib
    
      [Authority]
      authority = cpan:NGLENN
      do_munging = 0
    
      [MinimumPerl]   ; determine minimum perl version
    
      [MetaNoIndex]       ; sets 'no_index' in META
      directory = t
      directory = xt
      directory = examples
      directory = corpus
      package = DB        ; just in case
    
      [GithubMeta]        ; set META resources
      remote = origin
      remote = github
      issues = 1
    
      [MetaProvides::Package] ; add 'provides' to META files
      meta_noindex = 1        ; respect prior no_index directives
    
      [Prereqs::AuthorDeps]   ; add authordeps as develop/requires
      [MetaYAML]              ; generate META.yml (v1.4)
      [MetaJSON]              ; generate META.json (v2)
      [CPANFile]              ; generate cpanfile
    
      ; build system
      [ExecDir]           ; include 'bin/*' as executables
      [ShareDir]          ; include 'share/' for File::ShareDir
      [MakeMaker]         ; create Makefile.PL
      eumm_version = 6.17
      default_jobs = 9
    
      ; manifest (after all generated files)
      [Manifest]          ; create MANIFEST
    
      ; copy cpanfile back to repo dis
      [CopyFilesFromBuild]
      copy = Makefile.PL
    
      ; before release
    
      [PromptIfStale]     ; check if our build tools are out of date
      module = Dist::Zilla
      module = Dist::Zilla::PluginBundle::NGLENN
      check_all_plugins = 1
    
      [Git::Check]        ; ensure all files checked in
      allow_dirty = dist.ini
      allow_dirty = Changes
      allow_dirty = cpanfile
    
      [CheckMetaResources]     ; ensure META has 'resources' data
      [CheckPrereqsIndexed]    ; ensure prereqs are on CPAN
      [CheckChangesHasContent] ; ensure Changes has been updated
    
      [RunExtraTests]   ; ensure xt/ tests pass
      default_jobs = 9
    
      [TestRelease]       ; ensure t/ tests pass
      [ConfirmRelease]    ; prompt before uploading
    
      ; releaser
      [UploadToCPAN]      ; uploads to CPAN
    
      ; after release
      [Git::Commit / Commit_Dirty_Files] ; commit Changes (as released)
    
      [Git::Tag]          ; tag repo with custom tag
      tag_format = release-%v
    
    
      ; NextRelease acts *during* pre-release to write $VERSION and
      ; timestamp to Changes and  *after* release to add a new {{$NEXT}}
      ; section, so to act at the right time after release, it must actually
      ; come after Commit_Dirty_Files but before Commit_Changes in the
      ; dist.ini.  It will still act during pre-release as usual
    
      [NextRelease]
      [BumpVersionAfterRelease]
    
      [Git::Commit / Commit_Changes] ; commit Changes (for new dev)
    
      [Git::Push]         ; push repo to remote
      push_to = origin
    
      [GitHub::UploadRelease] ; upload release to tag on GitHub

    This distribution was forked from the DAGOLDEN plugin bundle. The
    abstract should really be "Dist::Zilla configuration the way NGLENN,
    who does it the way DAGOLDEN does it, does it", but that was too long.
    I struggled with many complexities of writing a good dist.ini, but
    found that David Golden had solved all of them.

    I tweaked it slightly to fit my needs, most importantly to make
    everything work on Windows. I will probably continue to pull changes
    made to the originating DAGOLDEN distribution. See the changes file for
    more information.

USAGE

    To use this PluginBundle, just add it to your dist.ini. You can provide
    the following options:

    When running without git, GatherDir is used instead of Git::GatherDir.
    and all git check and commit operations are disabled.

    By default, versions are taken/rewritten in the source file using
    RewriteVersion and BumpVersionAfterRelease. If the auto_version option
    is true, the version is set by AutoVersion and munged with PkgVersion.
    For auto_version the generated cpanfile is copied to the repo on build;
    otherwise, Makefile.PL is copied.

    This PluginBundle now supports ConfigSlicer, so you can pass in options
    to the plugins used like this:

      [@NGLENN]
      Test::MinimumVersion.max_target_perl = 5.014
      ExecDir.dir = scripts

    This PluginBundle also supports PluginRemover, so dropping a plugin is
    as easy as this:

      [@NGLENN]
      -remove = Test::Portability

SEE ALSO