Package-DeprecationManager

 view release on metacpan or  search on metacpan

CODE_OF_CONDUCT.md  view on Meta::CPAN

# Contributor Covenant Code of Conduct
 
## Our Pledge
 
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age,
body size, disability, ethnicity, gender identity and expression, level of
experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
 
## Our Standards
 
Examples of behavior that contributes to creating a positive environment
include:
 
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
 
Examples of unacceptable behavior by participants include:
 
* The use of sexualized language or imagery and unwelcome sexual attention or
  advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
  address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
  professional setting
 
## Our Responsibilities
 
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
 
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
 
## Scope
 
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an
appointed representative at an online or offline event. Representation of a
project may be further defined and clarified by project maintainers.
 
## Enforcement
 
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at autarch@urth.org. All complaints
will be reviewed and investigated and will result in a response that is deemed
necessary and appropriate to the circumstances. The project team is obligated
to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
 
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
 
## Attribution
 
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 1.4, available at
https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
 
[homepage]: https://www.contributor-covenant.org

CONTRIBUTING.md  view on Meta::CPAN

# CONTRIBUTING

Thank you for considering contributing to this distribution. This file
contains instructions that will help you work with the source code.

Please note that if you have any questions or difficulties, you can reach the
maintainer(s) through the bug queue described later in this document
(preferred), or by emailing the releaser directly. You are not required to
follow any of the steps in this document to submit a patch or bug report;
these are just recommendations, intended to help you (and help us help you
faster).

