NAME
   Dist::Zilla::PluginBundle::SILEX - Dist::Zilla configuration the way
   SILEX does it

VERSION
   version v0.0.1

SYNOPSIS
     # in dist.ini
     [@SILEX]

     # using local git
     [@SILEX]
     silex_git = silex/myrepo

     # using github & darkpan
     [@SILEX]
     darkpan = 1

     # using local git & darkpan
     [@SILEX]
     silex_git = silex/myrepo
     darkpan = 1

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

     ; version provider
     [Git::NextVersion]  ; get version from last release tag
     first_version     = v0.0.1
     version_by_branch = 1
     version_regexp    = ^release-(.+)$

     ; collect contributors list
     [ContributorsFromGit]

     ; choose files to include
     [Git::GatherDir]         ; everything from git ls-files
     exclude_filename = README.pod   ; skip this generated file
     exclude_filename = META.json    ; skip this generated file

     [PruneCruft]        ; default stuff to skip
     [ManifestSkip]      ; if -f MANIFEST.SKIP, skip those, too

     ; file modifications
     [OurPkgVersion]     ; add $VERSION = ... to all files
     [InsertCopyright]   ; add copyright at "# COPYRIGHT"
     [PodWeaver]         ; generate Pod
     config_plugin = @SILEX ; 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)
     [ReadmeAnyFromPod / MarkdownInRoot]

     ; 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

     [Prereqs]
     [Prereqs / Runtime_Requires]
     -phase        = runtime
     -relationship = requires
     [Prereqs / Runtime_Recommends]
     -phase        = runtime
     -relationship = recommends
     [Prereqs / Test_Requires]
     -phase        = test
     -relationship = requires
     [RemovePrereqs]
     remove = strict
     remove = warnings

     [Authority]
     authority = cpan:SILEX
     do_munging = 0

     [MinimumPerl]       ; determine minimum perl version

     [MetaNoIndex]       ; sets 'no_index' in META
     directory = t
     directory = xt
     directory = examples
     directory = corpus
     directory = public
     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

     ; manifest (after all generated files)
     [Manifest]          ; create MANIFEST

     ; copy cpanfile back to repo dis
     [CopyFilesFromBuild]
     copy = cpanfile

     ; before release

     [PromptIfStale]     ; check if our build tools are out of date
     module = Dist::Zilla
     module = Dist::Zilla::PluginBundle::SILEX
     check_all_plugins = 1

     [Git::Check]        ; ensure all files checked in
     allow_dirty = Changes
     allow_dirty = README.mkdn
     allow_dirty = cpanfile
     allow_dirty = dist.ini

     [CheckMetaResources]     ; ensure META has 'resources' data
     [CheckPrereqsIndexed]    ; ensure prereqs are on CPAN
     [CheckChangesHasContent] ; ensure Changes has been updated
     [CheckExtraTests]   ; ensure xt/ tests pass
     [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)
     commit_msg = 'release-%v%n%n%c'

     [Git::Tag]          ; tag repo with custom tag
     tag_format  = release-%v
     tag_message = 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]

     [Git::Commit / Commit_Changes] ; commit Changes (for new dev)

     [Git::Push]         ; push repo to remote
     push_to = origin

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

   *   "silex_git" — silex local git

   *   "is_task" — this indicates whether "TaskWeaver" or "PodWeaver"
       should be used.

       Default is 0.

   *   "authority" — specifies the "x_authority" field for pause. Defaults
       to 'cpan:SILEX'.

   *   "auto_prereq" — this indicates whether "AutoPrereqs" should be used
       or not. Default is 1.

   *   "darkpan" — for private code; uses "FakeRelease" and fills in dummy
       repo/bugtracker data

   *   "fake_release" — swaps "FakeRelease" for "UploadToCPAN". Mostly
       useful for testing a dist.ini without risking a real release.

   *   "git_remote" — where to push after release

   *   "github_issues" — whether to use github issue tracker. Defaults is
       1.

   *   "stopwords" — add stopword for "Test::PodSpelling" (can be repeated)

   *   "tag_format" — given to "Git::Tag". Default is 'release-%v' to be
       more

       robust than just the version number when parsing versions for
       Git::NextVersion

   *   "weaver_config" — specifies a Pod::Weaver bundle. Defaults to
       @SILEX.

   *   "version_regexp" — given to Git::NextVersion. Default

       is '^release-(.+)$'

   *   "no_git" — bypass all git-dependent plugins

   *   "no_critic" — omit "Test::Perl::Critic" tests

   *   "no_spellcheck" — omit "Test::PodSpelling" tests

   *   "no_coverage" — omit PodCoverage tests

   *   "no_minimum_perl" — omit "Test::MinimumVersion" tests

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

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

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

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

     [@SILEX]
     -remove = Test::Portability

RELEASE
   Release process:

     $ git checkout develop
     $ git rebase origin/develop
     $ dzil test
     $ #
     $ # ... do what you want
     $ #
     $ # now ready to release
     $ #
     $ git checkout master
     $ git rebase origin/master
     $ git merge --no-ff develop
     $ dzil release
     $ git checkout develop
     $ git merge --no-ff master
     $ #
     $ # everything is ok then push
     $ #
     $ git push origin master
     $ git push origin develop

   Release with specific version:

     $ #
     $ # ... skip above
     $ #
     $ V=v0.4.55 dzil release
     $ #
     $ # ... skip below
     $ #

SEE ALSO
   *   Dist::Zilla::PluginBundle::DAGOLDEN

   *   Dist::Zilla

   *   Dist::Zilla::Plugin::PodWeaver

   *   Dist::Zilla::Plugin::TaskWeaver

SUPPORT
 Bugs / Feature Requests
   Please report any bugs or feature requests through the issue tracker at
   <https://github.com/silexkr/dist-zilla-pluginbundle-silex/issues>. You
   will be notified automatically of any progress on your issue.

 Source Code
   This is open source software. The code repository is available for
   public review and contribution under the terms of the license.

   <https://github.com/silexkr/dist-zilla-pluginbundle-silex>

     git clone https://github.com/silexkr/dist-zilla-pluginbundle-silex.git

AUTHOR
   김도형 - Keedi Kim <[email protected]>

COPYRIGHT AND LICENSE
   This software is copyright (c) 2014 by SILEX.

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