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]
  [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