NAME Dist::Zilla::PluginBundle::HARTZELL - Implement hartzell's way. VERSION version 0.004 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 exclude_filename = cpanfile ; 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 = @DEFAULT ; 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 ; 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 [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 '@Default', 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 * Dist::Zilla * Dist::Zilla::Plugin::PodWeaver * Dist::Zilla::Plugin::TaskWeaver * Dist::Zilla::PluginBundle::ConfigSlicer AUTHOR George Hartzell COPYRIGHT AND LICENSE This software is copyright (c) 2012 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.