NAME

Dist::Zilla::PluginBundle::Author::GTERMARS - Plugin Bundle for distributions built by GTERMARS

SYNOPSIS

In your dist.ini:

[@Author::GTERMARS]

DESCRIPTION

This is the Dist::Zilla plugin bundle that GTERMARS uses to build his distributions.

It is roughly equivalent to the following:

; ==============================================================================
; Ensure we're using the correct Author Bundle
[PromptIfStale / Stale author bundle]
phase = build
module = Dist::Zilla::PluginBundle::Author::GTERMARS

; ==============================================================================
; Gather up all the files we need in our distribution
[GatherDir]
exclude_filename = dist.ini
exclude_filename = cpanfile
[ExecDir]
dir = (-d 'script' ? 'script' : 'bin')
[ShareDir]
[PruneCruft]

; ==============================================================================
; Auto-generate files as needed...
; ... Makefile.PL
[MakeMaker]
; ... MANIFEST
[Manifest]
; ... LICENSE
[License]
; ... README file(s)
[ReadmeAnyFromPod / ReadmeGfmInRoot]
[ReadmeAnyFromPod / ReadmeInDist]
; ... Dependencies
[Prereqs::FromCPANfile]
[Prereqs::AuthorDeps]
; ... META
[MetaYAML]
[MetaJSON]
[MetaNoIndex]
directory = examples
directory = inc
directory = local
directory = share
directory = t
directory = xt
; ... Tests
[MetaTests]
[Test::ReportPrereqs]
verify_prereqs = 1
[Test::NoTabs]
[Test::EOL]
[Test::EOF]
[Test::MinimumVersion]
[Test::Synopsis]
[PodSyntaxTests]
[PodCoverageTests]
[Test::PodSpelling]
[Test::NoBreakpoints]
[Test::CleanNamespaces]
[Test::DiagINC]
[Test::UnusedVars]
[Test::Kwalitee]
[Test::Compile]
fake_home = 1
filename = t/01-compile.t
bail_out_on_fail = 1

; ==============================================================================
; Additional Metadata
[GitHub::Meta]
[StaticInstall]
mode = auto

; ==============================================================================
; Run "xt/" tests, but don't include them in the release.
[RunExtraTests]
default_jobs = 8

; ==============================================================================
; Munge existing files
[NextRelease]
[RewriteVersion]

; ==============================================================================
; Release

; ... before release
[PromptIfStale / Stale modules, release]
phase = release
check_all_plugins = 1
check_all_prereqs = 1
skip = ExtUtils::MakeMaker
[Git::CheckFor::MergeConflicts]
[Git::CheckFor::CorrectBranch]
release_branch = main
[EnsureChangesHasContent]
[EnsureMinimumPerl]
[Git::Check / initial check]
[TestRelease]
[Git::Check / after tests]
[GitHub::RequireGreenBuild]
[CheckIssues]

; ... do the release (unless "fake_release" is set)
[ConfirmRelease]
[UploadToCPAN]
[GitHub::Update]

; ... after release; commit Changes and Tag release
[Git::Commit / Commit Changes]
commit_msg = Release v%V
[Git::Tag]

; ... after release; save Release artifacts
[Git::CommitBuild]
branch =
release_branch = releases
release_message = Release - v%v

; ... after release; bump Version for next release
[BumpVersionAfterRelease]
[Git::Commit / Commit Version Bump]
allow_dirty_match = ^lib/
commit_msg = Version bump.

; ... after release; push changes up to Git (unless "fake_release" is set)
[Git::Push]
push_to = origin
push_to = origin releases:releases

CUSTOMIZATION

Our Configuration Options

fake_release

A boolean option, which when set, removes [ConfirmRelease], [UploadToCPAN], and [GitHub::Update], replacing them with [FakeRelease].

Defaults to false, and can also be set with the FAKE_RELEASE=1 environment variable.

POD Coverage

Subroutines can be considered "covered" for POD Coverage checks, by adding a directive to the POD itself, as described in Pod::CoverageTrustPod:

=for Pod::Coverage foo bar baz

POD Spelling

Stopwords for POD Spelling checks can be added by adding a directive to the POD itself, as described in Pod::Spell:

=for stopwords foo bar baz

Providing Plugin Configuration

This plugin bundle uses Dist::Zilla::Role::PluginBundle::Config::Slicer, which allows you to provide plugin-specific configuration like this:

[@Author::GTERMARS]
GatherDir.exclude_filename = cpanfile

Removing Plugins

This plugin bundle uses Dist::Zilla::Role::PluginBundle::Remover, allowing you to remove specific plugins like this:

[@Author::GTERMARS]
-remove = GitHub::Meta
-remove = RunExtraTests

AUTHOR

Graham TerMarsch (cpan@howlingfrog.com)

COPYRIGHT

Copyright (C) 2020-, Graham TerMarsch. All Rights Reserved.

This is free software; you can redistribute it and/or modify it under the same license as Perl itself.

SEE ALSO

Dist::Zilla