The distribution is managed with
[Dist::Zilla](https://metacpan.org/release/Dist-Zilla).

However, you can still compile and test the code with the
`Makefile.PL`
in the repository:

    perl Makefile.PL
    make
    make test


You may need to satisfy some dependencies. The easiest way to satisfy
dependencies is to install the last release. This is available at
https://metacpan.org/release/Package-DeprecationManager

You can use [`cpanminus`](https://metacpan.org/pod/App::cpanminus) to do this
without downloading the tarball first:

    $> cpanm --reinstall --installdeps --with-recommends Package::DeprecationManager

[`Dist::Zilla`](https://metacpan.org/pod/Dist::Zilla) is a very powerful
authoring tool, but requires a number of author-specific plugins. If you would
like to use it for contributing, install it from CPAN, then the following
command to install the needed distros:

    $> dzil authordeps --missing | cpanm

There may also be additional requirements not needed by the dzil build which
are needed for tests or other development:

    $> dzil listdeps --author --missing | cpanm

Or, you can use the 'dzil stale' command to install all requirements at once:

    $> cpanm Dist::Zilla::App::Command::stale
    $> dzil stale --all | cpanm

You can also do this via cpanm directly:

    $> cpanm --reinstall --installdeps --with-develop --with-recommends Package::DeprecationManager

Once installed, here are some dzil commands you might try:

    $> dzil build
    $> dzil test
    $> dzil test --release
    $> dzil xtest
    $> dzil listdeps --json
    $> dzil build --notgz

You can learn more about Dist::Zilla at http://dzil.org/.

The code for this distribution is [hosted on GitHub](https://github.com/moose/Package-DeprecationManager).

You can submit code changes by forking the repository, pushing your code
changes to your clone, and then submitting a pull request. Please update the
Changes file with a user-facing description of your changes as part of your
work. See the GitHub documentation for [detailed instructions on pull
requests](https://help.github.com/articles/creating-a-pull-request)

If you have found a bug, but do not have an accompanying patch to fix it, you
can submit an issue report [via the web](https://github.com/moose/Package-DeprecationManager/issues).

## Continuous Integration

All pull requests for this distribution will be automatically tested using
[Azure Pipelines](https://dev.azure.com/houseabsolute/houseabsolute/_build).

All CI results will be visible in the pull request on GitHub. Follow the
appropriate links for details when tests fail. PRs cannot be merged until tests
pass.

## Precious

This distribution uses [precious](https://github.com/houseabsolute/precious)
to enforce a uniform coding style. This is tested as part of the author
testing suite. You can install this and any other necessary non-Perl tools by
running `./dev-bin/install-xt-tools.sh`.

Then you can use `precious` to tidy and lint your code:

    $> precious tidy -a
    $> precious lint -a

Please run `precious tidy -a` and `precious lint -a` before committing your
changes and address any issues that it reports.

You can also set up a git pre-commit hook that checks all changed files for
linting issues by running `./git/setup.pl`.

## Contributor Names

If you send a patch or pull request, your name and email address will be
included in the documentation as a contributor (using the attribution on the
commit or patch), unless you specifically request for it not to be. If you
wish to be listed under a different name or address, you should submit a pull
request to the `.mailmap` file to contain the correct mapping.

## Generated By

This file was generated via Dist::Zilla::Plugin::GenerateFile::FromShareDir 0.015 from a
template file originating in Dist-Zilla-PluginBundle-DROLSKY-1.22.

Changes  view on Meta::CPAN

0.18     2023-02-19

- Use Sub::Util instead of Sub::Name, which is part of Scalar-List-Utils,
  which itself is a dependency already. Implemented by Aristotle Pagaltzis. GH
  #3.


0.17     2016-06-17

- Remove use of namespace::autoclean.


0.16     2016-03-21

- The subs installed into the caller are now named with Sub::Name. This makes
  these subs appear to be part of the caller, as opposed to an import, which
  is what we want, since each installed sub is constructed uniquely for a
  given package.


0.15     2015-11-13

- Made this module co-operate with existing import() subs in packages that use
  this module, as long as you use this module last.


0.14     2015-04-18

- Use any() from List::Util 1.33+ instead of List::MoreUtils.


0.13     2012-03-09

- Fix dist.ini to not add Test::Spelling as a requirement. (Tomas Doran)


0.12     2012-03-04

- Fix tests to pass with Carp 1.25. Reported by Andreas Koenig. RT #75520.


0.11     2011-06-19

- Allow an empty hash for the -deprecations parameter.


0.10     2010-10-25

- The test suite now uses Test::Fatal instead of Test::Exception. (Karen
  Etheridge)


0.09     2010-10-17

- Added a compilation test, because otherwise all test files could not end up
  doing skip_all, which may make smokers and test harnesses unhappy.


0.08     2010-10-15

- Include Test::Requires in prereq list. Reported by Todd Rinaldo. RT #62173.


0.07     2010-10-15

- The use of regular expressions in ignores didn't really work in 0.06.

- Added missing dep on List::MoreUtils.

- Replaced Test::Warn with Test::Output in the tests, and made the tests
  actually test what I think they should be testing.


0.06     2010-10-14

- The -ignore parameter now accepts regular expressions as well as package
  names.


0.05     2010-10-14

- Fixed what looked like a bug in -ignore handling, although I couldn't seem
  to write a test that triggered it.

- Removed hard dep on Test::Warn for the benefit of Moose.


0.04     2010-07-14

- A single feature will now warn more than once if each warning consists of a
  different error message.


0.03     2010-07-14

- Added an -ignore parameter when importing Package::DeprecationManager. This
  lets you explicitly ignore packages in the call stack when determining where
  a deprecated feature was called.


0.02     2010-07-12

- Made it possible to deprecate any feature, not just a subroutine or method.


0.01     2010-07-12

- First release

INSTALL  view on Meta::CPAN

This is the Perl distribution Package-DeprecationManager.

Installing Package-DeprecationManager is straightforward.

## Installation with cpanm

If you have cpanm, you only need one line:

    % cpanm Package::DeprecationManager

If it does not have permission to install modules to the current perl, cpanm
will automatically set up and install to a local::lib in your home directory.
See the local::lib documentation (https://metacpan.org/pod/local::lib) for
details on enabling it in your environment.

## Installing with the CPAN shell

Alternatively, if your CPAN shell is set up, you should just be able to do:

    % cpan Package::DeprecationManager

## Manual installation

As a last resort, you can manually install it. If you have not already
downloaded the release tarball, you can find the download link on the module's
MetaCPAN page: https://metacpan.org/pod/Package::DeprecationManager

Untar the tarball, install configure prerequisites (see below), then build it:

    % perl Makefile.PL
    % make && make test

Then install it:

    % make install

On Windows platforms, you should use `dmake` or `nmake`, instead of `make`.

If your perl is system-managed, you can create a local::lib in your home
directory to install modules to. For details, see the local::lib documentation:
https://metacpan.org/pod/local::lib

The prerequisites of this distribution will also have to be installed manually. The
prerequisites are listed in one of the files: `MYMETA.yml` or `MYMETA.json` generated
by running the manual build process described above.

## Configure Prerequisites

This distribution requires other modules to be installed before this
distribution's installer can be run.  They can be found under the
"configure_requires" key of META.yml or the
"{prereqs}{configure}{requires}" key of META.json.

## Other Prerequisites

This distribution may require additional modules to be installed after running
Makefile.PL.
Look for prerequisites in the following phases:

* to run make, PHASE = build
* to use the module code itself, PHASE = runtime
* to run tests, PHASE = test

They can all be found in the "PHASE_requires" key of MYMETA.yml or the
"{prereqs}{PHASE}{requires}" key of MYMETA.json.

## Documentation

Package-DeprecationManager documentation is available as POD.
You can run `perldoc` from a shell to read the documentation:

    % perldoc Package::DeprecationManager

For more information on installing Perl modules via CPAN, please see:
https://www.cpan.org/modules/INSTALL.html

LICENSE  view on Meta::CPAN

This software is Copyright (c) 2023 by Dave Rolsky.

This is free software, licensed under:

  The Artistic License 2.0 (GPL Compatible)

		       The Artistic License 2.0

	    Copyright (c) 2000-2006, The Perl Foundation.

     Everyone is permitted to copy and distribute verbatim copies
      of this license document, but changing it is not allowed.

Preamble

This license establishes the terms under which a given free software
Package may be copied, modified, distributed, and/or redistributed.
The intent is that the Copyright Holder maintains some artistic
control over the development of that Package while still keeping the
Package available as open source and free software.

You are always permitted to make arrangements wholly outside of this
license directly with the Copyright Holder of a given Package.  If the
terms of this license do not permit the full use that you propose to
make of the Package, you should contact the Copyright Holder and seek
a different licensing arrangement. 

Definitions

    "Copyright Holder" means the individual(s) or organization(s)
    named in the copyright notice for the entire Package.

    "Contributor" means any party that has contributed code or other
    material to the Package, in accordance with the Copyright Holder's
    procedures.

    "You" and "your" means any person who would like to copy,
    distribute, or modify the Package.

    "Package" means the collection of files distributed by the
    Copyright Holder, and derivatives of that collection and/or of
    those files. A given Package may consist of either the Standard
    Version, or a Modified Version.

    "Distribute" means providing a copy of the Package or making it
    accessible to anyone else, or in the case of a company or
    organization, to others outside of your company or organization.

    "Distributor Fee" means any fee that you charge for Distributing
    this Package or providing support for this Package to another
    party.  It does not mean licensing fees.

    "Standard Version" refers to the Package if it has not been
    modified, or has been modified only in ways explicitly requested
    by the Copyright Holder.

    "Modified Version" means the Package, if it has been changed, and
    such changes were not explicitly requested by the Copyright
    Holder. 

    "Original License" means this Artistic License as Distributed with
    the Standard Version of the Package, in its current version or as
    it may be modified by The Perl Foundation in the future.

    "Source" form means the source code, documentation source, and
    configuration files for the Package.

    "Compiled" form means the compiled bytecode, object code, binary,
    or any other form resulting from mechanical transformation or
    translation of the Source form.


Permission for Use and Modification Without Distribution

(1)  You are permitted to use the Standard Version and create and use
Modified Versions for any purpose without restriction, provided that
you do not Distribute the Modified Version.


Permissions for Redistribution of the Standard Version

(2)  You may Distribute verbatim copies of the Source form of the
Standard Version of this Package in any medium without restriction,
either gratis or for a Distributor Fee, provided that you duplicate
all of the original copyright notices and associated disclaimers.  At
your discretion, such verbatim copies may or may not include a
Compiled form of the Package.

(3)  You may apply any bug fixes, portability changes, and other
modifications made available from the Copyright Holder.  The resulting
Package will still be considered the Standard Version, and as such
will be subject to the Original License.


Distribution of Modified Versions of the Package as Source 

(4)  You may Distribute your Modified Version as Source (either gratis
or for a Distributor Fee, and with or without a Compiled form of the
Modified Version) provided that you clearly document how it differs
from the Standard Version, including, but not limited to, documenting
any non-standard features, executables, or modules, and provided that
you do at least ONE of the following:

    (a)  make the Modified Version available to the Copyright Holder
    of the Standard Version, under the Original License, so that the
    Copyright Holder may include your modifications in the Standard
    Version.

    (b)  ensure that installation of your Modified Version does not
    prevent the user installing or running the Standard Version. In
    addition, the Modified Version must bear a name that is different
    from the name of the Standard Version.

    (c)  allow anyone who receives a copy of the Modified Version to
    make the Source form of the Modified Version available to others
    under
		
	(i)  the Original License or

	(ii)  a license that permits the licensee to freely copy,
	modify and redistribute the Modified Version using the same
	licensing terms that apply to the copy that the licensee
	received, and requires that the Source form of the Modified
	Version, and of any works derived from it, be made freely
	available in that license fees are prohibited but Distributor
	Fees are allowed.


Distribution of Compiled Forms of the Standard Version 
or Modified Versions without the Source

(5)  You may Distribute Compiled forms of the Standard Version without
the Source, provided that you include complete instructions on how to
get the Source of the Standard Version.  Such instructions must be
valid at the time of your distribution.  If these instructions, at any
time while you are carrying out such distribution, become invalid, you
must provide new instructions on demand or cease further distribution.
If you provide valid instructions or cease distribution within thirty
days after you become aware that the instructions are invalid, then
you do not forfeit any of your rights under this license.

(6)  You may Distribute a Modified Version in Compiled form without
the Source, provided that you comply with Section 4 with respect to
the Source of the Modified Version.


Aggregating or Linking the Package 

(7)  You may aggregate the Package (either the Standard Version or
Modified Version) with other packages and Distribute the resulting
aggregation provided that you do not charge a licensing fee for the
Package.  Distributor Fees are permitted, and licensing fees for other
components in the aggregation are permitted. The terms of this license
apply to the use and Distribution of the Standard or Modified Versions
as included in the aggregation.

(8) You are permitted to link Modified and Standard Versions with
other works, to embed the Package in a larger work of your own, or to
build stand-alone binary or bytecode versions of applications that
include the Package, and Distribute the result without restriction,
provided the result does not expose a direct interface to the Package.


Items That are Not Considered Part of a Modified Version 

(9) Works (including, but not limited to, modules and scripts) that
merely extend or make use of the Package, do not, by themselves, cause
the Package to be a Modified Version.  In addition, such works are not
considered parts of the Package itself, and are not subject to the
terms of this license.


General Provisions

(10)  Any use, modification, and distribution of the Standard or
Modified Versions is governed by this Artistic License. By using,
modifying or distributing the Package, you accept this license. Do not
use, modify, or distribute the Package, if you do not accept this
license.

(11)  If your Modified Version has been derived from a Modified
Version made by someone other than you, you are nevertheless required
to ensure that your Modified Version complies with the requirements of
this license.

(12)  This license does not grant you the right to use any trademark,
service mark, tradename, or logo of the Copyright Holder.

(13)  This license includes the non-exclusive, worldwide,
free-of-charge patent license to make, have made, use, offer to sell,
sell, import and otherwise transfer the Package with respect to any
patent claims licensable by the Copyright Holder that are necessarily
infringed by the Package. If you institute patent litigation
(including a cross-claim or counterclaim) against any party alleging
that the Package constitutes direct or contributory patent
infringement, then this Artistic License to you shall terminate on the
date that such litigation is filed.

(14)  Disclaimer of Warranty:
THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL
LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

MANIFEST  view on Meta::CPAN

# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.030.
CODE_OF_CONDUCT.md
CONTRIBUTING.md
Changes
INSTALL
LICENSE
MANIFEST
META.json
META.yml
Makefile.PL
README.md
azure-pipelines.yml
cpanfile
dev-bin/install-xt-tools.sh
dist.ini
git/hooks/pre-commit.sh
git/setup.pl
lib/Package/DeprecationManager.pm
perlcriticrc
perltidyrc
precious.toml
t/00-report-prereqs.dd
t/00-report-prereqs.t
t/basic.t
t/export.t
xt/author/00-compile.t
xt/author/eol.t
xt/author/mojibake.t
xt/author/no-tabs.t
xt/author/pod-coverage.t
xt/author/pod-spell.t
xt/author/pod-syntax.t
xt/author/portability.t
xt/author/precious.t
xt/author/test-version.t
xt/release/cpan-changes.t
xt/release/meta-json.t

META.json  view on Meta::CPAN

{
   "abstract" : "Manage deprecation warnings for your distribution",
   "author" : [
      "Dave Rolsky <autarch@urth.org>"
   ],
   "dynamic_config" : 0,
   "generated_by" : "Dist::Zilla version 6.030, CPAN::Meta::Converter version 2.150010",
   "license" : [
      "artistic_2"
   ],
   "meta-spec" : {
      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
      "version" : 2
   },
   "name" : "Package-DeprecationManager",
   "prereqs" : {
      "configure" : {
         "requires" : {
            "ExtUtils::MakeMaker" : "0"
         }
      },
      "develop" : {
         "requires" : {
            "Capture::Tiny" : "0",
            "Encode" : "0",
            "File::Spec" : "0",
            "FindBin" : "0",
            "IO::Handle" : "0",
            "IPC::Open3" : "0",
            "Perl::Critic" : "1.138",
            "Perl::Critic::Moose" : "1.05",
            "Perl::Tidy" : "20210111",
            "Pod::Checker" : "1.74",
            "Pod::Coverage::TrustPod" : "0",
            "Pod::Tidy" : "0.10",
            "Pod::Wordlist" : "0",
            "Test::CPAN::Changes" : "0.19",
            "Test::CPAN::Meta::JSON" : "0.16",
            "Test::EOL" : "0",
            "Test::Mojibake" : "0",
            "Test::More" : "0.96",
            "Test::NoTabs" : "0",
            "Test::Pod" : "1.41",
            "Test::Pod::Coverage" : "1.08",
            "Test::Portability::Files" : "0",
            "Test::Spelling" : "0.12",
            "Test::Version" : "2.05",
            "perl" : "5.006"
         }
      },
      "runtime" : {
         "requires" : {
            "Carp" : "0",
            "List::Util" : "1.33",
            "Package::Stash" : "0",
            "Params::Util" : "0",
            "Sub::Install" : "0",
            "Sub::Util" : "0",
            "strict" : "0",
            "warnings" : "0"
         }
      },
      "test" : {
         "recommends" : {
            "CPAN::Meta" : "2.120900"
         },
         "requires" : {
            "Exporter" : "0",
            "ExtUtils::MakeMaker" : "0",
            "File::Spec" : "0",
            "Test::Fatal" : "0",
            "Test::More" : "0.96",
            "Test::Warnings" : "0"
         }
      }
   },
   "provides" : {
      "Package::DeprecationManager" : {
         "file" : "lib/Package/DeprecationManager.pm",
         "version" : "0.18"
      }
   },
   "release_status" : "stable",
   "resources" : {
      "bugtracker" : {
         "web" : "https://github.com/moose/Package-DeprecationManager/issues"
      },
      "homepage" : "https://metacpan.org/release/Package-DeprecationManager",
      "repository" : {
         "type" : "git",
         "url" : "git://github.com/moose/Package-DeprecationManager.git",
         "web" : "https://github.com/moose/Package-DeprecationManager"
      }
   },
   "version" : "0.18",
   "x_Dist_Zilla" : {
      "perl" : {
         "version" : "5.032001"
      },
      "plugins" : [
         {
            "class" : "Dist::Zilla::Plugin::DROLSKY::BundleAuthordep",
            "name" : "@DROLSKY/DROLSKY::BundleAuthordep",
            "version" : "1.22"
         },
         {
            "class" : "Dist::Zilla::Plugin::Git::GatherDir",
            "config" : {
               "Dist::Zilla::Plugin::GatherDir" : {
                  "exclude_filename" : [
                     "CODE_OF_CONDUCT.md",
                     "CONTRIBUTING.md",
                     "LICENSE",
                     "Makefile.PL",
                     "README.md",
                     "cpanfile"
                  ],
                  "exclude_match" : [],
                  "follow_symlinks" : 0,
                  "include_dotfiles" : 0,
                  "prefix" : "",
                  "prune_directory" : [],
                  "root" : "."
               },
               "Dist::Zilla::Plugin::Git::GatherDir" : {
                  "include_untracked" : 0
               }
            },
            "name" : "@DROLSKY/Git::GatherDir",
            "version" : "2.048"
         },
         {
            "class" : "Dist::Zilla::Plugin::ManifestSkip",
            "name" : "@DROLSKY/ManifestSkip",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::License",
            "name" : "@DROLSKY/License",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::ExecDir",
            "name" : "@DROLSKY/ExecDir",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::ShareDir",
            "name" : "@DROLSKY/ShareDir",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::Manifest",
            "name" : "@DROLSKY/Manifest",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::CheckVersionIncrement",
            "name" : "@DROLSKY/CheckVersionIncrement",
            "version" : "0.121750"
         },
         {
            "class" : "Dist::Zilla::Plugin::TestRelease",
            "name" : "@DROLSKY/TestRelease",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::ConfirmRelease",
            "name" : "@DROLSKY/ConfirmRelease",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::UploadToCPAN",
            "name" : "@DROLSKY/UploadToCPAN",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::VersionFromMainModule",
            "config" : {
               "Dist::Zilla::Role::ModuleMetadata" : {
                  "Module::Metadata" : "1.000037",
                  "version" : "0.006"
               }
            },
            "name" : "@DROLSKY/VersionFromMainModule",
            "version" : "0.04"
         },
         {
            "class" : "Dist::Zilla::Plugin::Authority",
            "name" : "@DROLSKY/Authority",
            "version" : "1.009"
         },
         {
            "class" : "Dist::Zilla::Plugin::AutoPrereqs",
            "name" : "@DROLSKY/AutoPrereqs",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::CopyFilesFromBuild",
            "name" : "@DROLSKY/CopyFilesFromBuild",
            "version" : "0.170880"
         },
         {
            "class" : "Dist::Zilla::Plugin::GitHub::Meta",
            "name" : "@DROLSKY/GitHub::Meta",
            "version" : "0.48"
         },
         {
            "class" : "Dist::Zilla::Plugin::GitHub::Update",
            "config" : {
               "Dist::Zilla::Plugin::GitHub::Update" : {
                  "metacpan" : 1
               }
            },
            "name" : "@DROLSKY/GitHub::Update",
            "version" : "0.48"
         },
         {
            "class" : "Dist::Zilla::Plugin::MetaResources",
            "name" : "@DROLSKY/MetaResources",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::MetaProvides::Package",
            "config" : {
               "Dist::Zilla::Plugin::MetaProvides::Package" : {
                  "finder_objects" : [
                     {
                        "class" : "Dist::Zilla::Plugin::FinderCode",
                        "name" : "@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
                        "version" : "6.030"
                     }
                  ],
                  "include_underscores" : 0
               },
               "Dist::Zilla::Role::MetaProvider::Provider" : {
                  "$Dist::Zilla::Role::MetaProvider::Provider::VERSION" : "2.002004",
                  "inherit_missing" : 1,
                  "inherit_version" : 1,
                  "meta_noindex" : 1
               },
               "Dist::Zilla::Role::ModuleMetadata" : {
                  "Module::Metadata" : "1.000037",
                  "version" : "0.006"
               }
            },
            "name" : "@DROLSKY/MetaProvides::Package",
            "version" : "2.004003"
         },
         {
            "class" : "Dist::Zilla::Plugin::Meta::Contributors",
            "name" : "@DROLSKY/Meta::Contributors",
            "version" : "0.003"
         },
         {
            "class" : "Dist::Zilla::Plugin::MetaConfig",
            "name" : "@DROLSKY/MetaConfig",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::MetaJSON",
            "name" : "@DROLSKY/MetaJSON",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::MetaYAML",
            "name" : "@DROLSKY/MetaYAML",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::NextRelease",
            "name" : "@DROLSKY/NextRelease",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::Prereqs",
            "config" : {
               "Dist::Zilla::Plugin::Prereqs" : {
                  "phase" : "test",
                  "type" : "requires"
               }
            },
            "name" : "@DROLSKY/Test::More with subtest",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::Prereqs",
            "config" : {
               "Dist::Zilla::Plugin::Prereqs" : {
                  "phase" : "develop",
                  "type" : "requires"
               }
            },
            "name" : "@DROLSKY/Tools for use with precious",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::Prereqs",
            "config" : {
               "Dist::Zilla::Plugin::Prereqs" : {
                  "phase" : "develop",
                  "type" : "requires"
               }
            },
            "name" : "@DROLSKY/Test::Version which fixes https://github.com/plicease/Test-Version/issues/7",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::PromptIfStale",
            "config" : {
               "Dist::Zilla::Plugin::PromptIfStale" : {
                  "check_all_plugins" : 0,
                  "check_all_prereqs" : 0,
                  "modules" : [
                     "Dist::Zilla::PluginBundle::DROLSKY"
                  ],
                  "phase" : "build",
                  "run_under_travis" : 0,
                  "skip" : []
               }
            },
            "name" : "@DROLSKY/Dist::Zilla::PluginBundle::DROLSKY",
            "version" : "0.057"
         },
         {
            "class" : "Dist::Zilla::Plugin::PromptIfStale",
            "config" : {
               "Dist::Zilla::Plugin::PromptIfStale" : {
                  "check_all_plugins" : 1,
                  "check_all_prereqs" : 1,
                  "modules" : [],
                  "phase" : "release",
                  "run_under_travis" : 0,
                  "skip" : [
                     "Dist::Zilla::Plugin::DROLSKY::BundleAuthordep",
                     "Dist::Zilla::Plugin::DROLSKY::Contributors",
                     "Dist::Zilla::Plugin::DROLSKY::Git::CheckFor::CorrectBranch",
                     "Dist::Zilla::Plugin::DROLSKY::License",
                     "Dist::Zilla::Plugin::DROLSKY::MakeMaker",
                     "Dist::Zilla::Plugin::DROLSKY::PerlLinterConfigFiles",
                     "Dist::Zilla::Plugin::DROLSKY::Precious",
                     "Dist::Zilla::Plugin::DROLSKY::Test::Precious",
                     "Dist::Zilla::Plugin::DROLSKY::WeaverConfig",
                     "Pod::Weaver::PluginBundle::DROLSKY"
                  ]
               }
            },
            "name" : "@DROLSKY/PromptIfStale",
            "version" : "0.057"
         },
         {
            "class" : "Dist::Zilla::Plugin::Test::Pod::Coverage::Configurable",
            "name" : "@DROLSKY/Test::Pod::Coverage::Configurable",
            "version" : "0.07"
         },
         {
            "class" : "Dist::Zilla::Plugin::Test::PodSpelling",
            "config" : {
               "Dist::Zilla::Plugin::Test::PodSpelling" : {
                  "directories" : [
                     "bin",
                     "lib"
                  ],
                  "spell_cmd" : "",
                  "stopwords" : [
                     "DROLSKY",
                     "DROLSKY's",
                     "Goro",
                     "PayPal",
                     "Rolsky",
                     "Rolsky's",
                     "deprecations",
                     "drolsky"
                  ],
                  "wordlist" : "Pod::Wordlist"
               }
            },
            "name" : "@DROLSKY/Test::PodSpelling",
            "version" : "2.007005"
         },
         {
            "class" : "Dist::Zilla::Plugin::PodSyntaxTests",
            "name" : "@DROLSKY/PodSyntaxTests",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::MojibakeTests",
            "name" : "@DROLSKY/MojibakeTests",
            "version" : "0.8"
         },
         {
            "class" : "Dist::Zilla::Plugin::RunExtraTests",
            "config" : {
               "Dist::Zilla::Role::TestRunner" : {
                  "default_jobs" : "12"
               }
            },
            "name" : "@DROLSKY/RunExtraTests",
            "version" : "0.029"
         },
         {
            "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes",
            "config" : {
               "Dist::Zilla::Plugin::Test::CPAN::Changes" : {
                  "changelog" : "Changes"
               }
            },
            "name" : "@DROLSKY/Test::CPAN::Changes",
            "version" : "0.012"
         },
         {
            "class" : "Dist::Zilla::Plugin::Test::CPAN::Meta::JSON",
            "name" : "@DROLSKY/Test::CPAN::Meta::JSON",
            "version" : "0.004"
         },
         {
            "class" : "Dist::Zilla::Plugin::Test::EOL",
            "config" : {
               "Dist::Zilla::Plugin::Test::EOL" : {
                  "filename" : "xt/author/eol.t",
                  "finder" : [
                     ":ExecFiles",
                     ":InstallModules",
                     ":TestFiles"
                  ],
                  "trailing_whitespace" : 1
               }
            },
            "name" : "@DROLSKY/Test::EOL",
            "version" : "0.19"
         },
         {
            "class" : "Dist::Zilla::Plugin::Test::NoTabs",
            "config" : {
               "Dist::Zilla::Plugin::Test::NoTabs" : {
                  "filename" : "xt/author/no-tabs.t",
                  "finder" : [
                     ":InstallModules",
                     ":ExecFiles",
                     ":TestFiles"
                  ]
               }
            },
            "name" : "@DROLSKY/Test::NoTabs",
            "version" : "0.15"
         },
         {
            "class" : "Dist::Zilla::Plugin::Test::Portability",
            "config" : {
               "Dist::Zilla::Plugin::Test::Portability" : {
                  "options" : ""
               }
            },
            "name" : "@DROLSKY/Test::Portability",
            "version" : "2.001001"
         },
         {
            "class" : "Dist::Zilla::Plugin::Test::Compile",
            "config" : {
               "Dist::Zilla::Plugin::Test::Compile" : {
                  "bail_out_on_fail" : 0,
                  "fail_on_warning" : "author",
                  "fake_home" : 0,
                  "filename" : "xt/author/00-compile.t",
                  "module_finder" : [
                     ":InstallModules"
                  ],
                  "needs_display" : 0,
                  "phase" : "develop",
                  "script_finder" : [
                     ":PerlExecFiles"
                  ],
                  "skips" : [],
                  "switch" : []
               }
            },
            "name" : "@DROLSKY/Test::Compile",
            "version" : "2.058"
         },
         {
            "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs",
            "name" : "@DROLSKY/Test::ReportPrereqs",
            "version" : "0.029"
         },
         {
            "class" : "Dist::Zilla::Plugin::Test::Version",
            "name" : "@DROLSKY/Test::Version",
            "version" : "1.09"
         },
         {
            "class" : "Dist::Zilla::Plugin::DROLSKY::Test::Precious",
            "name" : "@DROLSKY/DROLSKY::Test::Precious",
            "version" : "1.22"
         },
         {
            "class" : "Dist::Zilla::Plugin::DROLSKY::Contributors",
            "name" : "@DROLSKY/DROLSKY::Contributors",
            "version" : "1.22"
         },
         {
            "class" : "Dist::Zilla::Plugin::Git::Contributors",
            "config" : {
               "Dist::Zilla::Plugin::Git::Contributors" : {
                  "git_version" : "2.39.2",
                  "include_authors" : 0,
                  "include_releaser" : 1,
                  "order_by" : "name",
                  "paths" : []
               }
            },
            "name" : "@DROLSKY/Git::Contributors",
            "version" : "0.036"
         },
         {
            "class" : "Dist::Zilla::Plugin::SurgicalPodWeaver",
            "config" : {
               "Dist::Zilla::Plugin::PodWeaver" : {
                  "config_plugins" : [
                     "@DROLSKY"
                  ],
                  "finder" : [
                     ":InstallModules",
                     ":ExecFiles"
                  ],
                  "plugins" : [
                     {
                        "class" : "Pod::Weaver::Plugin::EnsurePod5",
                        "name" : "@CorePrep/EnsurePod5",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Plugin::H1Nester",
                        "name" : "@CorePrep/H1Nester",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Plugin::SingleEncoding",
                        "name" : "@DROLSKY/SingleEncoding",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Plugin::Transformer",
                        "name" : "@DROLSKY/List",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Plugin::Transformer",
                        "name" : "@DROLSKY/Verbatim",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Region",
                        "name" : "@DROLSKY/header",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Name",
                        "name" : "@DROLSKY/Name",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Version",
                        "name" : "@DROLSKY/Version",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Region",
                        "name" : "@DROLSKY/prelude",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Generic",
                        "name" : "SYNOPSIS",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Generic",
                        "name" : "DESCRIPTION",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Generic",
                        "name" : "OVERVIEW",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Collect",
                        "name" : "ATTRIBUTES",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Collect",
                        "name" : "METHODS",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Collect",
                        "name" : "FUNCTIONS",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Collect",
                        "name" : "TYPES",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Leftovers",
                        "name" : "@DROLSKY/Leftovers",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Region",
                        "name" : "@DROLSKY/postlude",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::GenerateSection",
                        "name" : "@DROLSKY/generate SUPPORT",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::AllowOverride",
                        "name" : "@DROLSKY/allow override SUPPORT",
                        "version" : "0.05"
                     },
                     {
                        "class" : "Pod::Weaver::Section::GenerateSection",
                        "name" : "@DROLSKY/generate SOURCE",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::GenerateSection",
                        "name" : "@DROLSKY/generate DONATIONS",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Authors",
                        "name" : "@DROLSKY/Authors",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Contributors",
                        "name" : "@DROLSKY/Contributors",
                        "version" : "0.009"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Legal",
                        "name" : "@DROLSKY/Legal",
                        "version" : "4.018"
                     },
                     {
                        "class" : "Pod::Weaver::Section::AllowOverride",
                        "name" : "@DROLSKY/allow override Legal",
                        "version" : "0.05"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Region",
                        "name" : "@DROLSKY/footer",
                        "version" : "4.018"
                     }
                  ]
               }
            },
            "name" : "@DROLSKY/SurgicalPodWeaver",
            "version" : "0.0023"
         },
         {
            "class" : "Dist::Zilla::Plugin::DROLSKY::WeaverConfig",
            "name" : "@DROLSKY/DROLSKY::WeaverConfig",
            "version" : "1.22"
         },
         {
            "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod",
            "config" : {
               "Dist::Zilla::Role::FileWatcher" : {
                  "version" : "0.006"
               }
            },
            "name" : "@DROLSKY/README.md in build",
            "version" : "0.163250"
         },
         {
            "class" : "Dist::Zilla::Plugin::GenerateFile::FromShareDir",
            "config" : {
               "Dist::Zilla::Plugin::GenerateFile::FromShareDir" : {
                  "destination_filename" : "CONTRIBUTING.md",
                  "dist" : "Dist-Zilla-PluginBundle-DROLSKY",
                  "encoding" : "UTF-8",
                  "has_xs" : 0,
                  "location" : "build",
                  "source_filename" : "CONTRIBUTING.md"
               },
               "Dist::Zilla::Role::RepoFileInjector" : {
                  "allow_overwrite" : 1,
                  "repo_root" : ".",
                  "version" : "0.009"
               }
            },
            "name" : "@DROLSKY/Generate CONTRIBUTING.md",
            "version" : "0.015"
         },
         {
            "class" : "Dist::Zilla::Plugin::GenerateFile::FromShareDir",
            "config" : {
               "Dist::Zilla::Plugin::GenerateFile::FromShareDir" : {
                  "destination_filename" : "CODE_OF_CONDUCT.md",
                  "dist" : "Dist-Zilla-PluginBundle-DROLSKY",
                  "encoding" : "UTF-8",
                  "has_xs" : 0,
                  "location" : "build",
                  "source_filename" : "CODE_OF_CONDUCT.md"
               },
               "Dist::Zilla::Role::RepoFileInjector" : {
                  "allow_overwrite" : 1,
                  "repo_root" : ".",
                  "version" : "0.009"
               }
            },
            "name" : "@DROLSKY/Generate CODE_OF_CONDUCT.md",
            "version" : "0.015"
         },
         {
            "class" : "Dist::Zilla::Plugin::InstallGuide",
            "config" : {
               "Dist::Zilla::Role::ModuleMetadata" : {
                  "Module::Metadata" : "1.000037",
                  "version" : "0.006"
               }
            },
            "name" : "@DROLSKY/InstallGuide",
            "version" : "1.200014"
         },
         {
            "class" : "Dist::Zilla::Plugin::CPANFile",
            "name" : "@DROLSKY/CPANFile",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::DROLSKY::License",
            "name" : "@DROLSKY/DROLSKY::License",
            "version" : "1.22"
         },
         {
            "class" : "Dist::Zilla::Plugin::CheckStrictVersion",
            "name" : "@DROLSKY/CheckStrictVersion",
            "version" : "0.001"
         },
         {
            "class" : "Dist::Zilla::Plugin::CheckSelfDependency",
            "config" : {
               "Dist::Zilla::Plugin::CheckSelfDependency" : {
                  "finder" : [
                     ":InstallModules"
                  ]
               },
               "Dist::Zilla::Role::ModuleMetadata" : {
                  "Module::Metadata" : "1.000037",
                  "version" : "0.006"
               }
            },
            "name" : "@DROLSKY/CheckSelfDependency",
            "version" : "0.011"
         },
         {
            "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed",
            "name" : "@DROLSKY/CheckPrereqsIndexed",
            "version" : "0.022"
         },
         {
            "class" : "Dist::Zilla::Plugin::DROLSKY::Git::CheckFor::CorrectBranch",
            "config" : {
               "Dist::Zilla::Role::Git::Repo" : {
                  "git_version" : "2.39.2",
                  "repo_root" : "."
               }
            },
            "name" : "@DROLSKY/DROLSKY::Git::CheckFor::CorrectBranch",
            "version" : "1.22"
         },
         {
            "class" : "Dist::Zilla::Plugin::EnsureChangesHasContent",
            "name" : "@DROLSKY/EnsureChangesHasContent",
            "version" : "0.02"
         },
         {
            "class" : "Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts",
            "config" : {
               "Dist::Zilla::Role::Git::Repo" : {
                  "git_version" : "2.39.2",
                  "repo_root" : "."
               }
            },
            "name" : "@DROLSKY/Git::CheckFor::MergeConflicts",
            "version" : "0.014"
         },
         {
            "class" : "Dist::Zilla::Plugin::DROLSKY::PerlLinterConfigFiles",
            "name" : "@DROLSKY/DROLSKY::PerlLinterConfigFiles",
            "version" : "1.22"
         },
         {
            "class" : "Dist::Zilla::Plugin::DROLSKY::DevTools",
            "name" : "@DROLSKY/DROLSKY::DevTools",
            "version" : "1.22"
         },
         {
            "class" : "Dist::Zilla::Plugin::DROLSKY::Precious",
            "name" : "@DROLSKY/DROLSKY::Precious",
            "version" : "1.22"
         },
         {
            "class" : "Dist::Zilla::Plugin::Git::Check",
            "config" : {
               "Dist::Zilla::Plugin::Git::Check" : {
                  "untracked_files" : "die"
               },
               "Dist::Zilla::Role::Git::DirtyFiles" : {
                  "allow_dirty" : [
                     "CODE_OF_CONDUCT.md",
                     "CONTRIBUTING.md",
                     "Changes",
                     "LICENSE",
                     "Makefile.PL",
                     "README.md",
                     "cpanfile",
                     "precious.toml"
                  ],
                  "allow_dirty_match" : [],
                  "changelog" : "Changes"
               },
               "Dist::Zilla::Role::Git::Repo" : {
                  "git_version" : "2.39.2",
                  "repo_root" : "."
               }
            },
            "name" : "@DROLSKY/Git::Check",
            "version" : "2.048"
         },
         {
            "class" : "Dist::Zilla::Plugin::Git::Commit",
            "config" : {
               "Dist::Zilla::Plugin::Git::Commit" : {
                  "add_files_in" : [],
                  "commit_msg" : "v%V%n%n%c",
                  "signoff" : 0
               },
               "Dist::Zilla::Role::Git::DirtyFiles" : {
                  "allow_dirty" : [
                     "CODE_OF_CONDUCT.md",
                     "CONTRIBUTING.md",
                     "Changes",
                     "LICENSE",
                     "Makefile.PL",
                     "README.md",
                     "cpanfile",
                     "precious.toml"
                  ],
                  "allow_dirty_match" : [],
                  "changelog" : "Changes"
               },
               "Dist::Zilla::Role::Git::Repo" : {
                  "git_version" : "2.39.2",
                  "repo_root" : "."
               },
               "Dist::Zilla::Role::Git::StringFormatter" : {
                  "time_zone" : "local"
               }
            },
            "name" : "@DROLSKY/Commit generated files",
            "version" : "2.048"
         },
         {
            "class" : "Dist::Zilla::Plugin::Git::Tag",
            "config" : {
               "Dist::Zilla::Plugin::Git::Tag" : {
                  "branch" : null,
                  "changelog" : "Changes",
                  "signed" : 0,
                  "tag" : "v0.18",
                  "tag_format" : "v%V",
                  "tag_message" : "v%V"
               },
               "Dist::Zilla::Role::Git::Repo" : {
                  "git_version" : "2.39.2",
                  "repo_root" : "."
               },
               "Dist::Zilla::Role::Git::StringFormatter" : {
                  "time_zone" : "local"
               }
            },
            "name" : "@DROLSKY/Git::Tag",
            "version" : "2.048"
         },
         {
            "class" : "Dist::Zilla::Plugin::Git::Push",
            "config" : {
               "Dist::Zilla::Plugin::Git::Push" : {
                  "push_to" : [
                     "origin"
                  ],
                  "remotes_must_exist" : 1
               },
               "Dist::Zilla::Role::Git::Repo" : {
                  "git_version" : "2.39.2",
                  "repo_root" : "."
               }
            },
            "name" : "@DROLSKY/Git::Push",
            "version" : "2.048"
         },
         {
            "class" : "Dist::Zilla::Plugin::BumpVersionAfterRelease",
            "config" : {
               "Dist::Zilla::Plugin::BumpVersionAfterRelease" : {
                  "finders" : [
                     ":ExecFiles",
                     ":InstallModules"
                  ],
                  "global" : 0,
                  "munge_makefile_pl" : 1
               }
            },
            "name" : "@DROLSKY/BumpVersionAfterRelease",
            "version" : "0.018"
         },
         {
            "class" : "Dist::Zilla::Plugin::Git::Commit",
            "config" : {
               "Dist::Zilla::Plugin::Git::Commit" : {
                  "add_files_in" : [],
                  "commit_msg" : "Bump version after release",
                  "signoff" : 0
               },
               "Dist::Zilla::Role::Git::DirtyFiles" : {
                  "allow_dirty" : [
                     "Changes",
                     "dist.ini"
                  ],
                  "allow_dirty_match" : [
                     "(?^:.+)"
                  ],
                  "changelog" : "Changes"
               },
               "Dist::Zilla::Role::Git::Repo" : {
                  "git_version" : "2.39.2",
                  "repo_root" : "."
               },
               "Dist::Zilla::Role::Git::StringFormatter" : {
                  "time_zone" : "local"
               }
            },
            "name" : "@DROLSKY/Commit version bump",
            "version" : "2.048"
         },
         {
            "class" : "Dist::Zilla::Plugin::Git::Push",
            "config" : {
               "Dist::Zilla::Plugin::Git::Push" : {
                  "push_to" : [
                     "origin"
                  ],
                  "remotes_must_exist" : 1
               },
               "Dist::Zilla::Role::Git::Repo" : {
                  "git_version" : "2.39.2",
                  "repo_root" : "."
               }
            },
            "name" : "@DROLSKY/Push version bump",
            "version" : "2.048"
         },
         {
            "class" : "Dist::Zilla::Plugin::DROLSKY::MakeMaker",
            "config" : {
               "Dist::Zilla::Plugin::MakeMaker" : {
                  "make_path" : "make",
                  "version" : "6.030"
               },
               "Dist::Zilla::Plugin::MakeMaker::Awesome" : {
                  "version" : "0.49"
               },
               "Dist::Zilla::Role::TestRunner" : {
                  "default_jobs" : "12",
                  "version" : "6.030"
               }
            },
            "name" : "@DROLSKY/DROLSKY::MakeMaker",
            "version" : "1.22"
         },
         {
            "class" : "Dist::Zilla::Plugin::FinderCode",
            "name" : ":InstallModules",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::FinderCode",
            "name" : ":IncModules",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::FinderCode",
            "name" : ":TestFiles",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::FinderCode",
            "name" : ":ExtraTestFiles",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::FinderCode",
            "name" : ":ExecFiles",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::FinderCode",
            "name" : ":PerlExecFiles",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::FinderCode",
            "name" : ":ShareFiles",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::FinderCode",
            "name" : ":MainModule",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::FinderCode",
            "name" : ":AllFiles",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::FinderCode",
            "name" : ":NoFiles",
            "version" : "6.030"
         },
         {
            "class" : "Dist::Zilla::Plugin::FinderCode",
            "name" : "@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
            "version" : "6.030"
         }
      ],
      "zilla" : {
         "class" : "Dist::Zilla::Dist::Builder",
         "config" : {
            "is_trial" : 0
         },
         "version" : "6.030"
      }
   },
   "x_authority" : "cpan:DROLSKY",
   "x_contributors" : [
      "Aristotle Pagaltzis <pagaltzis@gmx.de>",
      "Jesse Luehrs <doy@tozt.net>",
      "Karen Etheridge <ether@cpan.org>",
      "Tomas Doran <bobtfish@bobtfish.net>"
   ],
   "x_generated_by_perl" : "v5.32.1",
   "x_serialization_backend" : "Cpanel::JSON::XS version 4.26",
   "x_spdx_expression" : "Artistic-2.0"
}

META.yml  view on Meta::CPAN

---
abstract: 'Manage deprecation warnings for your distribution'
author:
  - 'Dave Rolsky <autarch@urth.org>'
build_requires:
  Exporter: '0'
  ExtUtils::MakeMaker: '0'
  File::Spec: '0'
  Test::Fatal: '0'
  Test::More: '0.96'
  Test::Warnings: '0'
configure_requires:
  ExtUtils::MakeMaker: '0'
dynamic_config: 0
generated_by: 'Dist::Zilla version 6.030, CPAN::Meta::Converter version 2.150010'
license: artistic_2
meta-spec:
  url: http://module-build.sourceforge.net/META-spec-v1.4.html
  version: '1.4'
name: Package-DeprecationManager
provides:
  Package::DeprecationManager:
    file: lib/Package/DeprecationManager.pm
    version: '0.18'
requires:
  Carp: '0'
  List::Util: '1.33'
  Package::Stash: '0'
  Params::Util: '0'
  Sub::Install: '0'
  Sub::Util: '0'
  strict: '0'
  warnings: '0'
resources:
  bugtracker: https://github.com/moose/Package-DeprecationManager/issues
  homepage: https://metacpan.org/release/Package-DeprecationManager
  repository: git://github.com/moose/Package-DeprecationManager.git
version: '0.18'
x_Dist_Zilla:
  perl:
    version: '5.032001'
  plugins:
    -
      class: Dist::Zilla::Plugin::DROLSKY::BundleAuthordep
      name: '@DROLSKY/DROLSKY::BundleAuthordep'
      version: '1.22'
    -
      class: Dist::Zilla::Plugin::Git::GatherDir
      config:
        Dist::Zilla::Plugin::GatherDir:
          exclude_filename:
            - CODE_OF_CONDUCT.md
            - CONTRIBUTING.md
            - LICENSE
            - Makefile.PL
            - README.md
            - cpanfile
          exclude_match: []
          follow_symlinks: 0
          include_dotfiles: 0
          prefix: ''
          prune_directory: []
          root: .
        Dist::Zilla::Plugin::Git::GatherDir:
          include_untracked: 0
      name: '@DROLSKY/Git::GatherDir'
      version: '2.048'
    -
      class: Dist::Zilla::Plugin::ManifestSkip
      name: '@DROLSKY/ManifestSkip'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::License
      name: '@DROLSKY/License'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::ExecDir
      name: '@DROLSKY/ExecDir'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::ShareDir
      name: '@DROLSKY/ShareDir'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::Manifest
      name: '@DROLSKY/Manifest'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::CheckVersionIncrement
      name: '@DROLSKY/CheckVersionIncrement'
      version: '0.121750'
    -
      class: Dist::Zilla::Plugin::TestRelease
      name: '@DROLSKY/TestRelease'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::ConfirmRelease
      name: '@DROLSKY/ConfirmRelease'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::UploadToCPAN
      name: '@DROLSKY/UploadToCPAN'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::VersionFromMainModule
      config:
        Dist::Zilla::Role::ModuleMetadata:
          Module::Metadata: '1.000037'
          version: '0.006'
      name: '@DROLSKY/VersionFromMainModule'
      version: '0.04'
    -
      class: Dist::Zilla::Plugin::Authority
      name: '@DROLSKY/Authority'
      version: '1.009'
    -
      class: Dist::Zilla::Plugin::AutoPrereqs
      name: '@DROLSKY/AutoPrereqs'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::CopyFilesFromBuild
      name: '@DROLSKY/CopyFilesFromBuild'
      version: '0.170880'
    -
      class: Dist::Zilla::Plugin::GitHub::Meta
      name: '@DROLSKY/GitHub::Meta'
      version: '0.48'
    -
      class: Dist::Zilla::Plugin::GitHub::Update
      config:
        Dist::Zilla::Plugin::GitHub::Update:
          metacpan: 1
      name: '@DROLSKY/GitHub::Update'
      version: '0.48'
    -
      class: Dist::Zilla::Plugin::MetaResources
      name: '@DROLSKY/MetaResources'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::MetaProvides::Package
      config:
        Dist::Zilla::Plugin::MetaProvides::Package:
          finder_objects:
            -
              class: Dist::Zilla::Plugin::FinderCode
              name: '@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
              version: '6.030'
          include_underscores: 0
        Dist::Zilla::Role::MetaProvider::Provider:
          $Dist::Zilla::Role::MetaProvider::Provider::VERSION: '2.002004'
          inherit_missing: '1'
          inherit_version: '1'
          meta_noindex: '1'
        Dist::Zilla::Role::ModuleMetadata:
          Module::Metadata: '1.000037'
          version: '0.006'
      name: '@DROLSKY/MetaProvides::Package'
      version: '2.004003'
    -
      class: Dist::Zilla::Plugin::Meta::Contributors
      name: '@DROLSKY/Meta::Contributors'
      version: '0.003'
    -
      class: Dist::Zilla::Plugin::MetaConfig
      name: '@DROLSKY/MetaConfig'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::MetaJSON
      name: '@DROLSKY/MetaJSON'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::MetaYAML
      name: '@DROLSKY/MetaYAML'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::NextRelease
      name: '@DROLSKY/NextRelease'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::Prereqs
      config:
        Dist::Zilla::Plugin::Prereqs:
          phase: test
          type: requires
      name: '@DROLSKY/Test::More with subtest'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::Prereqs
      config:
        Dist::Zilla::Plugin::Prereqs:
          phase: develop
          type: requires
      name: '@DROLSKY/Tools for use with precious'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::Prereqs
      config:
        Dist::Zilla::Plugin::Prereqs:
          phase: develop
          type: requires
      name: '@DROLSKY/Test::Version which fixes https://github.com/plicease/Test-Version/issues/7'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::PromptIfStale
      config:
        Dist::Zilla::Plugin::PromptIfStale:
          check_all_plugins: 0
          check_all_prereqs: 0
          modules:
            - Dist::Zilla::PluginBundle::DROLSKY
          phase: build
          run_under_travis: 0
          skip: []
      name: '@DROLSKY/Dist::Zilla::PluginBundle::DROLSKY'
      version: '0.057'
    -
      class: Dist::Zilla::Plugin::PromptIfStale
      config:
        Dist::Zilla::Plugin::PromptIfStale:
          check_all_plugins: 1
          check_all_prereqs: 1
          modules: []
          phase: release
          run_under_travis: 0
          skip:
            - Dist::Zilla::Plugin::DROLSKY::BundleAuthordep
            - Dist::Zilla::Plugin::DROLSKY::Contributors
            - Dist::Zilla::Plugin::DROLSKY::Git::CheckFor::CorrectBranch
            - Dist::Zilla::Plugin::DROLSKY::License
            - Dist::Zilla::Plugin::DROLSKY::MakeMaker
            - Dist::Zilla::Plugin::DROLSKY::PerlLinterConfigFiles
            - Dist::Zilla::Plugin::DROLSKY::Precious
            - Dist::Zilla::Plugin::DROLSKY::Test::Precious
            - Dist::Zilla::Plugin::DROLSKY::WeaverConfig
            - Pod::Weaver::PluginBundle::DROLSKY
      name: '@DROLSKY/PromptIfStale'
      version: '0.057'
    -
      class: Dist::Zilla::Plugin::Test::Pod::Coverage::Configurable
      name: '@DROLSKY/Test::Pod::Coverage::Configurable'
      version: '0.07'
    -
      class: Dist::Zilla::Plugin::Test::PodSpelling
      config:
        Dist::Zilla::Plugin::Test::PodSpelling:
          directories:
            - bin
            - lib
          spell_cmd: ''
          stopwords:
            - DROLSKY
            - "DROLSKY's"
            - Goro
            - PayPal
            - Rolsky
            - "Rolsky's"
            - deprecations
            - drolsky
          wordlist: Pod::Wordlist
      name: '@DROLSKY/Test::PodSpelling'
      version: '2.007005'
    -
      class: Dist::Zilla::Plugin::PodSyntaxTests
      name: '@DROLSKY/PodSyntaxTests'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::MojibakeTests
      name: '@DROLSKY/MojibakeTests'
      version: '0.8'
    -
      class: Dist::Zilla::Plugin::RunExtraTests
      config:
        Dist::Zilla::Role::TestRunner:
          default_jobs: '12'
      name: '@DROLSKY/RunExtraTests'
      version: '0.029'
    -
      class: Dist::Zilla::Plugin::Test::CPAN::Changes
      config:
        Dist::Zilla::Plugin::Test::CPAN::Changes:
          changelog: Changes
      name: '@DROLSKY/Test::CPAN::Changes'
      version: '0.012'
    -
      class: Dist::Zilla::Plugin::Test::CPAN::Meta::JSON
      name: '@DROLSKY/Test::CPAN::Meta::JSON'
      version: '0.004'
    -
      class: Dist::Zilla::Plugin::Test::EOL
      config:
        Dist::Zilla::Plugin::Test::EOL:
          filename: xt/author/eol.t
          finder:
            - ':ExecFiles'
            - ':InstallModules'
            - ':TestFiles'
          trailing_whitespace: 1
      name: '@DROLSKY/Test::EOL'
      version: '0.19'
    -
      class: Dist::Zilla::Plugin::Test::NoTabs
      config:
        Dist::Zilla::Plugin::Test::NoTabs:
          filename: xt/author/no-tabs.t
          finder:
            - ':InstallModules'
            - ':ExecFiles'
            - ':TestFiles'
      name: '@DROLSKY/Test::NoTabs'
      version: '0.15'
    -
      class: Dist::Zilla::Plugin::Test::Portability
      config:
        Dist::Zilla::Plugin::Test::Portability:
          options: ''
      name: '@DROLSKY/Test::Portability'
      version: '2.001001'
    -
      class: Dist::Zilla::Plugin::Test::Compile
      config:
        Dist::Zilla::Plugin::Test::Compile:
          bail_out_on_fail: '0'
          fail_on_warning: author
          fake_home: 0
          filename: xt/author/00-compile.t
          module_finder:
            - ':InstallModules'
          needs_display: 0
          phase: develop
          script_finder:
            - ':PerlExecFiles'
          skips: []
          switch: []
      name: '@DROLSKY/Test::Compile'
      version: '2.058'
    -
      class: Dist::Zilla::Plugin::Test::ReportPrereqs
      name: '@DROLSKY/Test::ReportPrereqs'
      version: '0.029'
    -
      class: Dist::Zilla::Plugin::Test::Version
      name: '@DROLSKY/Test::Version'
      version: '1.09'
    -
      class: Dist::Zilla::Plugin::DROLSKY::Test::Precious
      name: '@DROLSKY/DROLSKY::Test::Precious'
      version: '1.22'
    -
      class: Dist::Zilla::Plugin::DROLSKY::Contributors
      name: '@DROLSKY/DROLSKY::Contributors'
      version: '1.22'
    -
      class: Dist::Zilla::Plugin::Git::Contributors
      config:
        Dist::Zilla::Plugin::Git::Contributors:
          git_version: 2.39.2
          include_authors: 0
          include_releaser: 1
          order_by: name
          paths: []
      name: '@DROLSKY/Git::Contributors'
      version: '0.036'
    -
      class: Dist::Zilla::Plugin::SurgicalPodWeaver
      config:
        Dist::Zilla::Plugin::PodWeaver:
          config_plugins:
            - '@DROLSKY'
          finder:
            - ':InstallModules'
            - ':ExecFiles'
          plugins:
            -
              class: Pod::Weaver::Plugin::EnsurePod5
              name: '@CorePrep/EnsurePod5'
              version: '4.018'
            -
              class: Pod::Weaver::Plugin::H1Nester
              name: '@CorePrep/H1Nester'
              version: '4.018'
            -
              class: Pod::Weaver::Plugin::SingleEncoding
              name: '@DROLSKY/SingleEncoding'
              version: '4.018'
            -
              class: Pod::Weaver::Plugin::Transformer
              name: '@DROLSKY/List'
              version: '4.018'
            -
              class: Pod::Weaver::Plugin::Transformer
              name: '@DROLSKY/Verbatim'
              version: '4.018'
            -
              class: Pod::Weaver::Section::Region
              name: '@DROLSKY/header'
              version: '4.018'
            -
              class: Pod::Weaver::Section::Name
              name: '@DROLSKY/Name'
              version: '4.018'
            -
              class: Pod::Weaver::Section::Version
              name: '@DROLSKY/Version'
              version: '4.018'
            -
              class: Pod::Weaver::Section::Region
              name: '@DROLSKY/prelude'
              version: '4.018'
            -
              class: Pod::Weaver::Section::Generic
              name: SYNOPSIS
              version: '4.018'
            -
              class: Pod::Weaver::Section::Generic
              name: DESCRIPTION
              version: '4.018'
            -
              class: Pod::Weaver::Section::Generic
              name: OVERVIEW
              version: '4.018'
            -
              class: Pod::Weaver::Section::Collect
              name: ATTRIBUTES
              version: '4.018'
            -
              class: Pod::Weaver::Section::Collect
              name: METHODS
              version: '4.018'
            -
              class: Pod::Weaver::Section::Collect
              name: FUNCTIONS
              version: '4.018'
            -
              class: Pod::Weaver::Section::Collect
              name: TYPES
              version: '4.018'
            -
              class: Pod::Weaver::Section::Leftovers
              name: '@DROLSKY/Leftovers'
              version: '4.018'
            -
              class: Pod::Weaver::Section::Region
              name: '@DROLSKY/postlude'
              version: '4.018'
            -
              class: Pod::Weaver::Section::GenerateSection
              name: '@DROLSKY/generate SUPPORT'
              version: '4.018'
            -
              class: Pod::Weaver::Section::AllowOverride
              name: '@DROLSKY/allow override SUPPORT'
              version: '0.05'
            -
              class: Pod::Weaver::Section::GenerateSection
              name: '@DROLSKY/generate SOURCE'
              version: '4.018'
            -
              class: Pod::Weaver::Section::GenerateSection
              name: '@DROLSKY/generate DONATIONS'
              version: '4.018'
            -
              class: Pod::Weaver::Section::Authors
              name: '@DROLSKY/Authors'
              version: '4.018'
            -
              class: Pod::Weaver::Section::Contributors
              name: '@DROLSKY/Contributors'
              version: '0.009'
            -
              class: Pod::Weaver::Section::Legal
              name: '@DROLSKY/Legal'
              version: '4.018'
            -
              class: Pod::Weaver::Section::AllowOverride
              name: '@DROLSKY/allow override Legal'
              version: '0.05'
            -
              class: Pod::Weaver::Section::Region
              name: '@DROLSKY/footer'
              version: '4.018'
      name: '@DROLSKY/SurgicalPodWeaver'
      version: '0.0023'
    -
      class: Dist::Zilla::Plugin::DROLSKY::WeaverConfig
      name: '@DROLSKY/DROLSKY::WeaverConfig'
      version: '1.22'
    -
      class: Dist::Zilla::Plugin::ReadmeAnyFromPod
      config:
        Dist::Zilla::Role::FileWatcher:
          version: '0.006'
      name: '@DROLSKY/README.md in build'
      version: '0.163250'
    -
      class: Dist::Zilla::Plugin::GenerateFile::FromShareDir
      config:
        Dist::Zilla::Plugin::GenerateFile::FromShareDir:
          destination_filename: CONTRIBUTING.md
          dist: Dist-Zilla-PluginBundle-DROLSKY
          encoding: UTF-8
          has_xs: '0'
          location: build
          source_filename: CONTRIBUTING.md
        Dist::Zilla::Role::RepoFileInjector:
          allow_overwrite: 1
          repo_root: .
          version: '0.009'
      name: '@DROLSKY/Generate CONTRIBUTING.md'
      version: '0.015'
    -
      class: Dist::Zilla::Plugin::GenerateFile::FromShareDir
      config:
        Dist::Zilla::Plugin::GenerateFile::FromShareDir:
          destination_filename: CODE_OF_CONDUCT.md
          dist: Dist-Zilla-PluginBundle-DROLSKY
          encoding: UTF-8
          has_xs: '0'
          location: build
          source_filename: CODE_OF_CONDUCT.md
        Dist::Zilla::Role::RepoFileInjector:
          allow_overwrite: 1
          repo_root: .
          version: '0.009'
      name: '@DROLSKY/Generate CODE_OF_CONDUCT.md'
      version: '0.015'
    -
      class: Dist::Zilla::Plugin::InstallGuide
      config:
        Dist::Zilla::Role::ModuleMetadata:
          Module::Metadata: '1.000037'
          version: '0.006'
      name: '@DROLSKY/InstallGuide'
      version: '1.200014'
    -
      class: Dist::Zilla::Plugin::CPANFile
      name: '@DROLSKY/CPANFile'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::DROLSKY::License
      name: '@DROLSKY/DROLSKY::License'
      version: '1.22'
    -
      class: Dist::Zilla::Plugin::CheckStrictVersion
      name: '@DROLSKY/CheckStrictVersion'
      version: '0.001'
    -
      class: Dist::Zilla::Plugin::CheckSelfDependency
      config:
        Dist::Zilla::Plugin::CheckSelfDependency:
          finder:
            - ':InstallModules'
        Dist::Zilla::Role::ModuleMetadata:
          Module::Metadata: '1.000037'
          version: '0.006'
      name: '@DROLSKY/CheckSelfDependency'
      version: '0.011'
    -
      class: Dist::Zilla::Plugin::CheckPrereqsIndexed
      name: '@DROLSKY/CheckPrereqsIndexed'
      version: '0.022'
    -
      class: Dist::Zilla::Plugin::DROLSKY::Git::CheckFor::CorrectBranch
      config:
        Dist::Zilla::Role::Git::Repo:
          git_version: 2.39.2
          repo_root: .
      name: '@DROLSKY/DROLSKY::Git::CheckFor::CorrectBranch'
      version: '1.22'
    -
      class: Dist::Zilla::Plugin::EnsureChangesHasContent
      name: '@DROLSKY/EnsureChangesHasContent'
      version: '0.02'
    -
      class: Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts
      config:
        Dist::Zilla::Role::Git::Repo:
          git_version: 2.39.2
          repo_root: .
      name: '@DROLSKY/Git::CheckFor::MergeConflicts'
      version: '0.014'
    -
      class: Dist::Zilla::Plugin::DROLSKY::PerlLinterConfigFiles
      name: '@DROLSKY/DROLSKY::PerlLinterConfigFiles'
      version: '1.22'
    -
      class: Dist::Zilla::Plugin::DROLSKY::DevTools
      name: '@DROLSKY/DROLSKY::DevTools'
      version: '1.22'
    -
      class: Dist::Zilla::Plugin::DROLSKY::Precious
      name: '@DROLSKY/DROLSKY::Precious'
      version: '1.22'
    -
      class: Dist::Zilla::Plugin::Git::Check
      config:
        Dist::Zilla::Plugin::Git::Check:
          untracked_files: die
        Dist::Zilla::Role::Git::DirtyFiles:
          allow_dirty:
            - CODE_OF_CONDUCT.md
            - CONTRIBUTING.md
            - Changes
            - LICENSE
            - Makefile.PL
            - README.md
            - cpanfile
            - precious.toml
          allow_dirty_match: []
          changelog: Changes
        Dist::Zilla::Role::Git::Repo:
          git_version: 2.39.2
          repo_root: .
      name: '@DROLSKY/Git::Check'
      version: '2.048'
    -
      class: Dist::Zilla::Plugin::Git::Commit
      config:
        Dist::Zilla::Plugin::Git::Commit:
          add_files_in: []
          commit_msg: v%V%n%n%c
          signoff: 0
        Dist::Zilla::Role::Git::DirtyFiles:
          allow_dirty:
            - CODE_OF_CONDUCT.md
            - CONTRIBUTING.md
            - Changes
            - LICENSE
            - Makefile.PL
            - README.md
            - cpanfile
            - precious.toml
          allow_dirty_match: []
          changelog: Changes
        Dist::Zilla::Role::Git::Repo:
          git_version: 2.39.2
          repo_root: .
        Dist::Zilla::Role::Git::StringFormatter:
          time_zone: local
      name: '@DROLSKY/Commit generated files'
      version: '2.048'
    -
      class: Dist::Zilla::Plugin::Git::Tag
      config:
        Dist::Zilla::Plugin::Git::Tag:
          branch: ~
          changelog: Changes
          signed: 0
          tag: v0.18
          tag_format: v%V
          tag_message: v%V
        Dist::Zilla::Role::Git::Repo:
          git_version: 2.39.2
          repo_root: .
        Dist::Zilla::Role::Git::StringFormatter:
          time_zone: local
      name: '@DROLSKY/Git::Tag'
      version: '2.048'
    -
      class: Dist::Zilla::Plugin::Git::Push
      config:
        Dist::Zilla::Plugin::Git::Push:
          push_to:
            - origin
          remotes_must_exist: 1
        Dist::Zilla::Role::Git::Repo:
          git_version: 2.39.2
          repo_root: .
      name: '@DROLSKY/Git::Push'
      version: '2.048'
    -
      class: Dist::Zilla::Plugin::BumpVersionAfterRelease
      config:
        Dist::Zilla::Plugin::BumpVersionAfterRelease:
          finders:
            - ':ExecFiles'
            - ':InstallModules'
          global: 0
          munge_makefile_pl: 1
      name: '@DROLSKY/BumpVersionAfterRelease'
      version: '0.018'
    -
      class: Dist::Zilla::Plugin::Git::Commit
      config:
        Dist::Zilla::Plugin::Git::Commit:
          add_files_in: []
          commit_msg: 'Bump version after release'
          signoff: 0
        Dist::Zilla::Role::Git::DirtyFiles:
          allow_dirty:
            - Changes
            - dist.ini
          allow_dirty_match:
            - (?^:.+)
          changelog: Changes
        Dist::Zilla::Role::Git::Repo:
          git_version: 2.39.2
          repo_root: .
        Dist::Zilla::Role::Git::StringFormatter:
          time_zone: local
      name: '@DROLSKY/Commit version bump'
      version: '2.048'
    -
      class: Dist::Zilla::Plugin::Git::Push
      config:
        Dist::Zilla::Plugin::Git::Push:
          push_to:
            - origin
          remotes_must_exist: 1
        Dist::Zilla::Role::Git::Repo:
          git_version: 2.39.2
          repo_root: .
      name: '@DROLSKY/Push version bump'
      version: '2.048'
    -
      class: Dist::Zilla::Plugin::DROLSKY::MakeMaker
      config:
        Dist::Zilla::Plugin::MakeMaker:
          make_path: make
          version: '6.030'
        Dist::Zilla::Plugin::MakeMaker::Awesome:
          version: '0.49'
        Dist::Zilla::Role::TestRunner:
          default_jobs: '12'
          version: '6.030'
      name: '@DROLSKY/DROLSKY::MakeMaker'
      version: '1.22'
    -
      class: Dist::Zilla::Plugin::FinderCode
      name: ':InstallModules'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::FinderCode
      name: ':IncModules'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::FinderCode
      name: ':TestFiles'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::FinderCode
      name: ':ExtraTestFiles'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::FinderCode
      name: ':ExecFiles'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::FinderCode
      name: ':PerlExecFiles'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::FinderCode
      name: ':ShareFiles'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::FinderCode
      name: ':MainModule'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::FinderCode
      name: ':AllFiles'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::FinderCode
      name: ':NoFiles'
      version: '6.030'
    -
      class: Dist::Zilla::Plugin::FinderCode
      name: '@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
      version: '6.030'
  zilla:
    class: Dist::Zilla::Dist::Builder
    config:
      is_trial: '0'
    version: '6.030'
x_authority: cpan:DROLSKY
x_contributors:
  - 'Aristotle Pagaltzis <pagaltzis@gmx.de>'
  - 'Jesse Luehrs <doy@tozt.net>'
  - 'Karen Etheridge <ether@cpan.org>'
  - 'Tomas Doran <bobtfish@bobtfish.net>'
x_generated_by_perl: v5.32.1
x_serialization_backend: 'YAML::Tiny version 1.73'
x_spdx_expression: Artistic-2.0

Makefile.PL  view on Meta::CPAN

# This Makefile.PL for Package-DeprecationManager was generated by
# Dist::Zilla::Plugin::DROLSKY::MakeMaker 1.22
# and Dist::Zilla::Plugin::MakeMaker::Awesome 0.49.
# Don't edit it but the dist.ini and plugins used to construct it.

use strict;
use warnings;

use ExtUtils::MakeMaker;

my %WriteMakefileArgs = (
  "ABSTRACT" => "Manage deprecation warnings for your distribution",
  "AUTHOR" => "Dave Rolsky <autarch\@urth.org>",
  "CONFIGURE_REQUIRES" => {
    "ExtUtils::MakeMaker" => 0
  },
  "DISTNAME" => "Package-DeprecationManager",
  "LICENSE" => "artistic_2",
  "NAME" => "Package::DeprecationManager",
  "PREREQ_PM" => {
    "Carp" => 0,
    "List::Util" => "1.33",
    "Package::Stash" => 0,
    "Params::Util" => 0,
    "Sub::Install" => 0,
    "Sub::Util" => 0,
    "strict" => 0,
    "warnings" => 0
  },
  "TEST_REQUIRES" => {
    "Exporter" => 0,
    "ExtUtils::MakeMaker" => 0,
    "File::Spec" => 0,
    "Test::Fatal" => 0,
    "Test::More" => "0.96",
    "Test::Warnings" => 0
  },
  "VERSION" => "0.18",
  "test" => {
    "TESTS" => "t/*.t"
  }
);

my %FallbackPrereqs = (
  "Carp" => 0,
  "Exporter" => 0,
  "ExtUtils::MakeMaker" => 0,
  "File::Spec" => 0,
  "List::Util" => "1.33",
  "Package::Stash" => 0,
  "Params::Util" => 0,
  "Sub::Install" => 0,
  "Sub::Util" => 0,
  "Test::Fatal" => 0,
  "Test::More" => "0.96",
  "Test::Warnings" => 0,
  "strict" => 0,
  "warnings" => 0
);

unless ( eval { ExtUtils::MakeMaker->VERSION('6.63_03') } ) {
  delete $WriteMakefileArgs{TEST_REQUIRES};
  delete $WriteMakefileArgs{BUILD_REQUIRES};
  $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
}

delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
  unless eval { ExtUtils::MakeMaker->VERSION(6.52) };

WriteMakefile(%WriteMakefileArgs);

README.md  view on Meta::CPAN

# NAME

Package::DeprecationManager - Manage deprecation warnings for your distribution

# VERSION

version 0.18

# SYNOPSIS

    package My::Class;

    use Package::DeprecationManager -deprecations => {
        'My::Class::foo' => '0.02',
        'My::Class::bar' => '0.05',
        'feature-X'      => '0.07',
    };

    sub foo {
        deprecated( 'Do not call foo!' );

        ...
    }

    sub bar {
        deprecated();

        ...
    }

    sub baz {
        my %args = @_;

        if ( $args{foo} ) {
            deprecated(
                message => ...,
                feature => 'feature-X',
            );
        }
    }

    package Other::Class;

    use My::Class -api_version => '0.04';

    My::Class->new()->foo(); # warns
    My::Class->new()->bar(); # does not warn
    My::Class->new()->bar(); # does not warn again

# DESCRIPTION

This module allows you to manage a set of deprecations for one or more modules.

When you import `Package::DeprecationManager`, you must provide a set of
`-deprecations` as a hash ref. The keys are "feature" names, and the values
are the version when that feature was deprecated.

In many cases, you can simply use the fully qualified name of a subroutine or
method as the feature name. This works for cases where the whole subroutine is
deprecated. However, the feature names can be any string. This is useful if you
don't want to deprecate an entire subroutine, just a certain usage.

You can also provide an optional array reference in the `-ignore` parameter.

The values to be ignored can be package names or regular expressions (made with
`qr//`).  Use this to ignore packages in your distribution that can appear on
the call stack when a deprecated feature is used.

As part of the import process, `Package::DeprecationManager` will export two
subroutines into its caller. It provides an `import()` sub for the caller and
a `deprecated()` sub.

The `import()` sub allows callers of _your_ class to specify an
`-api_version` parameter. If this is supplied, then deprecation warnings are
only issued for deprecations with API versions earlier than the one specified.

You must call the `deprecated()` sub in each deprecated subroutine. When
called, it will issue a warning using `Carp::cluck()`.

The `deprecated()` sub can be called in several ways. If you do not pass any
arguments, it will generate an appropriate warning message. If you pass a
single argument, this is used as the warning message.

Finally, you can call it with named arguments. Currently, the only allowed
names are `message` and `feature`. The `feature` argument should correspond
to the feature name passed in the `-deprecations` hash.

If you don't explicitly specify a feature, the `deprecated()` sub uses
`caller()` to identify its caller, using its fully qualified subroutine name.

A given deprecation warning is only issued once for a given package. This
module tracks this based on both the feature name _and_ the error message
itself. This means that if you provide several different error messages for the
same feature, all of those errors will appear.

## Other import() subs

This module works by installing an `import` sub in any package that uses it.
If that package _already_ has an `import` sub, then that `import` will be
called after any arguments passed for `Package::DeprecationManager` are
stripped out. You need to define your `import` sub before you `use
Package::DeprecationManager` to make this work:

    package HasExporter;

    use Exporter qw( import );

    use Package::DeprecationManager -deprecations => {
        'HasExporter::foo' => '0.02',
    };

    our @EXPORT_OK = qw( some_sub another_sub );

# DONATIONS

If you'd like to thank me for the work I've done on this module, please
consider making a "donation" to me via PayPal. I spend a lot of free time
creating free software, and would appreciate any support you'd care to offer.

Please note that **I am not suggesting that you must do this** in order for me
to continue working on this particular software. I will continue to do so,
inasmuch as I have in the past, for as long as it interests me.

Similarly, a donation made in this way will probably not make me work on this
software much more, unless I get so many donations that I can consider working
on free software full time, which seems unlikely at best.

To donate, log into PayPal and send money to autarch@urth.org or use the button
on this page: [http://www.urth.org/~autarch/fs-donation.html](http://www.urth.org/~autarch/fs-donation.html)

# CREDITS

The idea for this functionality and some of its implementation was originally
created as [Class::MOP::Deprecated](https://metacpan.org/pod/Class%3A%3AMOP%3A%3ADeprecated) by Goro Fuji.

# BUGS

Please report any bugs or feature requests to
`bug-package-deprecationmanager@rt.cpan.org`, or through the web interface at
[http://rt.cpan.org](http://rt.cpan.org).  I will be notified, and then you'll automatically be
notified of progress on your bug as I make changes.

Bugs may be submitted at [https://github.com/moose/Package-DeprecationManager/issues](https://github.com/moose/Package-DeprecationManager/issues).

# SOURCE

The source code repository for Package-DeprecationManager can be found at [https://github.com/moose/Package-DeprecationManager](https://github.com/moose/Package-DeprecationManager).

# DONATIONS

If you'd like to thank me for the work I've done on this module, please
consider making a "donation" to me via PayPal. I spend a lot of free time
creating free software, and would appreciate any support you'd care to offer.

Please note that **I am not suggesting that you must do this** in order for me
to continue working on this particular software. I will continue to do so,
inasmuch as I have in the past, for as long as it interests me.

Similarly, a donation made in this way will probably not make me work on this
software much more, unless I get so many donations that I can consider working
on free software full time (let's all have a chuckle at that together).

To donate, log into PayPal and send money to autarch@urth.org, or use the
button at [https://houseabsolute.com/foss-donations/](https://houseabsolute.com/foss-donations/).

# AUTHOR

Dave Rolsky <autarch@urth.org>

# CONTRIBUTORS

- Aristotle Pagaltzis <pagaltzis@gmx.de>
- Jesse Luehrs <doy@tozt.net>
- Karen Etheridge <ether@cpan.org>
- Tomas Doran <bobtfish@bobtfish.net>

# COPYRIGHT AND LICENSE

This software is Copyright (c) 2023 by Dave Rolsky.

This is free software, licensed under:

    The Artistic License 2.0 (GPL Compatible)

The full text of the license can be found in the
`LICENSE` file included with this distribution.

azure-pipelines.yml  view on Meta::CPAN

resources:
  repositories:
    - repository: ci-perl-helpers
      type: github
      name: houseabsolute/ci-perl-helpers
      endpoint: houseabsolute

stages:
  - template: templates/helpers/build.yml@ci-perl-helpers
    parameters:
      debug: true

  - template: templates/helpers/linux.yml@ci-perl-helpers
    parameters:
      debug: true
      test_xt: true
      use_default_perls: true

  - template: templates/helpers/macos.yml@ci-perl-helpers
    parameters:
      debug: true
      use_default_perls: true

  - template: templates/helpers/windows.yml@ci-perl-helpers
    parameters:
      debug: true
      use_default_perls: true

cpanfile  view on Meta::CPAN

# This file is generated by Dist::Zilla::Plugin::CPANFile v6.030
# Do not edit this file directly. To change prereqs, edit the `dist.ini` file.

requires "Carp" => "0";
requires "List::Util" => "1.33";
requires "Package::Stash" => "0";
requires "Params::Util" => "0";
requires "Sub::Install" => "0";
requires "Sub::Util" => "0";
requires "strict" => "0";
requires "warnings" => "0";

on 'test' => sub {
  requires "Exporter" => "0";
  requires "ExtUtils::MakeMaker" => "0";
  requires "File::Spec" => "0";
  requires "Test::Fatal" => "0";
  requires "Test::More" => "0.96";
  requires "Test::Warnings" => "0";
};

on 'test' => sub {
  recommends "CPAN::Meta" => "2.120900";
};

on 'configure' => sub {
  requires "ExtUtils::MakeMaker" => "0";
};

on 'develop' => sub {
  requires "Capture::Tiny" => "0";
  requires "Encode" => "0";
  requires "File::Spec" => "0";
  requires "FindBin" => "0";
  requires "IO::Handle" => "0";
  requires "IPC::Open3" => "0";
  requires "Perl::Critic" => "1.138";
  requires "Perl::Critic::Moose" => "1.05";
  requires "Perl::Tidy" => "20210111";
  requires "Pod::Checker" => "1.74";
  requires "Pod::Coverage::TrustPod" => "0";
  requires "Pod::Tidy" => "0.10";
  requires "Pod::Wordlist" => "0";
  requires "Test::CPAN::Changes" => "0.19";
  requires "Test::CPAN::Meta::JSON" => "0.16";
  requires "Test::EOL" => "0";
  requires "Test::Mojibake" => "0";
  requires "Test::More" => "0.96";
  requires "Test::NoTabs" => "0";
  requires "Test::Pod" => "1.41";
  requires "Test::Pod::Coverage" => "1.08";
  requires "Test::Portability::Files" => "0";
  requires "Test::Spelling" => "0.12";
  requires "Test::Version" => "2.05";
  requires "perl" => "5.006";
};

dev-bin/install-xt-tools.sh  view on Meta::CPAN

#!/bin/sh

set -e

TARGET="$HOME/bin"
if [ $(id -u) -eq 0 ]; then
    TARGET="/usr/local/bin"
fi
echo "Installing dev tools to $TARGET"

mkdir -p $TARGET
curl --silent --location \
       https://raw.githubusercontent.com/houseabsolute/ubi/master/bootstrap/bootstrap-ubi.sh |
       sh

"$TARGET/ubi" --project houseabsolute/precious --in "$TARGET"
"$TARGET/ubi" --project houseabsolute/omegasort --in "$TARGET"

echo "Add $TARGET to your PATH in order to use precious for linting and tidying"

dist.ini  view on Meta::CPAN

name    = Package-DeprecationManager
author  = Dave Rolsky <autarch@urth.org>
license = Artistic_2_0
copyright_holder = Dave Rolsky

; authordep Dist::Zilla::PluginBundle::DROLSKY = 1.22
[@DROLSKY]
dist = Package-DeprecationManager
stopwords = Goro
stopwords = deprecations
; We don't want to use ns::clean or autoclean in this distro, so it's easier
; to just skip this test
-remove = Test::CleanNamespaces
-remove = Test::Synopsis

git/hooks/pre-commit.sh  view on Meta::CPAN

#!/bin/bash

status=0

PRECIOUS=$(which precious)
if [[ -z $PRECIOUS ]]; then
    PRECIOUS=./bin/precious
fi

"$PRECIOUS" lint -s
if (( $? != 0 )); then
    status+=1
fi

exit $status

git/setup.pl  view on Meta::CPAN

#!/usr/bin/env perl

use strict;
use warnings;

use Cwd qw( abs_path );

symlink_hook('pre-commit');

sub symlink_hook {
    my $hook = shift;

    my $dot  = ".git/hooks/$hook";
    my $file = "git/hooks/$hook.sh";
    my $link = "../../$file";

    if ( -e $dot ) {
        if ( -l $dot ) {
            return if readlink $dot eq $link;
        }
        warn "You already have a hook at $dot!\n";
        return;
    }

    symlink $link, $dot
        or die "Could not link $dot => $link: $!";
}

lib/Package/DeprecationManager.pm  view on Meta::CPAN

package Package::DeprecationManager;

use strict;
use warnings;

our $VERSION = '0.18';

use Carp qw( croak );
use List::Util 1.33 qw( any );
use Package::Stash;
use Params::Util qw( _HASH0 );
use Sub::Install;
use Sub::Util qw( set_subname );

sub import {
    shift;
    my %args = @_;

    croak
        'You must provide a hash reference -deprecations parameter when importing Package::DeprecationManager'
        unless $args{-deprecations} && _HASH0( $args{-deprecations} );

    my %registry;

    my $caller = caller();

    my $orig_import = $caller->can('import');

    my $import = _build_import( \%registry, $orig_import );
    my $warn
        = _build_warn( \%registry, $args{-deprecations}, $args{-ignore} );

    # We need to remove this to prevent a 'subroutine redefined' warning.
    if ($orig_import) {
        Package::Stash->new($caller)->remove_symbol('&import');
    }

    Sub::Install::install_sub(
        {
            code => set_subname( $caller . '::import', $import ),
            into => $caller,
            as   => 'import',
        }
    );

    Sub::Install::install_sub(
        {
            code => set_subname( $caller . '::deprecated', $warn ),
            into => $caller,
            as   => 'deprecated',
        }
    );

    return;
}

sub _build_import {
    my $registry    = shift;
    my $orig_import = shift;

    return sub {
        my $class = shift;

        my @args;

        my $api_version;
        ## no critic (ControlStructures::ProhibitCStyleForLoops)
        for ( my $i = 0; $i < @_; $i++ ) {
            if ( $_[$i] eq '-api_version' || $_[$i] eq '-compatible' ) {
                $api_version = $_[ ++$i ];
            }
            else {
                push @args, $_[$i];
            }
        }
        ## use critic

        my $caller = caller();
        $registry->{$caller} = $api_version
            if defined $api_version;

        if ($orig_import) {
            @_ = ( $class, @args );
            goto &{$orig_import};
        }

        return;
    };
}

sub _build_warn {
    my $registry      = shift;
    my $deprecated_at = shift;
    my $ignore        = shift;

    my %ignore     = map  { $_ => 1 } grep { !ref } @{ $ignore || [] };
    my @ignore_res = grep {ref} @{ $ignore || [] };

    my %warned;

    return sub {
        my %args = @_ < 2 ? ( message => shift ) : @_;

        my ( $package, undef, undef, $sub ) = caller(1);

        my $skipped = 1;

        if ( @ignore_res || keys %ignore ) {
            while (
                defined $package
                && ( $ignore{$package} || any { $package =~ $_ } @ignore_res )
            ) {
                $package = caller( $skipped++ );
            }
        }

        $package = 'unknown package' unless defined $package;

        unless ( defined $args{feature} ) {
            $args{feature} = $sub;
        }

        my $compat_version = $registry->{$package};

        my $at = $deprecated_at->{ $args{feature} };

        return
               if defined $compat_version
            && defined $deprecated_at
            && $compat_version lt $at;

        my $msg;
        if ( defined $args{message} ) {
            $msg = $args{message};
        }
        else {
            $msg = "$args{feature} has been deprecated";
            $msg .= " since version $at"
                if defined $at;
        }

        return if $warned{$package}{ $args{feature} }{$msg};

        $warned{$package}{ $args{feature} }{$msg} = 1;

        # We skip at least two levels. One for this anon sub, and one for the
        # sub calling it.
        local $Carp::CarpLevel = $Carp::CarpLevel + $skipped;

        Carp::cluck($msg);
    };
}

1;

# ABSTRACT: Manage deprecation warnings for your distribution

__END__

=pod

=encoding UTF-8

=head1 NAME

Package::DeprecationManager - Manage deprecation warnings for your distribution

=head1 VERSION

version 0.18

=head1 SYNOPSIS

  package My::Class;

  use Package::DeprecationManager -deprecations => {
      'My::Class::foo' => '0.02',
      'My::Class::bar' => '0.05',
      'feature-X'      => '0.07',
  };

  sub foo {
      deprecated( 'Do not call foo!' );

      ...
  }

  sub bar {
      deprecated();

      ...
  }

  sub baz {
      my %args = @_;

      if ( $args{foo} ) {
          deprecated(
              message => ...,
              feature => 'feature-X',
          );
      }
  }

  package Other::Class;

  use My::Class -api_version => '0.04';

  My::Class->new()->foo(); # warns
  My::Class->new()->bar(); # does not warn
  My::Class->new()->bar(); # does not warn again

=head1 DESCRIPTION

This module allows you to manage a set of deprecations for one or more modules.

When you import C<Package::DeprecationManager>, you must provide a set of
C<-deprecations> as a hash ref. The keys are "feature" names, and the values
are the version when that feature was deprecated.

In many cases, you can simply use the fully qualified name of a subroutine or
method as the feature name. This works for cases where the whole subroutine is
deprecated. However, the feature names can be any string. This is useful if you
don't want to deprecate an entire subroutine, just a certain usage.

You can also provide an optional array reference in the C<-ignore> parameter.

The values to be ignored can be package names or regular expressions (made with
C<qr//>).  Use this to ignore packages in your distribution that can appear on
the call stack when a deprecated feature is used.

As part of the import process, C<Package::DeprecationManager> will export two
subroutines into its caller. It provides an C<import()> sub for the caller and
a C<deprecated()> sub.

The C<import()> sub allows callers of I<your> class to specify an
C<-api_version> parameter. If this is supplied, then deprecation warnings are
only issued for deprecations with API versions earlier than the one specified.

You must call the C<deprecated()> sub in each deprecated subroutine. When
called, it will issue a warning using C<Carp::cluck()>.

The C<deprecated()> sub can be called in several ways. If you do not pass any
arguments, it will generate an appropriate warning message. If you pass a
single argument, this is used as the warning message.

Finally, you can call it with named arguments. Currently, the only allowed
names are C<message> and C<feature>. The C<feature> argument should correspond
to the feature name passed in the C<-deprecations> hash.

If you don't explicitly specify a feature, the C<deprecated()> sub uses
C<caller()> to identify its caller, using its fully qualified subroutine name.

A given deprecation warning is only issued once for a given package. This
module tracks this based on both the feature name I<and> the error message
itself. This means that if you provide several different error messages for the
same feature, all of those errors will appear.

=head2 Other import() subs

This module works by installing an C<import> sub in any package that uses it.
If that package I<already> has an C<import> sub, then that C<import> will be
called after any arguments passed for C<Package::DeprecationManager> are
stripped out. You need to define your C<import> sub before you C<use
Package::DeprecationManager> to make this work:

  package HasExporter;

  use Exporter qw( import );

  use Package::DeprecationManager -deprecations => {
      'HasExporter::foo' => '0.02',
  };

  our @EXPORT_OK = qw( some_sub another_sub );

=head1 DONATIONS

If you'd like to thank me for the work I've done on this module, please
consider making a "donation" to me via PayPal. I spend a lot of free time
creating free software, and would appreciate any support you'd care to offer.

Please note that B<I am not suggesting that you must do this> in order for me
to continue working on this particular software. I will continue to do so,
inasmuch as I have in the past, for as long as it interests me.

Similarly, a donation made in this way will probably not make me work on this
software much more, unless I get so many donations that I can consider working
on free software full time, which seems unlikely at best.

To donate, log into PayPal and send money to autarch@urth.org or use the button
on this page: L<http://www.urth.org/~autarch/fs-donation.html>

=head1 CREDITS

The idea for this functionality and some of its implementation was originally
created as L<Class::MOP::Deprecated> by Goro Fuji.

=head1 BUGS

Please report any bugs or feature requests to
C<bug-package-deprecationmanager@rt.cpan.org>, or through the web interface at
L<http://rt.cpan.org>.  I will be notified, and then you'll automatically be
notified of progress on your bug as I make changes.

Bugs may be submitted at L<https://github.com/moose/Package-DeprecationManager/issues>.

=head1 SOURCE

The source code repository for Package-DeprecationManager can be found at L<https://github.com/moose/Package-DeprecationManager>.

=head1 DONATIONS

If you'd like to thank me for the work I've done on this module, please
consider making a "donation" to me via PayPal. I spend a lot of free time
creating free software, and would appreciate any support you'd care to offer.

Please note that B<I am not suggesting that you must do this> in order for me
to continue working on this particular software. I will continue to do so,
inasmuch as I have in the past, for as long as it interests me.

Similarly, a donation made in this way will probably not make me work on this
software much more, unless I get so many donations that I can consider working
on free software full time (let's all have a chuckle at that together).

To donate, log into PayPal and send money to autarch@urth.org, or use the
button at L<https://houseabsolute.com/foss-donations/>.

=head1 AUTHOR

Dave Rolsky <autarch@urth.org>

=head1 CONTRIBUTORS

=for stopwords Aristotle Pagaltzis Jesse Luehrs Karen Etheridge Tomas Doran

=over 4

=item *

Aristotle Pagaltzis <pagaltzis@gmx.de>

=item *

Jesse Luehrs <doy@tozt.net>

=item *

Karen Etheridge <ether@cpan.org>

=item *

Tomas Doran <bobtfish@bobtfish.net>

=back

=head1 COPYRIGHT AND LICENSE

This software is Copyright (c) 2023 by Dave Rolsky.

This is free software, licensed under:

  The Artistic License 2.0 (GPL Compatible)

The full text of the license can be found in the
F<LICENSE> file included with this distribution.

=cut

perlcriticrc  view on Meta::CPAN

severity = 3
verbose = 11
theme = (core && (pbp || bugs || maintenance || cosmetic || complexity || security || tests)) || moose
program-extensions = pl psgi t

exclude = Subroutines::ProhibitCallsToUndeclaredSubs

[BuiltinFunctions::ProhibitStringySplit]
severity = 3

[CodeLayout::RequireTrailingCommas]
severity = 3

[ControlStructures::ProhibitCStyleForLoops]
severity = 3

[InputOutput::RequireCheckedSyscalls]
functions = :builtins
exclude_functions = sleep
severity = 3

[RegularExpressions::ProhibitComplexRegexes]
max_characters = 200

[RegularExpressions::ProhibitUnusualDelimiters]
severity = 3

[Subroutines::ProhibitUnusedPrivateSubroutines]
private_name_regex = _(?!build)\w+

[TestingAndDebugging::ProhibitNoWarnings]
allow = redefine

[ValuesAndExpressions::ProhibitEmptyQuotes]
severity = 3

[ValuesAndExpressions::ProhibitInterpolationOfLiterals]
severity = 3

[ValuesAndExpressions::RequireUpperCaseHeredocTerminator]
severity = 3

[Variables::ProhibitPackageVars]
add_packages = Carp Test::Builder

[-Subroutines::RequireFinalReturn]

# This incorrectly thinks signatures are prototypes.
[-Subroutines::ProhibitSubroutinePrototypes]

[-ErrorHandling::RequireCarping]

# No need for /xsm everywhere
[-RegularExpressions::RequireDotMatchAnything]
[-RegularExpressions::RequireExtendedFormatting]
[-RegularExpressions::RequireLineBoundaryMatching]

# http://stackoverflow.com/questions/2275317/why-does-perlcritic-dislike-using-shift-to-populate-subroutine-variables
[-Subroutines::RequireArgUnpacking]

# "use v5.14" is more readable than "use 5.014"
[-ValuesAndExpressions::ProhibitVersionStrings]

# Explicitly returning undef is a _good_ thing in many cases, since it
# prevents very common errors when using a sub in list context to construct a
# hash and ending up with a missing value or key.
[-Subroutines::ProhibitExplicitReturnUndef]

# Sometimes I want to write "return unless $x > 4"
[-ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions]

perltidyrc  view on Meta::CPAN

-l=78
-i=4
-ci=4
-se
-b
-bar
-boc
-vt=0
-vtc=0
-cti=0
-pt=1
-bt=1
-sbt=1
-bbt=1
-nolq
-npro
-nsfs
--blank-lines-before-packages=0
--opening-hash-brace-right
--no-outdent-long-comments
--iterations=2
-wbb="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x="

precious.toml  view on Meta::CPAN

exclude = [
    ".build/**/*",
    "Package-DeprecationManager-*/**/*",
    "blib/**/*",
    "t/00-*",
    "t/author-*",
    "t/release-*",
    "t/zzz-*",
    "xt/**/*",
]

[commands.omegasort-gitignore]
type = "both"
include = "**/.gitignore"
cmd = [ "omegasort", "--sort=path" ]
lint_flags = "--check"
tidy_flags = "--in-place"
ok_exit_codes = 0
lint_failure_exit_codes = 1

[commands.perlcritic]
type = "lint"
include = [ "**/*.{pl,pm,t,psgi}" ]
cmd = [ "perlcritic", "--profile=$PRECIOUS_ROOT/perlcriticrc" ]
ok_exit_codes = 0
lint_failure_exit_codes = 2

[commands.perltidy]
type = "both"
include = [ "**/*.{pl,pm,t,psgi}" ]
cmd = [ "perltidy", "--profile=$PRECIOUS_ROOT/perltidyrc" ]
lint_flags = [ "--assert-tidy", "--no-standard-output", "--outfile=/dev/null" ]
tidy_flags = [ "--backup-and-modify-in-place", "--backup-file-extension=/" ]
ok_exit_codes = 0
lint_failure_exit_codes = 2
ignore_stderr = "Begin Error Output Stream"

[commands.podchecker]
type = "lint"
include = [ "**/*.{pl,pm,pod}" ]
cmd = [ "podchecker", "--warnings", "--warnings" ]
ok_exit_codes = [ 0, 2 ]
lint_failure_exit_codes = 1
ignore_stderr = [ ".+ pod syntax OK", ".+ does not contain any pod commands" ]

[commands.podtidy]
type = "tidy"
include = [ "**/*.{pl,pm,pod}" ]
cmd = [ "podtidy", "--columns", "80", "--inplace", "--nobackup" ]
ok_exit_codes = 0
lint_failure_exit_codes = 1

t/00-report-prereqs.dd  view on Meta::CPAN

do { my $x = {
       'configure' => {
                        'requires' => {
                                        'ExtUtils::MakeMaker' => '0'
                                      }
                      },
       'develop' => {
                      'requires' => {
                                      'Capture::Tiny' => '0',
                                      'Encode' => '0',
                                      'File::Spec' => '0',
                                      'FindBin' => '0',
                                      'IO::Handle' => '0',
                                      'IPC::Open3' => '0',
                                      'Perl::Critic' => '1.138',
                                      'Perl::Critic::Moose' => '1.05',
                                      'Perl::Tidy' => '20210111',
                                      'Pod::Checker' => '1.74',
                                      'Pod::Coverage::TrustPod' => '0',
                                      'Pod::Tidy' => '0.10',
                                      'Pod::Wordlist' => '0',
                                      'Test::CPAN::Changes' => '0.19',
                                      'Test::CPAN::Meta::JSON' => '0.16',
                                      'Test::EOL' => '0',
                                      'Test::Mojibake' => '0',
                                      'Test::More' => '0.96',
                                      'Test::NoTabs' => '0',
                                      'Test::Pod' => '1.41',
                                      'Test::Pod::Coverage' => '1.08',
                                      'Test::Portability::Files' => '0',
                                      'Test::Spelling' => '0.12',
                                      'Test::Version' => '2.05',
                                      'perl' => '5.006'
                                    }
                    },
       'runtime' => {
                      'requires' => {
                                      'Carp' => '0',
                                      'List::Util' => '1.33',
                                      'Package::Stash' => '0',
                                      'Params::Util' => '0',
                                      'Sub::Install' => '0',
                                      'Sub::Util' => '0',
                                      'strict' => '0',
                                      'warnings' => '0'
                                    }
                    },
       'test' => {
                   'recommends' => {
                                     'CPAN::Meta' => '2.120900'
                                   },
                   'requires' => {
                                   'Exporter' => '0',
                                   'ExtUtils::MakeMaker' => '0',
                                   'File::Spec' => '0',
                                   'Test::Fatal' => '0',
                                   'Test::More' => '0.96',
                                   'Test::Warnings' => '0'
                                 }
                 }
     };
  $x;
 }

t/00-report-prereqs.t  view on Meta::CPAN

#!perl

use strict;
use warnings;

# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.029

use Test::More tests => 1;

use ExtUtils::MakeMaker;
use File::Spec;

# from $version::LAX
my $lax_version_re =
    qr/(?: undef | (?: (?:[0-9]+) (?: \. | (?:\.[0-9]+) (?:_[0-9]+)? )?
            |
            (?:\.[0-9]+) (?:_[0-9]+)?
        ) | (?:
            v (?:[0-9]+) (?: (?:\.[0-9]+)+ (?:_[0-9]+)? )?
            |
            (?:[0-9]+)? (?:\.[0-9]+){2,} (?:_[0-9]+)?
        )
    )/x;

# hide optional CPAN::Meta modules from prereq scanner
# and check if they are available
my $cpan_meta = "CPAN::Meta";
my $cpan_meta_pre = "CPAN::Meta::Prereqs";
my $HAS_CPAN_META = eval "require $cpan_meta; $cpan_meta->VERSION('2.120900')" && eval "require $cpan_meta_pre"; ## no critic

# Verify requirements?
my $DO_VERIFY_PREREQS = 1;

sub _max {
    my $max = shift;
    $max = ( $_ > $max ) ? $_ : $max for @_;
    return $max;
}

sub _merge_prereqs {
    my ($collector, $prereqs) = @_;

    # CPAN::Meta::Prereqs object
    if (ref $collector eq $cpan_meta_pre) {
        return $collector->with_merged_prereqs(
            CPAN::Meta::Prereqs->new( $prereqs )
        );
    }

    # Raw hashrefs
    for my $phase ( keys %$prereqs ) {
        for my $type ( keys %{ $prereqs->{$phase} } ) {
            for my $module ( keys %{ $prereqs->{$phase}{$type} } ) {
                $collector->{$phase}{$type}{$module} = $prereqs->{$phase}{$type}{$module};
            }
        }
    }

    return $collector;
}

my @include = qw(

);

my @exclude = qw(

);

# Add static prereqs to the included modules list
my $static_prereqs = do './t/00-report-prereqs.dd';

# Merge all prereqs (either with ::Prereqs or a hashref)
my $full_prereqs = _merge_prereqs(
    ( $HAS_CPAN_META ? $cpan_meta_pre->new : {} ),
    $static_prereqs
);

# Add dynamic prereqs to the included modules list (if we can)
my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml';
my $cpan_meta_error;
if ( $source && $HAS_CPAN_META
    && (my $meta = eval { CPAN::Meta->load_file($source) } )
) {
    $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs);
}
else {
    $cpan_meta_error = $@;    # capture error from CPAN::Meta->load_file($source)
    $source = 'static metadata';
}

my @full_reports;
my @dep_errors;
my $req_hash = $HAS_CPAN_META ? $full_prereqs->as_string_hash : $full_prereqs;

# Add static includes into a fake section
for my $mod (@include) {
    $req_hash->{other}{modules}{$mod} = 0;
}

for my $phase ( qw(configure build test runtime develop other) ) {
    next unless $req_hash->{$phase};
    next if ($phase eq 'develop' and not $ENV{AUTHOR_TESTING});

    for my $type ( qw(requires recommends suggests conflicts modules) ) {
        next unless $req_hash->{$phase}{$type};

        my $title = ucfirst($phase).' '.ucfirst($type);
        my @reports = [qw/Module Want Have/];

        for my $mod ( sort keys %{ $req_hash->{$phase}{$type} } ) {
            next if grep { $_ eq $mod } @exclude;

            my $want = $req_hash->{$phase}{$type}{$mod};
            $want = "undef" unless defined $want;
            $want = "any" if !$want && $want == 0;

            if ($mod eq 'perl') {
                push @reports, ['perl', $want, $]];
                next;
            }

            my $req_string = $want eq 'any' ? 'any version required' : "version '$want' required";

            my $file = $mod;
            $file =~ s{::}{/}g;
            $file .= ".pm";
            my ($prefix) = grep { -e File::Spec->catfile($_, $file) } @INC;

            if ($prefix) {
                my $have = MM->parse_version( File::Spec->catfile($prefix, $file) );
                $have = "undef" unless defined $have;
                push @reports, [$mod, $want, $have];

                if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META && $type eq 'requires' ) {
                    if ( $have !~ /\A$lax_version_re\z/ ) {
                        push @dep_errors, "$mod version '$have' cannot be parsed ($req_string)";
                    }
                    elsif ( ! $full_prereqs->requirements_for( $phase, $type )->accepts_module( $mod => $have ) ) {
                        push @dep_errors, "$mod version '$have' is not in required range '$want'";
                    }
                }
            }
            else {
                push @reports, [$mod, $want, "missing"];

                if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) {
                    push @dep_errors, "$mod is not installed ($req_string)";
                }
            }
        }

        if ( @reports ) {
            push @full_reports, "=== $title ===\n\n";

            my $ml = _max( map { length $_->[0] } @reports );
            my $wl = _max( map { length $_->[1] } @reports );
            my $hl = _max( map { length $_->[2] } @reports );

            if ($type eq 'modules') {
                splice @reports, 1, 0, ["-" x $ml, "", "-" x $hl];
                push @full_reports, map { sprintf("    %*s %*s\n", -$ml, $_->[0], $hl, $_->[2]) } @reports;
            }
            else {
                splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl];
                push @full_reports, map { sprintf("    %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports;
            }

            push @full_reports, "\n";
        }
    }
}

if ( @full_reports ) {
    diag "\nVersions for all modules listed in $source (including optional ones):\n\n", @full_reports;
}

if ( $cpan_meta_error || @dep_errors ) {
    diag "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n";
}

if ( $cpan_meta_error ) {
    my ($orig_source) = grep { -f } 'MYMETA.json', 'MYMETA.yml';
    diag "\nCPAN::Meta->load_file('$orig_source') failed with: $cpan_meta_error\n";
}

if ( @dep_errors ) {
    diag join("\n",
        "\nThe following REQUIRED prerequisites were not satisfied:\n",
        @dep_errors,
        "\n"
    );
}

pass('Reported prereqs');

# vim: ts=4 sts=4 sw=4 et:

t/basic.t  view on Meta::CPAN

use strict;
use warnings;

use Test::More 0.88;
use Test::Fatal;
use Test::Warnings qw( warning warnings );

{
    ## no critic (BuiltinFunctions::ProhibitStringyEval, ErrorHandling::RequireCheckingReturnValueOfEval)
    like(
        exception {
            eval 'package Whatever; use Package::DeprecationManager;';
            die $@ if $@;
        },
        qr/^\QYou must provide a hash reference -deprecations parameter when importing Package::DeprecationManager/,
        'must provide a set of deprecations when using Package::DeprecationManager'
    );
}

## no critic (Modules::ProhibitMultiplePackages)

{
    package Foo;

    use Package::DeprecationManager -deprecations => {
        'Foo::foo'  => '0.02',
        'Foo::bar'  => '0.03',
        'Foo::baz'  => '1.21',
        'not a sub' => '1.23',
    };

    sub foo {
        deprecated('foo is deprecated');
    }

    sub bar {
        deprecated('bar is deprecated');
    }

    sub baz {
        deprecated();
    }

    sub quux {
        if ( $_[0] > 5 ) {
            deprecated(
                message => 'quux > 5 has been deprecated',
                feature => 'not a sub',
            );
        }
    }

    sub varies {
        deprecated("The varies sub varies: $_[0]");
    }

}

{
    package Bar;

    Foo->import();

    ::like(
        ::warning { Foo::foo() },
        qr/\Qfoo is deprecated/,
        'deprecation warning for foo'
    );

    ::like(
        ::warning { Foo::bar() },
        qr/\Qbar is deprecated/,
        'deprecation warning for bar'
    );

    ::like(
        ::warning { Foo::baz() },
        qr/\QFoo::baz has been deprecated since version 1.21/,
        'deprecation warning for baz, and message is generated by Package::DeprecationManager'
    );

    ::is_deeply(
        [ ::warnings { Foo::foo() } ],
        [],
        'no warning on second call to foo'
    );

    ::is_deeply(
        [ ::warnings { Foo::bar() } ],
        [],
        'no warning on second call to bar'
    );

    ::is_deeply(
        [ ::warnings { Foo::baz() } ],
        [],
        'no warning on second call to baz'
    );

    ::like(
        ::warning { Foo::varies(1) },
        qr/\QThe varies sub varies: 1/,
        'warning for varies sub'
    );

    ::like(
        ::warning { Foo::varies(2) },
        qr/\QThe varies sub varies: 2/,
        'warning for varies sub with different error'
    );

    ::is_deeply(
        [ ::warnings { Foo::varies(1) } ],
        [],
        'no warning for varies sub with same message as first call'
    );
}

{
    package Baz;

    Foo->import( -api_version => '0.01' );

    ::is_deeply(
        [ ::warnings { Foo::foo() } ],
        [],
        'no warning for foo with api_version = 0.01'
    );

    ::is_deeply(
        [ ::warnings { Foo::bar() } ],
        [],
        'no warning for bar with api_version = 0.01'
    );

    ::is_deeply(
        [ ::warnings { Foo::baz() } ],
        [],
        'no warning for baz with api_version = 0.01'
    );
}

{
    package Quux;

    Foo->import( -api_version => '1.17' );

    ::like(
        ::warning { Foo::foo() },
        qr/\Qfoo is deprecated/,
        'deprecation warning for foo with api_version = 1.17'
    );

    ::like(
        ::warning { Foo::bar() },
        qr/\Qbar is deprecated/,
        'deprecation warning for bar with api_version = 1.17'
    );

    ::is_deeply(
        [ ::warnings { Foo::baz() } ],
        [],
        'no warning for baz with api_version = 1.17'
    );
}

{
    package Another;

    Foo->import();

    ::is_deeply(
        [ ::warnings { Foo::quux(1) } ],
        [],
        'no warning for quux(1)'
    );

    ::like(
        ::warning { Foo::quux(10) },
        qr/\Qquux > 5 has been deprecated/,
        'got a warning for quux(10)'
    );
}

{
    package Dep;

    use Package::DeprecationManager -deprecations => {
        'Dep::foo' => '1.00',
        },
        -ignore => [ 'My::Package1', 'My::Package2' ];

    sub foo {
        deprecated('foo is deprecated');
    }
}

{
    package Dep2;

    use Package::DeprecationManager -deprecations => {
        'Dep2::bar' => '1.00',
        },
        -ignore => [qr/My::Package[12]/];

    sub bar {
        deprecated('bar is deprecated');
    }
}

{
    package My::Package1;

    sub foo { Dep::foo() }
    sub bar { Dep2::bar() }
}

{
    package My::Package2;

    sub foo { My::Package1::foo() }
    sub bar { My::Package1::bar() }
}

{
    package My::Baz;

    ::like(
        ::warning { My::Package2::foo() },
        qr/^foo is deprecated at t.basic\.t line \d+\.?\s+My::Baz/,
        'deprecation warning for call to My::Package2::foo() and mentions My::Baz but not My::Package[12]'
    );

    ::is_deeply(
        [ ::warnings { My::Package2::foo() } ],
        [],
        'no deprecation warning for second call to My::Package2::foo()'
    );

    ::is_deeply(
        [ ::warnings { My::Package1::foo() } ],
        [],
        'no deprecation warning for call to My::Package1::foo()'
    );

    ::like(
        ::warning { My::Package2::bar() },
        qr/^bar is deprecated at t.basic\.t line \d+\.?\s+My::Baz/,
        'deprecation warning for call to My::Package2::foo() and mentions My::Baz but not My::Package[12]'
    );

    ::is_deeply(
        [ ::warnings { My::Package2::bar() } ],
        [],
        'no deprecation warning for second call to My::Package2::bar()'
    );
}

{
    package My::Quux;

    ::like(
        ::warning { My::Package1::foo() },
        qr/^foo is deprecated at t.basic\.t line \d+\.?\s+My::Quux/,
        'deprecation warning for call to My::Package1::foo() and mentions My::Quux but not My::Package[12]'
    );

    ::is_deeply(
        [ ::warnings { My::Package1::foo() } ],
        [],
        'no deprecation warning for second call to My::Package1::foo()'
    );
}

done_testing();

t/export.t  view on Meta::CPAN

use strict;
use warnings;

use Test::More 0.88;
use Test::Warnings qw( warnings );

## no critic (Modules::ProhibitMultiplePackages)

{
    package Foo;

    our $VERSION = '0.03';

    use Exporter qw( import );

    our @EXPORT_OK = qw( exported );

    use Package::DeprecationManager -deprecations => {
        'Foo::foo' => '0.02',
    };

    sub foo {
        deprecated();
    }

    sub exported {
        return 'exported';
    }
}

{
    package Bar;

    Foo->import( 'exported', -api_version => '0.01' );

    ::is_deeply(
        [ ::warnings { Foo::foo() } ],
        [],
        'no warning for foo with api_version = 0.01'
    );

    ::is(
        exported(),
        'exported',
        'sub exported by Foo was imported and work as expected'
    );
}

done_testing();

xt/author/00-compile.t  view on Meta::CPAN

use 5.006;
use strict;
use warnings;

# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.058

use Test::More;

plan tests => 2;

my @module_files = (
    'Package/DeprecationManager.pm'
);



# no fake home requested

my @switches = (
    -d 'blib' ? '-Mblib' : '-Ilib',
);

use File::Spec;
use IPC::Open3;
use IO::Handle;

open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";

my @warnings;
for my $lib (@module_files)
{
    # see L<perlfaq8/How can I capture STDERR from an external command?>
    my $stderr = IO::Handle->new;

    diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} }
            $^X, @switches, '-e', "require q[$lib]"))
        if $ENV{PERL_COMPILE_TEST_DEBUG};

    my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]");
    binmode $stderr, ':crlf' if $^O eq 'MSWin32';
    my @_warnings = <$stderr>;
    waitpid($pid, 0);
    is($?, 0, "$lib loaded ok");

    shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/
        and not eval { +require blib; blib->VERSION('1.01') };

    if (@_warnings)
    {
        warn @_warnings;
        push @warnings, @_warnings;
    }
}



is(scalar(@warnings), 0, 'no warnings found')
    or diag 'got warnings: ', ( Test::More->can('explain') ? Test::More::explain(\@warnings) : join("\n", '', @warnings) );


xt/author/eol.t  view on Meta::CPAN

use strict;
use warnings;

# this test was generated with Dist::Zilla::Plugin::Test::EOL 0.19

use Test::More 0.88;
use Test::EOL;

my @files = (
    'lib/Package/DeprecationManager.pm',
    't/00-report-prereqs.dd',
    't/00-report-prereqs.t',
    't/basic.t',
    't/export.t'
);

eol_unix_ok($_, { trailing_whitespace => 1 }) foreach @files;
done_testing;

xt/author/mojibake.t  view on Meta::CPAN

#!perl

use strict;
use warnings qw(all);

use Test::More;
use Test::Mojibake;

all_files_encoding_ok();

xt/author/no-tabs.t  view on Meta::CPAN

use strict;
use warnings;

# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.15

use Test::More 0.88;
use Test::NoTabs;

my @files = (
    'lib/Package/DeprecationManager.pm',
    't/00-report-prereqs.dd',
    't/00-report-prereqs.t',
    't/basic.t',
    't/export.t'
);

notabs_ok($_) foreach @files;
done_testing;

xt/author/pod-coverage.t  view on Meta::CPAN

#!perl
# This file was automatically generated by Dist::Zilla::Plugin::Test::Pod::Coverage::Configurable 0.07.

use Test::Pod::Coverage 1.08;
use Test::More 0.88;

BEGIN {
    if ( $] <= 5.008008 ) {
        plan skip_all => 'These tests require Pod::Coverage::TrustPod, which only works with Perl 5.8.9+';
    }
}
use Pod::Coverage::TrustPod;

my %skip = map { $_ => 1 } qw(  );

my @modules;
for my $module ( all_modules() ) {
    next if $skip{$module};

    push @modules, $module;
}

plan skip_all => 'All the modules we found were excluded from POD coverage test.'
    unless @modules;

plan tests => scalar @modules;

my %trustme = ();

my @also_private;

for my $module ( sort @modules ) {
    pod_coverage_ok(
        $module,
        {
            coverage_class => 'Pod::Coverage::TrustPod',
            also_private   => \@also_private,
            trustme        => $trustme{$module} || [],
        },
        "pod coverage for $module"
    );
}

done_testing();

xt/author/pod-spell.t  view on Meta::CPAN

use strict;
use warnings;
use Test::More;

# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.007005
use Test::Spelling 0.12;
use Pod::Wordlist;


add_stopwords(<DATA>);
all_pod_files_spelling_ok( qw( bin lib ) );
__DATA__
Aristotle
DROLSKY
DROLSKY's
Dave
DeprecationManager
Doran
Etheridge
Goro
Jesse
Karen
Luehrs
Package
Pagaltzis
PayPal
Rolsky
Rolsky's
Tomas
autarch
bobtfish
deprecations
doy
drolsky
ether
lib
pagaltzis



( run in 1.684 second using v1.01-cache-2.11-cpan-39bf76dae61 )