NAME
Dist::Zilla::PluginBundle::HARTZELL - My standard dzil config.
VERSION
version 0.011
SYNOPSIS
# in dist.ini
[@HARTZELL]
DESCRIPTION
This, a Dist::Zilla PluginBundle that builds things the way that I do, is a work in progress.
I left my standard PluginBundle behind when I left my previous job and I've discovered that I've fallen behind the state of the art. This is my attempt to catch back up. After browsing the bevy of bundles on CPAN I decided to model mine on DAGOLDEN's (I like his use of ConfigSlicer and various config options). As it stands now it's nearly a copy of his work but as my personal preferences assert themselves I expect it to diverge. For now I have a lot of github and Meta info stuff to catch up on.
In its default form it is roughly equivalent to the following dist.ini:
; version provider
[Git::NextVersion] ; get version from last release tag
version_regexp = ^release-(.+)$
; 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
[PkgVersion] ; add $VERSION = ... to all files
[PodWeaver] ; generate Pod
config_plugin = @HARTZELL
; generated files
[ReadmeFromPod] ; from Pod (runs after PodWeaver)
[License] ; boilerplate license
[ReadmeAnyFromPod] ; create README.md in repo directory
type = pod ; this makes github happy....
filename = README.pod
location = root
; t tests
[Test::Compile] ; make sure .pm files all compile
fake_home = 1 ; fakes $ENV{HOME} just in case
; xt tests
[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)
[Test::Version] ; xt/release/test-version.t
; metadata
[MinimumPerl] ; determine minimum perl version
[AutoPrereqs] ; find prereqs from code
skip = ^t::lib
[MetaNoIndex] ; sets 'no_index' in META
directory = t
directory = xt
directory = examples
directory = corpus
package = DB ; just in case
[MetaProvides::Package] ; add 'provides' to META files
meta_noindex = 1 ; respect prior no_index directives
[AutoMetaResources] ; set META resources
bugtracker.github = user:hartzell
repository.github = user:hartzell
homepage = https://metacpan.org/release/%{dist}
[MetaYAML] ; generate META.yml (v1.4)
[MetaJSON] ; generate META.json (v2)
; build system
[ExecDir] ; include 'bin/*' as executables
[ShareDir] ; include 'share/' for File::ShareDir
[Module::Build] ; create Build.PL
[CPANFile] ; build a cpanfile
; copy META.json back to repo dis
[CopyFilesFromBuild]
copy = cpanfile
; manifest (after all generated files)
[Manifest] ; create MANIFEST
; before release
[Git::Check] ; ensure all files checked in
allow_dirty = dist.ini
allow_dirty = Changes
allow_dirty = README.pod
allow_dirty = cpanfile
[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)
allow_dirty = dist.ini
allow_dirty = Changes
allow_dirty = README.pod
[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]
[Git::Commit / Commit_Changes] ; commit Changes (for new dev)
commit_msg = bump Changes
[Git::Push] ; push repo to remote
push_to = origin
Usage
To use this PluginBundle, just add it to your dist.ini. See the "ATTRIBUTES" section for user configurable options.
This PluginBundle supports ConfigSlicer, so you can pass in options to individual plugins directly if necessary.
[@HARTZELL]
ExecDir.dir = scripts ; overrides ExecDir's dir option
ATTRIBUTES
stopwords
Moose ArrayRef attribute that keeps track of a list of stopwords for various spelling tasks. Defaults to an empty list, controlled by 'stopwords' lines in the dist.ini. There can be multiple stopwords lines in the dist.ini file.
Do this:
stopwords = one two three
stopwords = some more words
to build up your own list of stopwords.
fake_release
Moose boolean attribute, when set to true the bundle swaps the FakeRelease plugin in place of the UploadToCPAN plugin. Mostly useful for testing a dist.ini without risking a real release. Defaults to false, controlled by the value of the 'fake_release' dist.ini option.
Do this:
fake_release = 1
to do a fake release.
no_critic
Moose boolean attribute, when set to true it disables the Perl::Critic tests. Defaults to false, controlled by the value of the 'no_critic' dist.ini option.
Do this:
no_critic = 1
to do disable critic testing.
no_spellcheck
Moose boolean attribute, when set to true it disables the Test::PodSpelling tests. Defaults to false, controlled by the value of the 'no_spellcheck' dist.ini option.
Do this:
no_spellcheck = 1
to do disable spell checking.
is_task
Moose boolean attribute, when set to true it loads TaskWeaver instead of PodWeaver. Defaults to false, controlled by the value of the 'is_task' dist.ini option.
Do this:
is_task = 1
to build a Task:: distribution.
use_autoprereqs
Moose boolean attribute, when set to true it loads the AutoPrereqs plugin. Defaults to true, controlled by the value of the 'use_autoprereqs' dist.ini option.
Do this:
use_autoprereqs = 0
to do disable AutoPrereqs.
tag_format
Moose Str attribute, defines the format used by Git::Tag. Defaults to 'release-%v', controlled by the value of the 'tag_format' dist.ini option.
Do this:
tag_format = my-release-%v
to set it to something other than the default.
version_regexp
Moose Str attribute, defines the regexp that Git::NextVersion uses to figure out the current version. Defaults to '^release-(.+)$' and is controlled by the value of the 'version_regexp' dist.ini option.
Do this:
version_regexp = ^my-release-(.+)$
to set it to something other than the default.
weaver_config
Moose Str attribute, controls the name of the PodWeaver configuration. Defaults to '@HARTZELL', controlled by the value of the 'weaver_config' dist.ini option.
Do this:
weaver_config = @DAGOLDEN
to e.g. use Pod::Weaver::PluginBundle::DAGOLDEN.
git_remote
Moose Str attribute, controls the name of the git remote. Defaults to 'origin', controlled by the value of the 'git_remote' dist.ini option.
Do this:
git_remote = 'something_else'
to use something other than the default.
METHODS
mvp_multivalue_args
Returns the list of the dist.ini options that can take multiple values. Currently returns qw/stopwords/.
configure
Does the heavy lifting, adds the plugins, etc....
COMMON PATTERNS
nothing much to see here for now....
[@HARTZELL]
fakerelease = 1
SEE ALSO
AUTHORS
George Hartzell <hartzell@cpan.org>
David Golden <dagolden@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2018 by George Hartzell.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.