Dist-Zilla-6.032/000755 000765 000024 00000000000 14624411017 013603 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/misc/000755 000765 000024 00000000000 14624411017 014536 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/LICENSE000644 000765 000024 00000046435 14624411017 014624 0ustar00rjbsstaff000000 000000 This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Terms of the Perl programming language system itself a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or b) the "Artistic License" --- The GNU General Public License, Version 1, February 1989 --- This software is Copyright (c) 2024 by Ricardo SIGNES. This is free software, licensed under: The GNU General Public License, Version 1, February 1989 GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to humanity, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (a program to direct compilers to make passes at assemblers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice That's all there is to it! --- The Perl Artistic License 1.0 --- This software is Copyright (c) 2024 by Ricardo SIGNES. This is free software, licensed under: The Perl Artistic License 1.0 The "Artistic License" Preamble The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. Definitions: "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder as specified below. "Copyright Holder" is whoever is named in the copyright or copyrights for the package. "You" is you, if you're thinking about copying or distributing this Package. "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. 1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. 3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as uunet.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. b) use the modified Package only within your corporation or organization. c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. d) make other distribution arrangements with the Copyright Holder. 4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. b) accompany the distribution with the machine-readable source of the Package with your modifications. c) give non-standard executables non-standard names, and clearly document the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. d) make other distribution arrangements with the Copyright Holder. 5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. You may embed this Package's interpreter within an executable of yours (by linking); this shall be construed as a mere form of aggregation, provided that the complete Standard Version of the interpreter is so embedded. 6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whoever generated them, and may be sold commercially, and may be aggregated with this Package. If such scripts or library files are aggregated with this Package via the so-called "undump" or "unexec" methods of producing a binary executable image, then distribution of such an image shall neither be construed as a distribution of this Package nor shall it fall under the restrictions of Paragraphs 3 and 4, provided that you do not represent such an executable image as a Standard Version of this Package. 7. C subroutines (or comparably compiled subroutines in other languages) supplied by you and linked into this Package in order to emulate subroutines and variables of the language defined by this Package shall not be considered part of this Package, but are the equivalent of input as in Paragraph 6, provided these subroutines do not change the language in any way that would cause it to fail the regression tests for the language. 8. Aggregation of this Package with a commercial distribution is always permitted provided that the use of this Package is embedded; that is, when no overt attempt is made to make this Package's interfaces visible to the end user of the commercial distribution. Such use shall not be construed as a distribution of this Package. 9. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. 10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End Dist-Zilla-6.032/cpanfile000644 000765 000024 00000010167 14624411017 015314 0ustar00rjbsstaff000000 000000 # This file is generated by Dist::Zilla::Plugin::CPANFile v6.032 # Do not edit this file directly. To change prereqs, edit the `dist.ini` file. requires "App::Cmd::Command::version" => "0"; requires "App::Cmd::Setup" => "0.330"; requires "App::Cmd::Tester" => "0.306"; requires "App::Cmd::Tester::CaptureExternal" => "0"; requires "Archive::Tar" => "0"; requires "CPAN::Meta::Converter" => "2.101550"; requires "CPAN::Meta::Merge" => "0"; requires "CPAN::Meta::Prereqs" => "2.120630"; requires "CPAN::Meta::Requirements" => "2.121"; requires "CPAN::Meta::Validator" => "2.101550"; requires "CPAN::Uploader" => "0.103004"; requires "Carp" => "0"; requires "Config::INI::Reader" => "0"; requires "Config::MVP" => "2.200011"; requires "Config::MVP::Assembler" => "0"; requires "Config::MVP::Assembler::WithBundles" => "2.200010"; requires "Config::MVP::Reader" => "2.101540"; requires "Config::MVP::Reader::Findable::ByExtension" => "0"; requires "Config::MVP::Reader::Finder" => "0"; requires "Config::MVP::Reader::INI" => "2.101461"; requires "Config::MVP::Section" => "2.200009"; requires "Data::Dumper" => "0"; requires "Data::Section" => "0.200002"; requires "DateTime" => "0.44"; requires "Digest::MD5" => "0"; requires "Encode" => "0"; requires "ExtUtils::Manifest" => "1.66"; requires "File::Copy::Recursive" => "0.41"; requires "File::Find::Rule" => "0"; requires "File::Path" => "0"; requires "File::ShareDir" => "0"; requires "File::ShareDir::Install" => "0.03"; requires "File::Spec" => "0"; requires "File::Temp" => "0"; requires "File::pushd" => "0"; requires "JSON::MaybeXS" => "0"; requires "List::Util" => "1.45"; requires "Log::Dispatchouli" => "1.102220"; requires "Mixin::Linewise::Readers" => "0.100"; requires "Module::CoreList" => "0"; requires "Module::Runtime" => "0"; requires "Moose" => "0.92"; requires "Moose::Role" => "0"; requires "Moose::Util::TypeConstraints" => "0"; requires "MooseX::LazyRequire" => "0"; requires "MooseX::Role::Parameterized" => "1.01"; requires "MooseX::SetOnce" => "0"; requires "MooseX::Types" => "0"; requires "MooseX::Types::Moose" => "0"; requires "MooseX::Types::Perl" => "0"; requires "PPI::Document" => "1.222"; requires "Params::Util" => "0"; requires "Path::Tiny" => "0.052"; requires "Perl::PrereqScanner" => "1.016"; requires "Pod::Simple" => "0"; requires "Scalar::Util" => "0"; requires "Software::License" => "0.104001"; requires "Software::LicenseUtils" => "0"; requires "String::Formatter" => "0.100680"; requires "String::RewritePrefix" => "0.006"; requires "Sub::Exporter" => "0"; requires "Sub::Exporter::ForMethods" => "0"; requires "Sub::Exporter::Util" => "0"; requires "Term::ANSIColor" => "5.00"; requires "Term::Encoding" => "0"; requires "Term::ReadKey" => "0"; requires "Term::ReadLine" => "0"; requires "Term::UI" => "0"; requires "Test::Deep" => "0"; requires "Text::Glob" => "0.08"; requires "Text::Template" => "0"; requires "Try::Tiny" => "0"; requires "YAML::Tiny" => "0"; requires "autodie" => "0"; requires "experimental" => "0"; requires "namespace::autoclean" => "0"; requires "parent" => "0"; requires "perl" => "v5.20.0"; requires "utf8" => "0"; requires "version" => "0"; requires "warnings" => "0"; recommends "App::cpanminus" => "0"; recommends "Archive::Tar::Wrapper" => "0.15"; recommends "Data::OptList" => "0.110"; recommends "Term::ReadLine::Gnu" => "0"; suggests "PPI::XS" => "0"; on 'test' => sub { requires "CPAN::Meta::Check" => "0.011"; requires "CPAN::Meta::Requirements" => "2.121"; requires "ExtUtils::MakeMaker" => "0"; requires "ExtUtils::Manifest" => "1.66"; requires "File::Spec" => "0"; requires "Software::License::None" => "0"; requires "Test::FailWarnings" => "0"; requires "Test::Fatal" => "0"; requires "Test::File::ShareDir" => "0"; requires "Test::More" => "0.96"; requires "lib" => "0"; requires "strict" => "0"; }; on 'test' => sub { recommends "CPAN::Meta" => "2.120900"; }; on 'configure' => sub { requires "ExtUtils::MakeMaker" => "6.78"; requires "File::ShareDir::Install" => "0.06"; }; on 'develop' => sub { requires "Test::CleanNamespaces" => "0.15"; requires "Test::More" => "0.94"; requires "Test::Pod" => "1.41"; requires "strict" => "0"; }; Dist-Zilla-6.032/bin/000755 000765 000024 00000000000 14624411017 014353 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/Changes000644 000765 000024 00000205526 14624411017 015110 0ustar00rjbsstaff000000 000000 Revision history for Dist-Zilla 6.032 2024-05-25 12:30:02-04:00 America/New_York - UploadToCPAN errors will distinguish between "couldn't find password" and "something went wrong trying to get password" - UploadToCPAN can now use any Login-type stash for credentials, not just a PAUSE-class stash 6.031 2023-11-20 19:49:23-05:00 America/New_York - avoid some warnings on platforms without symlinks; (thanks, reneeb!) 6.030 2023-01-18 21:36:40-05:00 America/New_York - "dzil new" will use command line options before configuration - "dzil add" now falls back to %Mint stash options before defaults (for both of the above: thanks, Graham Knop!) 6.029 2022-11-25 17:02:33-05:00 America/New_York - update some links to use https instead of http (thanks, Elvin Aslanov) - turn on strict and warnings in generated author tests (thanks, Mark Flickinger) - use "v1.2.3" for multi-dot versions in "package NAME VERSION" formats (thanks, Branislav Zahradník) - fixes to operation on msys (thanks, Paulo Custodio) - add "main_module" option to MakeMaker (thanks, Tatsuhiko Miyagawa) - fix authordeps behavior; don't add an object to @INC (thanks, Shoichi Kaji) 6.028 2022-11-09 10:54:14-05:00 America/New_York - remove bogus work-in-progress signatures-using commit from 6.027; that was a bad release! thanks for the heads-up about it to Gianni "dakkar" Ceccarelli! 6.027 2022-11-06 17:52:20-05:00 America/New_York - if DZIL_COLOR is set to 0, override auto-detection 6.025 2022-05-28 11:55:35-04:00 America/New_York - eliminate use of multidimensional array emulation 6.024 2021-08-01 15:38:44-04:00 America/New_York - pass the dist name to Software::License as the program name (thanks, Van de Bugger!) - create the ArchiveBuilder role for building the archive file (thanks, Graham Ollis!) 6.023 2021-07-06 21:37:37-04:00 America/New_York - tweak the autoprereqs tests to avoid failing when List::MoreUtils (which DZ does not actually need) is not installed) 6.022 2021-06-27 21:36:53-04:00 America/New_York - remove dependency on Class::Load, which is not used - bump prereq on PPI to 1.222, which is now used in PkgVersion (thanks, Dan Book and Sven Kirmess) 6.021 2021-06-27 21:31:21-04:00 America/New_York - [ broken release, don't bother ] 6.020 2021-06-14 12:16:09-04:00 America/New_York - The log colorization code was trying to use 24-bit color even when the installed Term::ANSIColor couldn't support it. This has been fixed by requiring Term::ANSIColor v5. Thanks, Robert Rothenberg, Michael McClimon, and Matthew Horsfall. 6.019 2021-06-13 08:39:14-04:00 America/New_York - When using "use_package" in PkgVersion, do not eradicate the entire block of "package NAME BLOCK" syntax! Wow, what a bug... 6.018 2021-04-03 21:07:54-04:00 America/New_York (TRIAL RELEASE) - require perl v5.20.0, now seven years old - add Test::CleanNamespaces, clean all namespaces - add the same boilerplate of version/pragma/features to every module - colorize logger prefix when running in a terminal 6.017 2020-11-02 19:30:21-05:00 America/New_York - replace broken 6.016, released from a confused git repo 6.016 2020-11-02 19:27:18-05:00 America/New_York (TRIAL RELEASE) - the test generated by [MetaTests] is now an author test, not a release test (thanks, Karen Etheridge) - UploadToCPAN will now retry (thanks, PERLANCAR) - some bug fixes for msys (thanks, Håkon Hægland) 6.015 2020-05-29 14:30:51-04:00 America/New_York - add docs for "dzil release -j" (thanks, Jonas B. Nielsen) - fix support for dist.pl (why??? 🙂) (thanks, Kent Frederic) - remove unnecessary check for Pod::Simple being loaded (Dave Lambley) 6.014 2020-03-01 04:26:38-05:00 America/New_York - some doc improvements by Shlomi Fish - cope with E<...> in abstracts (thanks, Dave Lambley!) - Respect jobs number in HARNESS_OPTIONS (thanks, Leon Timmermans!) - Add --jobs argument to dzil release (thanks, Leon Timmermans!) - replace uses of File::HomeDir with a simple glob (thanks, Karen Etheridge!) - fix interaction of TRIAL comment and BEGIN block in PkgVersion (thanks, Michael Conrad and Felix Ostmann) - fix documentation for default NextRelease format (thanks, Dan Book!) - the build directory is also added to @INC when evaluating 'dzil authordeps --missing' (thanks, Karen Etheridge!) - add comments to generated CPANfile saying "don't edit me!" (thanks Doug Bell) - tests for [CPANFile] (thanks, Daniel Böhmer) 6.013 2019-04-30 07:35:49-04:00 America/New_York (TRIAL RELEASE) - when SPDX metadata is available for the chosen license, x_spdx_expression is added to the dist metadata by default (thanks, Leon Timmermans!) 6.012 2018-04-21 10:20:21+02:00 Europe/Oslo - revert addition of Archive::Tar::Wrapper as a mandatory prereq (in release 6.011). - require a version of Config::MVP that adds the cwd back to @INC - record the perl version being used into META file - tiny fix to help output for "dzil new" 6.011 2018-02-11 12:57:02-05:00 America/New_York - stashes can now be added in [%Stash] form from a bundle (thanks, Karen Etheridge) - use $V env var as an override, when set, in [AutoVersion] (thanks, Karen Etheridge) - all remaining uses of Class::Load are replaced with Module::Runtime (thanks, Karen Etheridge) 6.010 2017-07-10 09:22:16-04:00 America/New_York - a few documentation improvements (thanks, Chase Whitener, Mary Ehlers, and Jonas B. Nielsen) - improve behavior under a noninteractive terminal - empty file finders should now consistently return [] 6.009 2017-03-04 11:16:37-05:00 America/New_York - update DateTime::TimeZone prereq on Win32 to improve workingness (thanks, Schwern!) - add --recommends and --requires and --suggests to listdeps - improve testing of listdeps (thanks, Mickey Nasriachi!) - Module::Runtime is now considered 'internal' for the purpose of carping (thanks, Karen Etheridge!) - ./tmp is now pruned by PruneCruft (thanks, Karen Etheridge!) - authordeps now picks up :version for the root section (thanks, Karen!) - the config loading of the "perl" config loader is more reliable, but still please don't use it (thanks, Karen!) - introducing a new plugin, [GatherFile], to support adding individual files to the distribution (thanks, Karen!) 6.008 2016-10-05 21:35:23-04:00 America/New_York - fix the skip message from ExtraTests (thanks, Roy Ivy Ⅲ!) - cope with error changes in latest Moose (thanks, Karen Etheridge and Dave Rolsky) - always stringify $] in MetaConfig to avoid losing trailing zeroes through numification (thanks, Karen Etheridge!) 6.007 2016-08-06 14:04:39-04:00 America/New_York - restrict [MetaYAML] to metaspec v1.4, [MetaJSON] to v2.0+, as other version combinations are not well-supported by the toolchain 6.006 2016-07-04 10:56:36-04:00 America/New_York - add some documentation to Dist::Zilla::App::Tester (thanks, Alberto Simões!) - optimizations to regex munging (thanks, Olivier Mengué!) - add x_serialization_backend to META.* files (thanks, Karen Etheridge!) - metadata plugins are called before metadata defaults are built (thanks, Karen Etheridge!) - don't use ExtraTests plugin, but if you do, its generated test files are a bit faster when unused 6.005 2016-05-23 08:08:15-04:00 America/New_York - NextRelease now dies if there's no changelog file found (thanks, Karen Etheridge) - Module::Runtime replaces Class::Load (thanks Olivier Mengué) 6.004 2016-05-14 09:14:19-04:00 America/New_York (TRIAL RELEASE) - stop listing Path::Class as a prereq (thanks, Karen Etheridge) - update docs on path types (thanks, Graham Ollis) 6.003 2016-04-24 19:23:46+01:00 Europe/London (TRIAL RELEASE) - leading BOM (FEFF) is stripped on UTF-8 content - PPI now handles characters, not bytes, fixing non-ASCII non-comments in your source 6.002 2016-04-23 17:50:26+01:00 Europe/London (TRIAL RELEASE) - tweaks to Dist::Zilla::Path to keep plugins from v5 era working 6.001 2016-04-23 13:21:56+01:00 Europe/London [THIS RELEASE MIGHT BREAK YOUR BUILD] - Using a Dist::Zilla::Path like a Path::Class object now issues a deprecation warning ("this will be removed") once per call site. 6.000 2016-04-23 11:35:28+01:00 Europe/London (TRIAL RELEASE) [THIS RELEASE MIGHT BREAK YOUR BUILD] - Path::Class has been excised in favor of Path::Tiny, exposed as Dist::Zilla::Path; it will still respond to ->subdir and ->file, but only until Dist::Zilla v7 -- fix your plugins by then! - The --verbose switch to dzil is now strictly on/off. To set verbosity on a per-plugin basis, use the -V switch. Unfortunately, per-plugin verbosity seems to have been broken for some time, anyway. - The plugins [Prereq] and [AutoPrereq] and [BumpVersion] have been removed. These were long deprecated. (Don't confuse Prereq, for example, with the plural Prereqs, which is the correct plugin.) - [PkgVersion] now supports a use_package argument which will put the version in the package statement. (Remember that this syntax was introduced in perl v5.12.0.) - Dist::Zilla now requires perl v5.14.0. It will still happily build dists that run on whatever version of perl you like. 5.047 2016-04-23 16:20:13+01:00 Europe/London - cast things to Path::Class as needed, for now, for v6 backcompat (don't expect more commits like this) 5.046 2016-04-22 15:50:27+01:00 Europe/London - avoid using syntax that is called ambiguous on older perls 5.045 2016-04-22 11:37:13+01:00 Europe/London - add 'relationship' option to AutoPrereqs plugin (Karen Etheridge) - PrereqScanner role abstracts much of the AutoPrereqs behavior (thanks, Olivier Mengué!) - remove duplicates from the results of the :ExecFiles filefinder - [MakeMaker] now rejects version ranges in prereqs if eumm_version is not specified to be high enough (7.1101) to guarantee it can be handled (Karen Etheridge) - allow comments in an authordep specification with a version - make FakeReleaser a bit more of a drop-in for UploadToCPAN (Erik Carlsson) - make PkgDist preserve blank line after 'package' for PkgVersion (Chisel Wright) - add rename option to [GatherDir::Template] (Alastair McGowan-Douglas) - META.json is now emitted in ASCII (using \u... for non-ASCII characters) to avoid a bug in older versions of JSON::PP on older versions of perl - "dzil build --in ." no longer allows you to blow away your cwd 5.044 2016-04-06 20:32:14-04:00 America/New_York - require a newer List::Util to avoid a dumb bug caused by relying on side effects of loading Moose (thanks, Karen Etheridge!) 5.043 2016-01-04 22:54:56-05:00 America/New_York - dzil test now supports --extended to set EXTENDED_TESTING (thanks, Philippe Bruhat) 5.042 2015-11-26 09:05:37-05:00 America/New_York - try to avoid testing errors when the local time zone can't be determined (https://github.com/rjbs/Dist-Zilla/issues/497) 5.041 2015-10-27 22:07:54-04:00 America/New_York - add 'static_attribution' attribution to MakeMaker plugin - fix prereqs for App::Cmd and Config::MVP::Reader::INI 5.040 2015-10-13 11:42:25-04:00 America/New_York - the distribution tarball name no longer includes -TRIAL if the version contains an underscore - [PkgVersion] adds "$VERSION = $VERSION_SANS_UNDERSCORES" when version contains an underscore - made the PodCoverageTests and PodSyntaxTests plugins generate author tests, not release tests. These are tests you want passing on every commit, not just before a release (Dave Rolsky) 5.039 2015-08-10 09:03:08-04:00 America/New_York - update required version of MooseX::Role::Parameterized; older versions work, but can cause a bunch of unwanted warnings 5.038 2015-08-07 22:16:50-04:00 America/New_York - [License] can be given a filename option to use instead of LICENSE - dzil listdeps --develop now exists as an alias for dzil listdeps --author (Karen Etheridge) - dzil authordeps now lists the Software::License class needed (thanks, David Zurborg) - PkgVersion now skips .pod files (thanks, David Golden) - build_element support added for [ModuleBuild] (thanks, David Wheeler!) - new native filefinder :ExtraTestFiles (thanks, Karen Etheridge) - [AutoPrereqs] now looks for develop prerequisites in xt/ (thanks, Karen Etheridge) - new file finder ':PerlExecFiles' (thanks, Karen Etheridge) - try harder to notice failure to set up build root, especially on Win32 (thanks, Christian Walde) - better errors when a global config package isn't available (thanks, Karen Etheridge) - added the "ignore" option to [Encoding] (thanks, Yanick Champoux) - allow ; authordep specifications to contain version ranges (thanks, Karen Etheridge) - better error when PAUSE credentials can't be loaded (thanks, David Golden) - fix documentation for the LicenseProvider role - improve errors when PPI failes to parse (thanks, Nick Tonkin) - sort list of executable files in Makefile.PL, for deterministic builds (thanks, Karen Etheridge) - omit configure-requires prerequisites from [MakeMaker]'s fallback prerequisites (used by older ExtUtils::MakeMaker) 5.037 2015-06-04 21:46:38-04:00 America/New_York - issue a warning when version ranges are passed through to ExtUtils::MakeMaker, which cannot parse them and treats them as '0' https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/issues/215 - added %P formatter code to [NextRelease] for the releaser's PAUSE id 5.036 2015-05-02 11:08:51-04:00 America/New_York - BUGFIX: detection of trial status via underscore in version was accidentally lost in v5.035; restored now! 5.035 2015-04-16 15:43:26+02:00 Europe/Berlin - BREAKING CHANGE: is_trial is now read-only - release_status is a new Dist::Zilla attribute and ReleaseStatusProvider plugin role 5.034 2015-03-20 10:57:07-04:00 America/New_York - require new Config::MVP for better exceptions (that we rely on) - point to IRC in dist metadata 5.033 2015-03-17 07:45:36-04:00 America/New_York - NextRelease now bases the new file on disk on the original file on disk, skipping any munging that happened in between - improve error message when a plugin can't be loaded - added "use_begin" option to PkgVersion 5.032 2015-02-21 09:36:00-05:00 America/New_York - when :version is in plugin config, it's now enforced as soon as it's seen - add more documentation about bytes/text files - PruneCruft also prunes _eumm/* now 5.031 2015-01-08 22:04:30-05:00 America/New_York - correct a test to avoid testing symlinks on Win32 5.030 2015-01-04 22:31:38-05:00 America/New_York - fixed [GatherDir]'s handling of symlinks to directories - [AutoPrereqs] now filters out all namespaces found in contained modules, not just the one corresponding to the module filename 5.029 2014-12-14 14:44:44-05:00 America/New_York - fix new error in [PkgVersion] when a module had no package statements - further rip out use of JSON.pm 5.028 2014-12-12 19:06:23-05:00 America/New_York - fix regression in [PkgVersion] that made false-positive identifications for pre-existing assignments to $VERSION - try avoid cases in which plugin code directly modifies file list - switch, tentatively, to JSON::MaybeXS 5.027 2014-12-09 09:30:30-05:00 America/New_York - fix regression in Plugin->plugin_from_config which started passing a list of pairs rather than a hashref 5.026 2014-12-08 21:33:55-05:00 America/New_York - eliminate use of Moose::Autobox - various small performance optimizations - add "use_our" option to PkgVersion 5.025 2014-11-10 21:12:14-05:00 America/New_York - fix file.t failures with perl v5.14 and v5.16's Carp 5.024 2014-11-05 23:08:07-05:00 America/New_York - add the %Mint stash for minting defaults - quiet down some low-priority log lines - teeny tiny optimization by building dist prereqs structure lazily - avoid ever requiring v0 of ExtUtils::MakeMaker - fix a module-loading ordering issue in `dzil setup` 5.023 2014-10-30 22:56:42-04:00 America/New_York - optimizations to loading of heavyweight libraries in cmd line app - some tests are now skipped on Win32 to avoid filename insanity - files' added_by data should be more informative - conflicts with installed code is now detected and/or advertised 5.022 2014-10-27 22:55:53-04:00 America/New_York - several optimizations to how PPI is used - handle an empty ABSTRACT better - now properly merging distmeta fragments together without loss, using new CPAN::Meta::Merge - create Makefile.PL and Build.PL files earlier, so they're in the file list "the whole time" 5.021 2014-10-20 22:43:52-04:00 America/New_York - improve authordeps' ability to cope with version requirements and non-default plugin names - a few improvements to help given by "dzil help COMMAND" - fixes a situation where exclusion-regexp-building in GatherDir could mangle the given regexps - now properly merging distmeta fragments together without loss, using new CPAN::Meta::Merge (Karen Etheridge) - [PkgVersion] now properly skips over $VERSION assignments in comments (Karen Etheridge, github #322) - the building of manpages is supressed in [MakeMaker]-driven builds - lazily load quite a few more modules - avoid using user's ~/.dzil even more - while building dists for testing, don't bother building man pages - try harder to notice minimum required perl version - try harder to delete temporarily directory at the end of testing - don't treat $VERSION assignments in comments as $VERSION assignments - listdeps now takes --omit-core to skip core modules - don't try to use terminal encoding on locale-free systems - suggest the use of PPI::XS - speed up and debug behavior of GatherDir 5.020 2014-07-28 20:56:25-04:00 America/New_York - the default required version for ExtUtils::MakeMaker in [MakeMaker] has been removed - load DateTime lazily - the default required version for Module::Build in [ModuleBuild] has been lowered 5.019 2014-05-20 21:11:47-04:00 America/New_York - remove a very brief-lived attempt to double-decode 5.018 2014-05-20 21:07:04-04:00 America/New_York - attempt to return abstract-from-file as a string, rather than bytes, which can lead to weirdness (github issue #303) 5.017 2014-05-17 08:35:33-04:00 America/New_York - dotfiles and dot-directories are now included in sharedirs - ModuleBuild and MakeMake should not re-build if it isn't needed - authordeps now better understands "perl" dep - munging of README is delayed to prevent unneeded work and complication - MANIFEST is now treated as a binary file - 'dzil setup' now warns that credentials are stored in the clear - MakeMaker should include fewer empty and useless hashrefs - Makefile.old is now pruned as cruft 5.016 2014-05-05 22:27:06-04:00 America/New_York - hint about [Encoding] plugin in encoding error message (David Golden) 5.015 2014-03-30 21:55:36-04:00 America/New_York - make it easier to have multiple PAUSE configs using UploadToCPAN's pause_cfg_dir option (thanks, David Golden) 5.014 2014-03-16 16:47:07+01:00 Europe/Paris - Added 'jobs' argument for 'dzil test' for parallel testing (thanks, David Golden!) - add default_jobs attribute to TestRunner role - fix the behavior of 'dzil add' with more than one file (thanks, Leon Timmermans!) 5.013 2014-02-08 17:08:16-05:00 America/New_York - META.json is now a UTF-8 file, rather than ASCII - document the use of filefinders in [PkgVersion], and remove filtering out of .t, .pod files; do skip non-text files, though - always load modules in "extra tests" like pod-coverage.t - PruneCruft also prunes ./fatlib - avoid being tricked by statements in __END__ section when looking for variable assignments - if "dzil install" fails due to exception, it is now propagated - provide a better error when terminal encoding can't be determined 5.012 2014-01-15 09:58:00-05:00 America/New_York - when handling a multi-line abstract, fold the lines on whitespace; previously, the newlines had been left in, which caused downstream warnings 5.011 2014-01-12 16:09:29-05:00 America/New_York - ->VERSION is again defined in the tester forms of Builder and Minter - remove a small obsolete code path from PkgVersion 5.010 2014-01-11 22:06:04-05:00 America/New_York - stop sharing a reference to cached PPI docs, which led to spooky action at a distance - PkgVersion no longer surrounds the new $VERSION assignment with a bare block - if there's a blank line after the package statement (and any number of comment-only lines), PkgVersion will use that for a $VERSION assignment, rather than insert a new line; this can be made mandatory with die_on_line_insertion 5.009 2014-01-07 20:21:17-05:00 America/New_York - include time offset by default in NextRelease - always pass PPI octets, not text 5.008 2013-12-27 21:57:02 America/New_York - fix utterly broken `dzil run` 5.007 2013-12-27 20:50:45-05:00 America/New_York - add the ability to say "dzil run --no-build" to run a command without building inside the dist dir (in other words, no `perl Makefile.PL && make`) - Archive::Tar::Wrapper added as a recommended prereq - fix :ShareFiles (thanks, Christopher J. Madsen and Karen Etheridge) - new :AllFiles and :NoFiles filefinders (thanks, Karen Etheridge) - most files generated by dzil plugins now self-identify with comments 5.006 2013-11-06 09:21:12 America/New_York - add ->is_bytes to files; shortcut for ->encoding eq 'bytes' (thanks, David Golden) - AutoPrereqs will not try scanning binary files (thanks, David Golden) 5.005 2013-11-02 16:32:04 America/New_York - add --keep-build-dir to "dzil test" and "dzil install" 5.004 2013-11-02 09:59:18 America/New_York [THIS RELEASE MIGHT BREAK YOUR BUILD] - stable release of all the v5 changes below; READ THEM! - by default, NextRelease now adds a trial release marker on trial releases - dzil setup will not echo password during setup 5.003 2013-10-30 08:02:59 America/New_York [THIS RELEASE MIGHT BREAK YOUR BUILD] - add "dzil --version" support (thanks, Upasana Shukla) - fix boneheaded mistake that broke listdeps in 5.002 (thanks, Karen Etheridge) 5.002 2013-10-29 10:35:54 America/New_York [THIS RELEASE MIGHT BREAK YOUR BUILD] - perform encoding steps during listdeps 5.001 2013-10-23 17:40:09 America/New_York [THIS RELEASE MIGHT BREAK YOUR BUILD] - typo fixes (thanks, David Steinbrunner) 5.000 2013-10-20 08:10:02 America/New_York [THIS RELEASE MIGHT BREAK YOUR BUILD] - all files now have content, encoded_content, and encoding attributes - the Encoding plugin and EncodingProvider role have been added to allow you to set the encoding on files; the default is UTF-8 - config.ini is assumed to be in UTF-8 - Data::Section sections are assumed to be UTF-8 - the Term chrome should encode input and output 4.300039 2013-09-20 06:05:10 Asia/Tokyo - tweak metafile generator to keep CPAN::Meta validator happy (thanks, David Golden) 4.300038 2013-09-08 09:18:34 America/New_York - add horrible hack to avoid generating non-UTF-8 META.yml; seriously, don't look at the code! Thanks, David Golden, whose code was simple and probably much, much saner, but didn't cover as many cases as rjbs wanted to cover. 4.300037 2013-08-28 21:43:36 America/New_York - update repo and bugtacker URLs 4.300036 2013-08-25 21:41:21 America/New_York - read CPAN::Uploader config with CPAN::Uploader, to work with new trial releases supporting encrypted credential (thanks, Mike Doherty) - improve tester tests (thanks, Dave O'Neill!) - use Class::Load instead of Class::MOP - better error messages when a bundle can't be loaded by @Filter - make dynamic_config distmeta sticky; once one plugin sets it, it stays stuck - add a die_on_existing_version option to PkgVersion - switch (for now?) "dzil install" to use cpanm - PkgVersion won't rewrite file contents if nothing was changed (thanks, Mike Doherty!) 4.300035 2013-06-19 21:37:28 America/New_York - update for new Perl::PrereqScanner, which will find "lib" - update AutoPrereqs to skip Config and Errno - fix docs to not suggest obsolete "Prereq" name (thanks, Ivan Bessarabov!) 4.300034 2013-04-13 16:56:48 Europe/London - delay loading of CPAN::Uploader, and require a newer version to require HTTPS (thanks, Olivier Mengué!) 4.300033 2013-04-05 15:00:37 America/New_York - fix .build/latest (thanks, Karen Etheridge!) - doc fixes (thanks, Randy Stauner!) 4.300032 2013-03-29 16:41:11 America/New_York - test_requires support for ModuleBuild and MakeMaker (thanks, Tatsuhiko Miyagawa!) 4.300031 2013-03-17 21:47:31 America/New_York - stacktrace removed from exception when a plugin's minimum version check fails (thanks, Karen Etheridge!) - add 'dzil listdeps --json', which lists all prerequisites broken up by phase and type, in readable JSON format (thanks, Karen Etheridge!) - improve errors when there's not enough configuration and no global config file can be found (thanks, Dimitar Petrov) - delay loading yet more libraries until needed (thanks, Olivier Mengué!) 4.300030 2013-01-30 22:25:27 America/New_York - listdeps --versions now sorts properly (thanks, Karen Etheridge!) - delay loading more libraries until needed (thanks, Olivier Mengué!) - excluded filenames in GatherDir were sometimes matched too fuzzily (thanks, Mike Doherty) 4.300029 2013-01-14 20:03:15 America/New_York - allow :version directive in root section to require a given version of Dist::Zilla - simply and speedify some of GatherDir (Thanks, Olivier Mengué!) 4.300028 2012-10-19 10:50:42 America/New_York - when picking modules to treat as "part of the dist," be more lax in understanding libraries under ./t: ./t/lib/Foo.pm is now treated as providing t::lib::Foo, lib::Foo, and Foo 4.300027 2012-10-16 21:07:06 America/New_York - the "latest" symlink code broke Dist::Zilla on win32; fixed now! (thanks, Brendan Byrd!) 4.300026 2012-10-13 22:21:17 America/New_York - PodSyntaxTests, PodCoverageTests and MetaTests now add the right develop/requires prereqs (thanks, Olivier Mengué and Ricardo Signes!) - ModuleBuild now takes an mb_lib argument that can override the default of "inc" (thanks, ben hengst) - create .build/latest symlink when a build in .build is built (thanks, Alexei Znamensky!) - allow "-version" arg to [@Filter] to specify the version of the bundle required (thanks, Rob Hoelz) 4.300025 2012-10-07 23:02:33 America/New_York - add the LicenseProvider and NameProvider roles (thanks, Vyacheslav Matjukhin!) - make Dist::Zilla::App::Tester be a CaptureExternal App::Cmd::Tester 4.300024 2012-09-26 12:01:45 America/New_York - include $] in MetaConfig data 4.300023 2012-09-06 09:01:12 America/New_York - do not use ">" in a filename; fixes the build on Win32 (thanks, djgoku!) 4.300022 2012-09-05 08:35:27 America/New_York - do not detect an escaped "\$VERSION =" as an assignment to a variable (this is sort of a half-measure) - 'dzil run' also edits $PATH to include ExecDir directories (Karen Etheridge) 4.300021 2012-07-31 23:20:50 America/New_York - plugins can now provide a MANIFEST.SKIP that can be processed by ManifestSkip. Previously generated content was just ignored. (thanks, Olivier Mengué!) - GenerateFile can now also template its filename, with the name_is_template option (Thanks, Karen Etheridge!) 4.300020 2012-06-21 11:17:40 America/New_York - properly set the working directory when testing (thanks, Jesse Luehrs!) 4.300019 2012-06-20 15:36:01 America/New_York - avoid looking outside the dist during testing (thanks, Jesse Luehrs!) 4.300018 2012-06-07 22:25:03 America/New_York - format codes %E, %T, %U, & %V added to NextRelease (thanks, Karen Etheridge & Christopher J. Madsen!) 4.300017 2012-05-31 12:17:45 America/New_York - also check plugin version requirements in dzil authordeps --missing (Karen Etheridge) - add 'dzil add' to add new modules to an existing dist (thanks, David Golden!) - misc. bugfixes (thanks, Karen Etheridge and Olivier Mengué!) 4.300016 2012-05-04 22:09:10 America/New_York - make AutoPrereqs treat .psgi files as scannable (thanks, Jakob Voss!) - add yet more links in plugins documentation to help discoverability of other plugins. (thanks, Olivier Mengué!) - AutoPrereqs: skip author and release tests when scanning (RT#76305). (thanks, Olivier Mengué!) 4.300015 2012-04-23 21:38:21 America/New_York - require a CPAN::Meta::Requirements 2.121 to get the requirements_for_module (thanks, Olivier Mengué!) - 'dzil run' with no arguments will now invoke a new shell. (thanks, Karen Etheridge!) - dzil clean now has has a "dry run" option. (thanks, Karen Etheridge!) - add more links in plugins documentation to help discoverability of other plugins. (thanks, Olivier Mengué!) - support :version requirement for bundles (thanks, Randy Stauner!) 4.300014 2012-04-05 12:46:33 America/New_York - added the CPANFile plugin to create "cpanfile" prereq format - stop emitting an empty line in authordeps output (thanks, Olivier Mengué!) 4.300013 2012-03-31 15:55:47 Europe/Paris - dzil test has a new option, --all, which is the equivalent of --release --automated --author. 4.300012 2012-03-30 14:31:56 Europe/Paris - add 0 and never to the prereqs (thanks, David Golden) 4.300011 2012-03-30 11:42:44 Europe/Paris - do not claim that a dep is missing in "listdeps" when it is present with an undef $VERSION and we only require version 0 (reported by Matthew Horsfall) 4.300010 2012-03-15 21:38:58 America/New_York - The GatherDir::Template documentation has been improved (Thanks, Christopher J. Madsen!) - Depend on a more recent version of Config::MVP, which requires a fix in Class::Load to fix detection of plugin compilation errors on perl5.8.8 (see Class::Load Changes file for details.) (Karen Etheridge) - Add --versions support to listdeps and authordeps (Cory G Watson) - Documentation fixes 4.300009 2012-02-21 19:38:29 America/New_York - PruneCruft also excludes the _Inline/ directory and MYMETA.json - MakeMaker has been refactored to make it easier to subclass (Thanks, Christopher J. Madsen!) 4.300008 2012-02-16 17:28:34 America/New_York - work around qr//m bug in 5.8.8 and earlier (thanks, Randy Stauner!) - Fix to MakeMaker plugin: use separate scope for code that changes namespace, when inserting ShareDir code. (RT#74788) (Karen Etheridge) 4.300007 2012-02-02 22:23:05 America/New_York - Remove configs beginning with ':' from argument list before constructing that config; fixes issue where :version was being passed to a plugin that had a strict constructor. (Karen Etheridge) 4.300006 2011-12-30 15:28:34 America/New_York - New methods dist_basename & archive_filename allow plugins to reliably get that information. This makes TestRelease testable. (Thanks, Kent Fredric & Christopher J. Madsen!) - Your PAUSE password will now no be echoed if entered at the prompt, on most operating systems (Thanks, Mike Doherty!) - replace use of Version::Requirements with CPAN::Meta::Requirements, its replacement 4.300005 2011-12-13 08:49:19 America/New_York - Prereqs now actually understands -relationship as documented in 4.300004. Also, it throws an error if you give it a plugin name that does not specify a relationship (Thanks, Christopher J. Madsen!) 4.300004 2011-12-12 23:34:30 America/New_York - a new FileFinder plugin has been added, FileFinder::Filter (Thanks, Christopher J. Madsen!) - AutoPrereqs can now be told to determine configure_requires (Thanks, Christopher J. Madsen!) - the (lack of) order of check of authordeps is now a bit more predictible: - plugins declared with "; authordep" lines are loaded before others - inc:: plugins are checked first and in ASCII order (Thanks, Olivier Mengué!) - Many slow-to-load modules are now loaded opportunistically to improve startup time. (Thanks Olivier Mengué and rjbs) - ShareDir documentation has been improved (thanks, Karen Etheridge) - Prereqs documentation has been improved 4.300003 2011-10-31 23:58:19 America/New_York - If no credentials are found on disk, UploadToCPAN will now prompt for credentials during the BeforeRelease phase, not during release (Thanks, Christopher J. Madsen!) - AutoPrereqs can now be told what scanners or extra_scanners args to pass to Perl::PrereqScanner (Thanks, Christopher J. Madsen!) - Prune perl prereqs out of BUILD_REQUIRES for EU::MM, and pick the highest required perl of either runtime or built requires. (Thanks, Christopher J. Madsen!) - Test routines should now properly report the calling line for failures ($Test::Builder::Level is being set) (Thanks, Christopher J. Madsen!) - the is_filelist test assertion now works with objects that do the Dist::Zilla::Role::File role (Thanks, Christopher J. Madsen!) - a new FileFinder plugin has been added, FileFinder::ByName (Thanks, Christopher J. Madsen!) 4.300002 2011-09-22 09:43:45 America/New_York - fix a bug that does Weird Stuff when a 0b file exists (thanks, Christian Walde!) 4.300001 2011-09-19 15:46:18 America/New_York - Several improvements to how PPI is used should speed up the performance of Perl file munging and scanning. The PPI role was added. (Thanks, Dave Rolsky!) - We now use Archive::Tar::Wrapper if available, to speed up archive building. (Thanks, Dave Rolsky!) 4.300000 2011-08-19 10:12:36 America/New_York - turn on Useqq option for Dumper, to get unicode string literals set properly in Makefile.PL and Build.PL without using utf8.pm - decode user input from Chrome::Term as UTF-8 - during `dzil setup`, the config.ini file is now created with an added umask of 077 to avoid other users reading your PAUSE credentials - update almost all Moose code to use make_immutable and namespace::autoclean 4.200018 2011-08-18 11:13:03 America/New_York - correct Perl::PrereqScanner version requirement, which was too low 4.200017 2011-08-17 18:54:07 America/New_York - require and adapt to the new Perl::PrereqScanner, which does not prune out prereqs just because they're core and common 4.200016 2011-08-17 18:07:21 America/New_York - add options to exclude files from GatherDir (David Golden) 4.200015 2011-08-12 13:45:42 America/New_York - don't build the dist in a directory with -TRIAL in the name; this should fix bugs in "dzil release --trial" and probably other related bugs 4.200014 2011-08-07 18:18:01 America/New_York - add documentation for TemplateModule (thanks, Kent Fredric) - fixes to tester.t for Win32 (thanks, Christian Walde) 4.200013 2011-08-05 09:30:01 America/New_York - "dzil listdeps --missing" no longer dies if it encounters an invalid $VERSION (Jesse Luehrs) - PkgVersion and PkgDist no longer use BEGIN blocks 4.200012 2011-07-18 09:02:09 America/New_York - allow abstracts of more than one line, or with more than one word before the dash, to be properly extracted (Florian Ragwitz) - stringify tarball name to work with older Archive::Tar (Jan Tore Morken) 4.200011 2011-07-14 22:53:34 America/New_York move the file mode setting into the tar creation, not a fixup step 4.200010 2011-07-14 22:27:46 America/New_York fix [rt.cpan.org #68223] -- Test::Dzil built tarballs with bad root dirs; test and code mostly provided by Rob Hoelz 4.200009 2011-07-06 23:26:09 America/New_York the "skip" argument to AutoPrereqs can now be given multiple times authordeps now makes a rough attempt to deal with [@Filter] catch and simplify "no dist.ini" errors from MVP UploadToCPAN now takes a "upload_uri" option UploadToCPAN will now prompt for credentials if needed add follow_symlinks to GatherDir (thanks, Luc St-Louis) 4.200008 2011-06-23 11:53:56 America/New_York PodVersion no longer drops the file's last newline listdeps now includes recommended prereqs as well as required 4.200007 2011-06-01 21:52:00 America/New_York always numify the version use in "use VERSION" in Makefile.PL 4.200006 2011-04-28 21:14:04 America/New_York MakeMaker-generated Makefile.PL now only has configure_requires of 6.30 so dists can be installed on RHEL5 improve consistency and options of *_TESTING env vars (Apocalypse) improve FileFinder-related documentation (thanks, Apocalypse) add a default file finder called :IncModules (thanks, Apocalypse) add a default file finder called :MainModule (thanks, Mateu X. Hunter) phase for named Prereqs defaults to Runtime if omitted (Jonathan Yu) extract the *Runner role implementations from ModuleBuild to Role::BuildPL (Leon Timmermans) 4.200005 2011-04-25 12:20:59 America/New_York provide actual name of releaser(s) in ConfirmRelease error message if "dzil run" is run without a command to run some minor refactoring in listdeps (Jon Rockway) listdeps can now skip already-met prereqs (Jesse Luehrs) authordeps now skips plugins under inc:: (Jesse Luehrs) authordeps now scans for "; authordep" comments 4.200004 2011-02-11 16:17:37 America/New_York Add Tests for Config::MVP 2.200 changes. ( Kent Fredric ) MetaNoIndex, originally by J.T. Smith and Mark Gardner, is now included 4.200003 2011-02-06 21:37:45 America/New_York avoid test failures on systems where time zone can't be determined 4.200002 2011-02-04 18:02:16 America/New_York Test::DZil is now installed and available to other dist 4.200001 2011-01-19 21:59:18 America/New_York add --author to listdeps (Jesse Luehrs) better logging and error messages (Dave Rolsky, Jesse Luehrs) get abstract from main module more reliably (David Golden) 4.200000 2010-12-13 12:25:38 America/New_York bump version to be easier to skim, until v5 4.102346 2010-12-11 13:19:08 America/New_York make errors during TextTemplate rendering fatal (thanks, Dave Rolsky) provide MakeMaker::Runner if you want to provide your own Makefile.PL (thanks, Florian Ragwitz) 4.102345 2010-11-20 21:28:01 America/New_York add somewhat obscure missing prereq 4.102344 2010-11-19 19:34:21 America/New_York PruneCruft now prunes XS-related and build files: blib, pm_to_blib, .o, .bs, and .c files generated from .xs files PkgVersion now include a "TRIAL" comment for trial dists :InstallModules finder will now include main_modules, even if it was not otherwise found as a .pm in ./lib 4.102343 2010-11-09 07:49:50 America/New_York private packages in PkgVersion can have comments after 'package' before a newline (David Golden) PruneFiles now accepts regex via the "match" parameter (thanks, Nickolay Platonov) Test chrome can be given canned responses to expected prompts (thanks, Christopher J. Madsen) version strings now checked against LaxVersionStr type in PkgVersion, rather than our own regex 4.102342 2010-10-14 23:28:20 America/New_York Improved diagnostics for various 'main_module could not be found' conditions. ( Kent Fredric ) Improved diagnostics for apparently missing plugins (thanks, David Golden) add --missing to authordeps (thanks, Danijel Tasov) 4.102341 2010-09-17 19:14:41 America/New_York ANNOYANCES: [AutoPrereq] and [Prereq] will now complain that you should be using [AutoPrereqs] and [Prereqs]; the irregularly named plugins will be removed in Dist-Zilla v5 add the "authordeps" command avoid clobbering PERL5LIB env var when building add "append_file" parameter to DistINI plugin add "except" parameter to PruneCruft 4.102340 2010-08-22 15:47:51 America/New_York add files to archive in name-length order (thanks, Jonathan Scott Duff) improve permissions of created files on Win32 (thanks, Curtis Jewell) do not clobber PERL5LIB during build (thanks, John Napiorkowski) 4.102221 2010-08-10 11:35:00 America/New_York use the new "mute" feature of Log::Dispatchouli to simplify listdeps make TextTemplate rendering errors fatal document the changes made in 4.102220 4.102220 2010-08-10 07:46:27 America/New_York pass a $dist var to TemplateModule templates 4.101900 2010-07-09 09:05:25 America/New_York add a "subdir" directory to UploadToCPAN 4.101880 2010-07-07 09:25:41 America/New_York stop being so pushy about running dzil setup (reported by AVAR) dzil setup will not die if ~/.dzil does not exist (reported by David Golden) 4.101831 2010-07-02 18:33:58 America/New_York correctly apply another patch from LA.pm that had been misapplied earlier 4.101830 2010-07-02 10:27:24 America/New_York remove the internal-only VersionBootstrap plugin; no longer needed fix a bad logging call in global config setup (LA.pm) tweak to allow tests to pass on 5.8.7 and earlier 4.101812 2010-06-30 23:02:15 America/New_York correctly set local global config root variable (Dave Rolsky) 4.101811 2010-06-30 09:51:43 America/New_York load File::pushd in Minter, where it is needed 4.101810 2010-06-30 09:41:59 America/New_York internal reorganization of test data tests should no longer fail if you have personal config in $HOME 4.101801 2010-06-29 21:17:15 America/New_York rename ClearPrereqs to RemovePrereqs the Zilla assembler no longer provides a default zilla_class (because doing so had lost any meaning) update minter.t to work when *not* logged in as rjbs to his laptop 4.101800 2010-06-29 10:29:38 America/New_York during dist minting, ModuleMaker occurs before FileGatherer ModuleBuild's module_build argument generation is now a method Dist::Zilla is now an abstract base class, basically * Dist::Zilla::Dist::Builder and ::Minter perform the real work * Dist::Zilla::Tester has been updated to work with these a very basic test for minting, now possible, has been added added prune_file method to Dist::Zilla to eliminate the need for altering the ->files arrayref directly added the ClearPrereqs plugin [Prereq] is now called [Prereqs], but [Prereq] will continue to work until v6 or v7 or so 4.101780 2010-06-27 14:30:55 America/New_York the Chrome role now requires three input methods: prompt_any_key, prompt_yn, and prompt_str Term and Test chrome now implement the required input methods ConfirmRelease now uses Chrome to prompt for input `dzil setup` added to create a starting config.ini 4.101740 2010-06-23 22:56:51 America/New_York fix assembly of local stashes (Jesse Luehrs) fix PkgVersion and PodVersion to work on scripts (M. Gardner) add PkgDist plugin for questionable reasons add MintingProfile, `dzil new -P` (rjbs and SamuraiJack) add ModuleShareDirs for per-module ShareDir (David Golden) add the User stash and make author use it by default ManifestSkip no longer falls back to default MANIFEST.SKIP minor improvements to documentation and consistency of code layout 4.101612 2010-06-10 12:12:00 America/New_York The PAUSE indexer will not be pleased. The 4.101610 PkgVersion changes are entirely reverted. 4.101611 2010-06-10 11:37:52 America/New_York added nonsensical $VERSION = $VERSION to appease the PAUSE indexer and other garbage code that evals a single line to guess at the version's value 4.101610 2010-06-10 10:01:37 America/New_York Fix Win32 \r\n emission. \r\n is only emitted now if its there in the original code. Tests included to make sure DZil doesn't sufer the problem under itself on windows. (Kent Fredric) Fix Tar permissions. (Kent Fredric, stolen from Module::Build) @Filter can now pass arguments along to the filter if you use a new dash-prefix config convention. Consult its documentation for more information. (Florian Ragwitz) PkgVersion now adds the version assignment to the same line as the package declaration to avoid altering line numbering. (David Golden) 4.101582 2010-06-07 18:23:04 America/New_York improve tests to work with new CPAN::Meta fix incorrect type constraint in UploadToCPAN 4.101580 2010-06-07 10:21:51 America/New_York make UploadToCPAN look at the right stash by default 4.101570 2010-06-06 23:36:58 America/New_York validate distmeta before writing to disk changes to Dist-Zilla's distribution metadata to validate 4.101550 2010-06-04 11:16:13 America/New_York a number of minor changes to documentation a few improvements to use of type constraints in Zilla.pm some methods that were undocumented have been _-prefixed ModuleBuild now turns on recursive_test_files unconditionally the install_command argument to $zilla->install should now be an arrayref suppressed a stringifying-undef warning when using UploadToCPAN no longer try to compose an obsolete Dist::Zilla::Config role 4.101540 2010-06-03 23:52:52 America/New_York INCOMPATIBLE CHANGES: New global config system! Your ~/.dzil/config.ini is now broken. Running `dzil` should tell you how to fix it. Probably just replace [!release] with [%PAUSE] and delete everything else. Hope that helps! Major refactoring of our use of Config::MVP; this probably won't break anything unless you wrote your own config readers, which I'm pretty sure you haven't done! config parameters beginning with a colon are not passed to plugins (this should not really affect anyone) OTHER CHANGES: plugins are now registered as soon as their config section has been read Dist::Zilla::Role::Stash has been added :version can now be passed as a config section value to require that the config's package be of the specified version reserved config property names (plugin_name, zilla) are now fatal during config read rather than plugin instantiation core license attrs will look in the %Rights stash for defaults `dzil new` will work if you have no configured profiles generated Makefile.PL no longer has trailing spaces (Florian Ragwitz) Document 'user' parameter for :FakeRelease (Kent Fredric) will probably work just fine on Win32 now! 3.101520 2010-06-01 11:50:16 America/New_York unixify all gathered filenames (Christian Walde) ModuleBuild can use a custom M::B class (David Golden, Dave Rolsky) set release_status distmeta based on is_trial (Apocalypse) PkgVersion ignores packages which have a newline between the package keyword and the package name (Dave Rolsky) add version to :ExecFiles (scripts) as well as libraries with PkgVersion and PodVersion added --in option to the 'build' command (Marcel Gruenauer) 3.101461 2010-05-26 22:34:18 America/New_York 3.101460 2010-05-26 08:14:23 America/New_York note required version of Config::MVP::Reader::INI require a newer CPAN::Meta::Converter for laxer url validation 3.101450 2010-05-25 18:18:09 America/New_York compatibility with Config::MVP v1 merge test requires into build requires for MakeMaker require a newer CPAN::Meta::Converter for custom key downgrades 3.101421 2010-05-22 20:48:10 America/New_York note the new version of CPAN::Meta::Converter required 3.101410 2010-05-21 22:17:44 America/New_York cope with newest Config::MVP 3.101400 2010-05-20 11:30:41 America/New_York ModuleBuild now uses $^X to run Build (Christian Walde) MakeMaker now uses the "make" program found in Config (Christian Walde) 3.101390 2010-05-19 09:15:32 America/New_York INCOMPATIBLE CHANGES: the as_distmeta method of Prereqs is removed the ->prereq method on Dist::Zilla is gone (only prereqs remains) distmeta is managed by CPAN::Meta, which expects v2 spec data by default most Dist::Zilla::Types are gone, now in MooseX::Types::Perl OTHER CHANGES: META.json and META.yml are now produced by CPAN::Meta Dist::Zilla::Prereqs now proxies for CPAN::Meta::Prereqs MetaResources supports CPAN Meta Spec version 2, but still works with old-style resources as well (Dave Rolsky) quote filenames with spaces in MANIFEST (Dave Rolsky) Manifest plugin is now a FileGatherer, not an InstallTool attempted a fix for `dzil install` on Win32 (RT #57404) 2.101310 2010-05-11 09:02:45 America/New_York update_filename arg added to NextRelease `dzil new` can now be given a module name instead of dist name PkgVersion will only declare $VERSION once per package in a file 2.101290 2010-05-09 18:43:02 America/New_York added GatherDir::Template (for use in dzil new profiles) GatherDir will skip dot-dirs when excluding dotfiles 2.101241 2010-05-04 22:51:31 America/New_York tests should now pass on Win32 (these changes all thanks to APOCAL) add GenerateFile plugin make PodSyntaxTests require a newer, less-broken Test::Pod sort and indent keys of args written to Makefile.PL and Build.PL add %n and %t for \n and \t to NextRelease 2.101240 2010-05-04 07:46:47 America/New_York remove a 5.12 specific hunk of syntax (...) (thanks, BRICAS) 2.101230 2010-05-03 23:42:27 America/New_York NextRelease now has a time_zone parameter (thanks, APOCAL) add a `dzil listdeps` command based on MARCEL's work (thanks, Robin Smidsrød) the new `dzil new` does stuff, but is not documented add a "user" parameter to FakeRelease (David Golden) minor documentation improvements here and there 2.101170 2010-04-27 09:59:11 America/New_York fix a bug that broke dists with multiple - in their name 2.101160 2010-04-26 19:51:52 America/New_York `dzil new` now does nothing and says so dzil commands will not create a zilla object just for logging easy bundles will less often create names with @@ in them 2.101151 2010-04-25 23:40:28 America/New_York GatherDir and PruneCruft now both have verbose log output the App config system has been moved and made non-public; it was crazy and awful version numbers are not validated by version.pm, not my own dumb regex `dzil clean` no longer removes backup~ files (sorry, jq) TestRelease is better about picking a build location (Christopher J. Madsen) better BUILD_REQUIRES treatment on ancient installer-side EU:MM (David Golden) 2.101150 2010-04-25 11:52:11 America/New_York when duplicate files are added, report plugin_names with pkg/line add missing version on String::RewritePrefix usage (Andrew Rodland) more tweaking to how Chrome works 2.101040 2010-04-14 11:54:45 America/New_York added PluginBundle::Easy role (from Christopher J. Madsen) changed @Basic and @Classic to use PluginBundle::Easy 2.100991 2010-04-09 22:42:49 America/New_York correct the 2.100990 release, which was broken in all $VERSION nums add debug output to many more plugins improve the -v switch to allow substrings (\bNAME\b) to match 2.100990 2010-04-09 10:12:06 America/New_York fix Pod errors in @Classic (thanks Ævar) 2.100960 2010-04-06 17:00:26 America/New_York added @Basic, more suitable for basic use than @Classic delegate logging to the Dist::Zilla::App object the controller attribute is now called "chrome"; this should last replace File::chdir with File::pushd (David Golden) 2.100922 2010-04-02 18:53:55 America/New_York BuildRunner and TestRunner routines now must die, not return errors added TestRelease plugin (from Christopher J. Madsen) refactored run_tests_in out of the test method 2.100921 2010-04-02 16:04:57 America/New_York add the missing ->ensure_built method 2.100920 2010-04-02 10:45:45 America/New_York BeforeArchive plugins introduced (thanks, Graham Barr) PkgVersion now puts version declaration in a BEGIN block fix required version of Config::MVP include recommendations in distmeta 2.100880 2010-03-29 10:00:20 America/New_York first non-dev release of version 2 2.100870 2010-03-28 17:07:24 America/New_York 2.100862 2010-03-27 13:32:01 America/New_York 2.100861 2010-03-27 13:17:23 America/New_York INCOMPATIBLE CHANGES: the AllFiles plugin is now known as GatherDir the InstallDirs plugin has been replaced by ExecDir and ShareDir the PodTests plugin has been replaced by PodCoverageTests and PodSyntaxTests the FixedPrereq role is replaced with PrereqSource OTHER CHANGES: numerous improvements to testing libraries ...and numerous actual tests! added include_dotfiles option to GatherDir allow relative root directory for GatherDir AutoPrereq is now distributed with Dist::Zilla AutoPrereq will make requirements only found in ./t "build_requires" ConfirmRelease plugin added and made part of @Classic (dagolden) MakeMaker-produced Makefile.PL will produce warnings less often MakeMaker-produced Makefile.PL will require v6.31 for INSTALL_BASE Prereq plugin can target config_requires, build_requires, etc dzil takes -v arg to enable debugging globally or per-plugin PkgVersion now adds a fully-qualified $VERSION variables, not 'our' PruneCruft prunes MYMETA.yml add 'dzil nop' command to initialize zilla object and exit 1.100711 2010-03-12 12:51:55 America/New_York remove bogus attempt to load obsolete DZ::Logger::Global 1.100710 2010-03-12 09:58:10 America/New_York huge update to logging system; uses Log::Dispatchouli::Proxy UploadToCPAN, FakeRelease now log via the standard logger App::Cmd layer Zilla is shared between commands bump up some prereqs to avoid bugs fixed upstream HIGHLY EXPERIMENTAL: first pass at testing systems 1.100660 2010-03-07 07:56:30 America/New_York Global logger handles log_fatal correctly 1.100651 2010-03-06 23:18:54 America/New_York improve how plugin and pluginbundle names are generated and reported improve logging to make it clear what is logging what add a -v switch to dzil to allow "verbose" logging 1.100650 2010-03-06 11:46:23 America/New_York add some missing prereqs now configured with @RJBS rather than custom set of plugins 1.100630 2010-03-03 22:23:21 America/New_York the log method now uses a pluggable logger, defaulting to Log::Dispatchouli plugins now log with a useful prefix to indicate what is logging prerequisites are now managed by Dist::Zilla::Prereq complex prereqs (a la Version::Requirement) are possible 1.100600 2010-03-01 08:19:06 America/New_York the File role provides a mode attribute; files are chmodded on write the mode attribute may not be world-writeable files gathered by AllFiles will have their on-disk mode &= 0755 1.100520 2010-02-21 15:53:39 America/New_York MakeMaker plugin correctly requires the right version of perl again 1.100160 2010-01-16 15:37:29 America/New_York require File::Install::ShareDir if needed for Makefile.PL share 1.100130 2010-01-13 08:18:29 America/New_York the args used in generated Build.PL or Makefile.PL are now mostly generated by Data::Dumper instead of interpolation and quotemeta 1.100120 2010-01-12 18:40:00 America/New_York add 'dzil run' and BuildRunner (Jérôme Quelin) improve behavior of 'dzil clean' with backup files (Jérôme Quelin) dzil takes an -I option (Jérôme Quelin) InstallDirs can now provide File::ShareDir-style installs (rjbs, Jérôme Quelin, nperez) Role::File now requires a content method (rjbs) eliminate stupid noise spewed during 'dzil new' (rjbs) 1.093400 2009-12-06 13:56:09 America/New_York declare dependency on PPI introduced by 1.093370 1.093371 2009-12-03 18:45:11 America/New_York 1.093370 2009-12-03 18:42:30 America/New_York PruneFiles now works... for real; only "filenames" works 1.093370 2009-12-03 18:17:16 America/New_York PruneFiles now works; the documented args for PruneFiles were wrong PkgVersion now uses PPI to insert $VERSION; avoids many false inserts Fix regression where failing tests still cleaned up the build dir. ( Kent Fredric ) 1.093290 2009-11-25 14:45:45 America/New_York switch from String::Format to String::Formatter 1.093280 2009-11-24 11:24:52 America/New_York include META.yml again for now look at ~/.pause for upload config if it isn't in ~/.dzil/config 1.093250 2009-11-21 14:14:20 America/New_York refactor !release 1.093220 2009-11-18 08:15:20 America/New_York Module::Build now injects version deps in build_requires and configure_requires, hopefully solving issues with version-upgrades. new role BeforeRelease (Jérôme Quelin) new role AfterRelease (Jérôme Quelin) default format for AutoVersion plugin changed (Jérôme Quelin) NextRelease plugin updates changelog after release new plugin FakeRelease (Jérôme Quelin) 1.093160 2009-11-12 make TextTemplate use fill_this_in to avoid https://rt.cpan.org/Ticket/Display.html?id=51473 1.093140 2009-11-10 add the FileFinder role "dzil test" will exit non-zero if tests fail Split Test into plugins and have a pluggable test system. ( Kent Fredric ) 1.093000 2009-10-26 require a newer Moose to avoid a few composition errors in older Moose versions 1.092990 2009-10-26 most of Dist::Zilla::Config has been moved to Config::MVP::Reader THIS WILL BREAK BUNDLES: bundles are now passed a hashref describing the contents of the Config::MVP::Sequence configuring them, not just the payload 1.092930 2009-10-20 rebuild documentation with new PodPurler 1.092850 2009-10-11 correct logic that finds tests to run improve detection and use of main_module name (C. Madsen) stop adding versions to test files (doy) 1.092680 2009-09-25 improve error when main_module isn't found (Christopher J. Madsen) rework version generation to be as lazy as possible (C. Madsen) add a ->distmeta attribute in which metadata is collected (C. Madsen) recognize more kinds of version declaration (Nicholas Perez) fix documentation refering to ~/.dzil/config, now in ~/.dzil/config.ini ( Kent Fredric ) 1.092450 2009-09-02 fix a bug in config loading for 'dzil' command (melo) 1.092400 2009-08-28 require App::Cmd 0.300 (currently in dev) fix prereq for Config::MVP 1.092390 2009-08-27 do not break on config sections for non-moosey (app) plugins 1.092360 2009-08-24 all config readers must now produce MVP sequences the AutoVersion plugin now allows you to specify a time zone 1.092310 2009-08-18 documentation for the 'dzil' commands (Kent Fredric) restore the workingness of ~/.dzil and ~/.dzil/config 1.092200 2009-08-07 include ./xt files in shipped dist 1.092070 2009-07-27 *** MIGHT VERY WELL BREAK YOUR BUNDLES *** major revamp of configuration subsystem, including pluggable config readers and the new, highly-experimental and probably-stupid Perl config reader 1.091940 2009-07-12 fix version number of EUMM required to use LICENSE param ( https://rt.cpan.org/Public/Bug/Display.html?id=47817 ) 1.091610 2009-06-09 up the required Pod::Eventual tweak detection of Perl files by content (Jérôme Quelin) 1.091480 2009-05-28 13:59:35 UTC fix abstract-guessing to work with new Pod::Eventual 1.091440 2009-05-24 18:01:51 UTC more quotemeta in generated code add namespace::autoclean (Florian Ragwitz) remove unnecessary dep on MX::ClassAttribute (Florian Ragwitz) break type declarations into their own library (Florian Ragwitz) 1.091430 2009-05-23 01:48:20 UTC add meta-spec entry to metafiles (thanks, doy) generate MetaYAML with YAML::Tiny 1.091370 2009-05-17 MetaJSON added MetaYaml is now MetaYAML 1.091260 2009-05-06 correct naming of plugins brought in by @Classic 1.091250 2009-05-05 add AutoVersion plugin avoid some warnings when making immutable improved some documentation 1.007 2009-04-21 add MetaProvider role and MetaResources plugin inspired by the work of Fayland Lam 1.006 2009-04-18 fix a small context error that broke 'dzil install' in some cases 1.005 2009-04-18 numerous documentation fixes and minor bug fixes added 'dzil install' thanks to: hdp, sartak, Florian Ragwitz, alexv, obra TODO: proper credits file 1.004 2008-10-14 do not barf if there's no dzil config (thanks, ILMARI) 1.003 2008-10-13 add "dzil new" to create a new dist.ini, etc add "dzil release" to upload to the CPAN both of these commands are really sketchy right now use String::Flogger for log output rewriting 1.002 2008-10-07 add missing prereqs 1.001 2008-10-07 add missing prereqs 1.000 2008-10-06 alright, let's just release this thing, even if it's only half baked. well... maybe more like unbaked 0.005 ? allow alternate configuration readers begin the long, hateful process of testing LOTS of existing code some changes to AllFiles to allow more rewriting; for Data-Rx 0.004 2008-06-10 fairly complete documentation 0.003 2008-06-06 going to use this to build a bunch of stuff! Dist-Zilla-6.032/corpus/000755 000765 000024 00000000000 14624411017 015116 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/MANIFEST000644 000765 000024 00000017722 14624411017 014745 0ustar00rjbsstaff000000 000000 # This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.032. Changes LICENSE MANIFEST META.json META.yml Makefile.PL README bin/dzil corpus/README corpus/dist/AuthorDeps/LocalPlugin.pm corpus/dist/AuthorDeps/dist.ini corpus/dist/AutoPrereqs/bin/foobar corpus/dist/AutoPrereqs/dist.ini corpus/dist/AutoPrereqs/lib/DZPA/Empty.pm corpus/dist/AutoPrereqs/lib/DZPA/Main.pm corpus/dist/AutoPrereqs/t/data.bin corpus/dist/DZ-NonAscii/Changes corpus/dist/DZ-NonAscii/dist.ini corpus/dist/DZ-NonAscii/lib/DZ1.pm corpus/dist/DZ1/dist.ini corpus/dist/DZ1/lib/DZ1.pm corpus/dist/DZ2/dist.pl corpus/dist/DZ2/lib/DZ1.pm corpus/dist/DZT/lib/DZT/Sample.pm corpus/dist/DZT/t/basic.t corpus/dist/DZT_Bin/another_perl_script corpus/dist/DZT_Bin/test.bash corpus/dist/DZT_Bin/test.pl corpus/dist/DZT_Inc/Foo.pm corpus/dist/DZT_Inc/Foo/Bar.pm corpus/dist/DZT_NoPm/lib/DZT/Sample.pod corpus/dist/DZT_NoPm/t/basic.t corpus/dist/DZT_Share/my_data.dat corpus/extra/subdir/index.html corpus/extra/vader.txt corpus/global/config.ini cpanfile dist.ini lib/Dist/Zilla.pm lib/Dist/Zilla/App.pm lib/Dist/Zilla/App/Command.pm lib/Dist/Zilla/App/Command/add.pm lib/Dist/Zilla/App/Command/authordeps.pm lib/Dist/Zilla/App/Command/build.pm lib/Dist/Zilla/App/Command/clean.pm lib/Dist/Zilla/App/Command/install.pm lib/Dist/Zilla/App/Command/listdeps.pm lib/Dist/Zilla/App/Command/new.pm lib/Dist/Zilla/App/Command/nop.pm lib/Dist/Zilla/App/Command/release.pm lib/Dist/Zilla/App/Command/run.pm lib/Dist/Zilla/App/Command/setup.pm lib/Dist/Zilla/App/Command/smoke.pm lib/Dist/Zilla/App/Command/test.pm lib/Dist/Zilla/App/Command/version.pm lib/Dist/Zilla/App/Tester.pm lib/Dist/Zilla/Chrome/Term.pm lib/Dist/Zilla/Chrome/Test.pm lib/Dist/Zilla/Dist/Builder.pm lib/Dist/Zilla/Dist/Minter.pm lib/Dist/Zilla/File/FromCode.pm lib/Dist/Zilla/File/InMemory.pm lib/Dist/Zilla/File/OnDisk.pm lib/Dist/Zilla/MVP/Assembler.pm lib/Dist/Zilla/MVP/Assembler/GlobalConfig.pm lib/Dist/Zilla/MVP/Assembler/Zilla.pm lib/Dist/Zilla/MVP/Reader/Finder.pm lib/Dist/Zilla/MVP/Reader/Perl.pm lib/Dist/Zilla/MVP/RootSection.pm lib/Dist/Zilla/MVP/Section.pm lib/Dist/Zilla/MintingProfile/Default.pm lib/Dist/Zilla/Path.pm lib/Dist/Zilla/Plugin/AutoPrereqs.pm lib/Dist/Zilla/Plugin/AutoVersion.pm lib/Dist/Zilla/Plugin/CPANFile.pm lib/Dist/Zilla/Plugin/ConfirmRelease.pm lib/Dist/Zilla/Plugin/DistINI.pm lib/Dist/Zilla/Plugin/Encoding.pm lib/Dist/Zilla/Plugin/ExecDir.pm lib/Dist/Zilla/Plugin/ExtraTests.pm lib/Dist/Zilla/Plugin/FakeRelease.pm lib/Dist/Zilla/Plugin/FileFinder/ByName.pm lib/Dist/Zilla/Plugin/FileFinder/Filter.pm lib/Dist/Zilla/Plugin/FinderCode.pm lib/Dist/Zilla/Plugin/GatherDir.pm lib/Dist/Zilla/Plugin/GatherDir/Template.pm lib/Dist/Zilla/Plugin/GatherFile.pm lib/Dist/Zilla/Plugin/GenerateFile.pm lib/Dist/Zilla/Plugin/InlineFiles.pm lib/Dist/Zilla/Plugin/License.pm lib/Dist/Zilla/Plugin/MakeMaker.pm lib/Dist/Zilla/Plugin/MakeMaker/Runner.pm lib/Dist/Zilla/Plugin/Manifest.pm lib/Dist/Zilla/Plugin/ManifestSkip.pm lib/Dist/Zilla/Plugin/MetaConfig.pm lib/Dist/Zilla/Plugin/MetaJSON.pm lib/Dist/Zilla/Plugin/MetaNoIndex.pm lib/Dist/Zilla/Plugin/MetaResources.pm lib/Dist/Zilla/Plugin/MetaTests.pm lib/Dist/Zilla/Plugin/MetaYAML.pm lib/Dist/Zilla/Plugin/ModuleBuild.pm lib/Dist/Zilla/Plugin/ModuleShareDirs.pm lib/Dist/Zilla/Plugin/NextRelease.pm lib/Dist/Zilla/Plugin/PkgDist.pm lib/Dist/Zilla/Plugin/PkgVersion.pm lib/Dist/Zilla/Plugin/PodCoverageTests.pm lib/Dist/Zilla/Plugin/PodSyntaxTests.pm lib/Dist/Zilla/Plugin/PodVersion.pm lib/Dist/Zilla/Plugin/Prereqs.pm lib/Dist/Zilla/Plugin/PruneCruft.pm lib/Dist/Zilla/Plugin/PruneFiles.pm lib/Dist/Zilla/Plugin/Readme.pm lib/Dist/Zilla/Plugin/RemovePrereqs.pm lib/Dist/Zilla/Plugin/ShareDir.pm lib/Dist/Zilla/Plugin/TemplateModule.pm lib/Dist/Zilla/Plugin/TestRelease.pm lib/Dist/Zilla/Plugin/UploadToCPAN.pm lib/Dist/Zilla/PluginBundle/Basic.pm lib/Dist/Zilla/PluginBundle/Classic.pm lib/Dist/Zilla/PluginBundle/FakeClassic.pm lib/Dist/Zilla/PluginBundle/Filter.pm lib/Dist/Zilla/Pragmas.pm lib/Dist/Zilla/Prereqs.pm lib/Dist/Zilla/Role/AfterBuild.pm lib/Dist/Zilla/Role/AfterMint.pm lib/Dist/Zilla/Role/AfterRelease.pm lib/Dist/Zilla/Role/ArchiveBuilder.pm lib/Dist/Zilla/Role/BeforeArchive.pm lib/Dist/Zilla/Role/BeforeBuild.pm lib/Dist/Zilla/Role/BeforeMint.pm lib/Dist/Zilla/Role/BeforeRelease.pm lib/Dist/Zilla/Role/BuildPL.pm lib/Dist/Zilla/Role/BuildRunner.pm lib/Dist/Zilla/Role/Chrome.pm lib/Dist/Zilla/Role/ConfigDumper.pm lib/Dist/Zilla/Role/EncodingProvider.pm lib/Dist/Zilla/Role/ExecFiles.pm lib/Dist/Zilla/Role/File.pm lib/Dist/Zilla/Role/FileFinder.pm lib/Dist/Zilla/Role/FileFinderUser.pm lib/Dist/Zilla/Role/FileGatherer.pm lib/Dist/Zilla/Role/FileInjector.pm lib/Dist/Zilla/Role/FileMunger.pm lib/Dist/Zilla/Role/FilePruner.pm lib/Dist/Zilla/Role/InstallTool.pm lib/Dist/Zilla/Role/LicenseProvider.pm lib/Dist/Zilla/Role/MetaProvider.pm lib/Dist/Zilla/Role/MintingProfile.pm lib/Dist/Zilla/Role/MintingProfile/ShareDir.pm lib/Dist/Zilla/Role/ModuleMaker.pm lib/Dist/Zilla/Role/MutableFile.pm lib/Dist/Zilla/Role/NameProvider.pm lib/Dist/Zilla/Role/PPI.pm lib/Dist/Zilla/Role/Plugin.pm lib/Dist/Zilla/Role/PluginBundle.pm lib/Dist/Zilla/Role/PluginBundle/Easy.pm lib/Dist/Zilla/Role/PrereqScanner.pm lib/Dist/Zilla/Role/PrereqSource.pm lib/Dist/Zilla/Role/ReleaseStatusProvider.pm lib/Dist/Zilla/Role/Releaser.pm lib/Dist/Zilla/Role/ShareDir.pm lib/Dist/Zilla/Role/Stash.pm lib/Dist/Zilla/Role/Stash/Authors.pm lib/Dist/Zilla/Role/Stash/Login.pm lib/Dist/Zilla/Role/StubBuild.pm lib/Dist/Zilla/Role/TestRunner.pm lib/Dist/Zilla/Role/TextTemplate.pm lib/Dist/Zilla/Role/VersionProvider.pm lib/Dist/Zilla/Stash/Mint.pm lib/Dist/Zilla/Stash/PAUSE.pm lib/Dist/Zilla/Stash/Rights.pm lib/Dist/Zilla/Stash/User.pm lib/Dist/Zilla/Tester.pm lib/Dist/Zilla/Tutorial.pm lib/Dist/Zilla/Types.pm lib/Dist/Zilla/Util.pm lib/Dist/Zilla/Util/AuthorDeps.pm lib/Test/DZil.pm misc/DZ.graffle misc/dzil-bash_completion misc/dzil_bootstrap misc/lib/Dist/Zilla/App/Command/gconf.pm misc/lib/Dist/Zilla/App/Command/input.pm profiles/default/extra-dist.ini profiles/default/profile.ini t/00-report-prereqs.dd t/00-report-prereqs.t t/commands/authordeps.t t/commands/listdeps.t t/compile.t t/diagnostics/main-module.t t/diagnostics/plugin-fail.t t/distpl.t t/empty-abstract.t t/file-addedby.t t/file.t t/lib/Dist/Zilla/Plugin/BrokenPlugin.pm t/lib/Dist/Zilla/Plugin/BrokenPlugin2.pm t/lib/Dist/Zilla/Plugin/BrokenPlugin3.pm t/lib/Dist/Zilla/Plugin/BrokenPlugin4.pm t/lib/Dist/Zilla/Plugin/JustForManifestSkipTests.pm t/lib/Dist/Zilla/Plugin/MungerThatPrunesPodFiles.pm t/lib/Dist/Zilla/Plugin/TestArchiveBuilder.pm t/lib/Dist/Zilla/Plugin/TestAutoLicense.pm t/lib/Dist/Zilla/Plugin/TestAutoName.pm t/lib/Dist/Zilla/Plugin/TestReleaseProvider.pm t/lib/Dist/Zilla/Plugin/Versioned.pm t/lib/Dist/Zilla/Stash/Heap.pm t/load_config.t t/minter.t t/plugins/archive_builder.t t/plugins/autolicense.t t/plugins/autoname.t t/plugins/autoprereqs.t t/plugins/autoversion.t t/plugins/confirmrelease.t t/plugins/cpanfile.t t/plugins/distmeta-merge.t t/plugins/distmeta.t t/plugins/encoding.t t/plugins/extratests.t t/plugins/fakerelease.t t/plugins/ffbyname.t t/plugins/filefinders.t t/plugins/filter-b.t t/plugins/gatherdir.t t/plugins/gatherfile.t t/plugins/generatefile.t t/plugins/installdirs.t t/plugins/license.t t/plugins/makemaker.t t/plugins/manifest.t t/plugins/metanoindex.t t/plugins/metaresources.t t/plugins/misctests.t t/plugins/modulebuild.t t/plugins/munger-that-prunes.t t/plugins/nextrelease.t t/plugins/pkgdist.t t/plugins/pkgversion.t t/plugins/podsyntaxtests.t t/plugins/podversion.t t/plugins/prereqs.t t/plugins/prunes.t t/plugins/readme.t t/plugins/release_status.t t/plugins/testrelease.t t/plugins/uploadtocpan.t t/tester-demo.t t/tester-local-plugins.t t/tester-sort.t t/tester.t t/util.t t/zzz-check-breaks.t todo/CHECKLIST-testing.mkdn todo/command-plugins.mkdn todo/config-arg-prefix.mkdn todo/delay-core-attrs.mkdn todo/external-core-attr.mkdn todo/version-from-prev.mkdn todo/vfs-for-files.mkdn todo/xs-improvement.mkdn xt/author/clean-namespaces.t xt/author/pod-syntax.t xt/release/changes_has_content.t Dist-Zilla-6.032/t/000755 000765 000024 00000000000 14624411017 014046 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/xt/000755 000765 000024 00000000000 14624411017 014236 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/README000644 000765 000024 00000000573 14624411017 014470 0ustar00rjbsstaff000000 000000 This archive contains the distribution Dist-Zilla, version 6.032: distribution builder; installer not included! This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. This README file was generated by Dist::Zilla::Plugin::Readme v6.032. Dist-Zilla-6.032/todo/000755 000765 000024 00000000000 14624411017 014550 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/META.yml000644 000765 000024 00000054366 14624411017 015072 0ustar00rjbsstaff000000 000000 --- abstract: 'distribution builder; installer not included!' author: - 'Ricardo SIGNES 😏 ' build_requires: CPAN::Meta::Check: '0.011' CPAN::Meta::Requirements: '2.121' ExtUtils::MakeMaker: '0' ExtUtils::Manifest: '1.66' File::Spec: '0' Software::License::None: '0' Test::FailWarnings: '0' Test::Fatal: '0' Test::File::ShareDir: '0' Test::More: '0.96' lib: '0' strict: '0' configure_requires: ExtUtils::MakeMaker: '6.78' File::ShareDir::Install: '0.06' dynamic_config: 1 generated_by: 'Dist::Zilla version 6.032, CPAN::Meta::Converter version 2.150010' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: Dist-Zilla no_index: directory: - corpus - misc recommends: App::cpanminus: '0' Archive::Tar::Wrapper: '0.15' Data::OptList: '0.110' Term::ReadLine::Gnu: '0' requires: App::Cmd::Command::version: '0' App::Cmd::Setup: '0.330' App::Cmd::Tester: '0.306' App::Cmd::Tester::CaptureExternal: '0' Archive::Tar: '0' CPAN::Meta::Converter: '2.101550' CPAN::Meta::Merge: '0' CPAN::Meta::Prereqs: '2.120630' CPAN::Meta::Requirements: '2.121' CPAN::Meta::Validator: '2.101550' CPAN::Uploader: '0.103004' Carp: '0' Config::INI::Reader: '0' Config::MVP: '2.200011' Config::MVP::Assembler: '0' Config::MVP::Assembler::WithBundles: '2.200010' Config::MVP::Reader: '2.101540' Config::MVP::Reader::Findable::ByExtension: '0' Config::MVP::Reader::Finder: '0' Config::MVP::Reader::INI: '2.101461' Config::MVP::Section: '2.200009' Data::Dumper: '0' Data::Section: '0.200002' DateTime: '0.44' Digest::MD5: '0' Encode: '0' ExtUtils::Manifest: '1.66' File::Copy::Recursive: '0.41' File::Find::Rule: '0' File::Path: '0' File::ShareDir: '0' File::ShareDir::Install: '0.03' File::Spec: '0' File::Temp: '0' File::pushd: '0' JSON::MaybeXS: '0' List::Util: '1.45' Log::Dispatchouli: '1.102220' Mixin::Linewise::Readers: '0.100' Module::CoreList: '0' Module::Runtime: '0' Moose: '0.92' Moose::Role: '0' Moose::Util::TypeConstraints: '0' MooseX::LazyRequire: '0' MooseX::Role::Parameterized: '1.01' MooseX::SetOnce: '0' MooseX::Types: '0' MooseX::Types::Moose: '0' MooseX::Types::Perl: '0' PPI::Document: '1.222' Params::Util: '0' Path::Tiny: '0.052' Perl::PrereqScanner: '1.016' Pod::Simple: '0' Scalar::Util: '0' Software::License: '0.104001' Software::LicenseUtils: '0' String::Formatter: '0.100680' String::RewritePrefix: '0.006' Sub::Exporter: '0' Sub::Exporter::ForMethods: '0' Sub::Exporter::Util: '0' Term::ANSIColor: '5.00' Term::Encoding: '0' Term::ReadKey: '0' Term::ReadLine: '0' Term::UI: '0' Test::Deep: '0' Text::Glob: '0.08' Text::Template: '0' Try::Tiny: '0' YAML::Tiny: '0' autodie: '0' experimental: '0' namespace::autoclean: '0' parent: '0' perl: v5.20.0 utf8: '0' version: '0' warnings: '0' resources: IRC: irc://irc.perl.org/#distzilla MailingList: http://dzil.org/#mailing-list bugtracker: https://github.com/rjbs/Dist-Zilla/issues homepage: http://dzil.org/ repository: https://github.com/rjbs/Dist-Zilla.git version: '6.032' x_Dist_Zilla: perl: version: '5.038000' plugins: - class: Dist::Zilla::Plugin::Git::GatherDir config: Dist::Zilla::Plugin::GatherDir: exclude_filename: [] exclude_match: [] include_dotfiles: 0 prefix: '' prune_directory: [] root: . Dist::Zilla::Plugin::Git::GatherDir: include_untracked: 0 name: '@RJBS/Git::GatherDir' version: '2.049' - class: Dist::Zilla::Plugin::CheckPrereqsIndexed name: '@RJBS/CheckPrereqsIndexed' version: '0.022' - class: Dist::Zilla::Plugin::CheckExtraTests name: '@RJBS/CheckExtraTests' version: '0.029' - class: Dist::Zilla::Plugin::PromptIfStale config: Dist::Zilla::Plugin::PromptIfStale: check_all_plugins: 0 check_all_prereqs: 0 modules: - Dist::Zilla::PluginBundle::RJBS phase: build run_under_travis: 0 skip: [] name: '@RJBS/RJBS-Outdated' version: '0.060' - class: Dist::Zilla::Plugin::PromptIfStale config: Dist::Zilla::Plugin::PromptIfStale: check_all_plugins: 1 check_all_prereqs: 0 modules: [] phase: release run_under_travis: 0 skip: - Dist::Zilla::Plugin::RJBSMisc name: '@RJBS/CPAN-Outdated' version: '0.060' - class: Dist::Zilla::Plugin::PruneCruft name: '@RJBS/@Filter/PruneCruft' version: '6.032' - class: Dist::Zilla::Plugin::ManifestSkip name: '@RJBS/@Filter/ManifestSkip' version: '6.032' - class: Dist::Zilla::Plugin::MetaYAML name: '@RJBS/@Filter/MetaYAML' version: '6.032' - class: Dist::Zilla::Plugin::License name: '@RJBS/@Filter/License' version: '6.032' - class: Dist::Zilla::Plugin::Readme name: '@RJBS/@Filter/Readme' version: '6.032' - class: Dist::Zilla::Plugin::ExecDir name: '@RJBS/@Filter/ExecDir' version: '6.032' - class: Dist::Zilla::Plugin::ShareDir name: '@RJBS/@Filter/ShareDir' version: '6.032' - class: Dist::Zilla::Plugin::Manifest name: '@RJBS/@Filter/Manifest' version: '6.032' - class: Dist::Zilla::Plugin::TestRelease name: '@RJBS/@Filter/TestRelease' version: '6.032' - class: Dist::Zilla::Plugin::ConfirmRelease name: '@RJBS/@Filter/ConfirmRelease' version: '6.032' - class: Dist::Zilla::Plugin::UploadToCPAN name: '@RJBS/@Filter/UploadToCPAN' version: '6.032' - class: Dist::Zilla::Plugin::MakeMaker config: Dist::Zilla::Role::TestRunner: default_jobs: 9 name: '@RJBS/MakeMaker' version: '6.032' - class: Dist::Zilla::Plugin::AutoPrereqs name: '@RJBS/AutoPrereqs' version: '6.032' - class: Dist::Zilla::Plugin::Git::NextVersion config: Dist::Zilla::Plugin::Git::NextVersion: first_version: '0.001' version_by_branch: 1 version_regexp: (?^:^([0-9]+\.[0-9]+)$) Dist::Zilla::Role::Git::Repo: git_version: 2.44.0 repo_root: . name: '@RJBS/Git::NextVersion' version: '2.049' - class: Dist::Zilla::Plugin::PkgVersion name: '@RJBS/PkgVersion' version: '6.032' - class: Dist::Zilla::Plugin::MetaConfig name: '@RJBS/MetaConfig' version: '6.032' - class: Dist::Zilla::Plugin::MetaJSON name: '@RJBS/MetaJSON' version: '6.032' - class: Dist::Zilla::Plugin::NextRelease name: '@RJBS/NextRelease' version: '6.032' - class: Dist::Zilla::Plugin::Test::ChangesHasContent name: '@RJBS/Test::ChangesHasContent' version: '0.011' - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@RJBS/PodSyntaxTests' version: '6.032' - class: Dist::Zilla::Plugin::Test::ReportPrereqs name: '@RJBS/Test::ReportPrereqs' version: '0.029' - class: Dist::Zilla::Plugin::Git::Remote::Check name: '@RJBS/Git::Remote::Check' version: 0.1.2 - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: test type: requires name: '@RJBS/TestMoreWithSubtests' version: '6.032' - class: Dist::Zilla::Plugin::PodWeaver config: Dist::Zilla::Plugin::PodWeaver: config_plugins: - '@RJBS' finder: - ':InstallModules' - ':PerlExecFiles' plugins: - class: Pod::Weaver::Plugin::EnsurePod5 name: '@CorePrep/EnsurePod5' version: '4.020' - class: Pod::Weaver::Plugin::H1Nester name: '@CorePrep/H1Nester' version: '4.020' - class: Pod::Weaver::Plugin::SingleEncoding name: '@RJBS/SingleEncoding' version: '4.020' - class: Pod::Weaver::Section::Name name: '@RJBS/Name' version: '4.020' - class: Pod::Weaver::Section::Version name: '@RJBS/Version' version: '4.020' - class: Pod::Weaver::Section::Region name: '@RJBS/Prelude' version: '4.020' - class: Pod::Weaver::Section::Generic name: '@RJBS/Synopsis' version: '4.020' - class: Pod::Weaver::Section::Generic name: '@RJBS/Description' version: '4.020' - class: Pod::Weaver::Section::Generic name: '@RJBS/Overview' version: '4.020' - class: Pod::Weaver::Section::Generic name: '@RJBS/Stability' version: '4.020' - class: Pod::Weaver::Section::GenerateSection name: '@RJBS/PerlSupport' version: '4.020' - class: Pod::Weaver::Section::Collect name: Attributes version: '4.020' - class: Pod::Weaver::Section::Collect name: Methods version: '4.020' - class: Pod::Weaver::Section::Collect name: Functions version: '4.020' - class: Pod::Weaver::Section::Leftovers name: '@RJBS/Leftovers' version: '4.020' - class: Pod::Weaver::Section::Region name: '@RJBS/postlude' version: '4.020' - class: Pod::Weaver::Section::Authors name: '@RJBS/Authors' version: '4.020' - class: Pod::Weaver::Section::Contributors name: '@RJBS/Contributors' version: '0.009' - class: Pod::Weaver::Section::Legal name: '@RJBS/Legal' version: '4.020' - class: Pod::Weaver::Plugin::Transformer name: '@RJBS/List' version: '4.020' name: '@RJBS/PodWeaver' version: '4.010' - class: Dist::Zilla::Plugin::RJBSMisc name: '@RJBS/RJBSMisc' version: '5.028' - class: Dist::Zilla::Plugin::GithubMeta name: '@RJBS/GithubMeta' version: '0.58' - class: Dist::Zilla::Plugin::Git::Check config: Dist::Zilla::Plugin::Git::Check: untracked_files: die Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Changes - dist.ini allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.44.0 repo_root: . name: '@RJBS/@Git/Check' version: '2.049' - 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: - Changes - dist.ini allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.44.0 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@RJBS/@Git/Commit' version: '2.049' - class: Dist::Zilla::Plugin::Git::Tag config: Dist::Zilla::Plugin::Git::Tag: branch: ~ changelog: Changes signed: 0 tag: '6.032' tag_format: '%v' tag_message: v%V Dist::Zilla::Role::Git::Repo: git_version: 2.44.0 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@RJBS/@Git/Tag' version: '2.049' - class: Dist::Zilla::Plugin::Git::Push config: Dist::Zilla::Plugin::Git::Push: push_to: - 'github :' remotes_must_exist: 0 Dist::Zilla::Role::Git::Repo: git_version: 2.44.0 repo_root: . name: '@RJBS/@Git/Push' version: '2.049' - class: Dist::Zilla::Plugin::Git::Contributors config: Dist::Zilla::Plugin::Git::Contributors: git_version: 2.44.0 include_authors: 0 include_releaser: 1 order_by: name paths: [] name: '@RJBS/Git::Contributors' version: '0.037' - class: Dist::Zilla::Plugin::ModuleShareDirs name: ModuleShareDirs version: '6.032' - class: Dist::Zilla::Plugin::MetaNoIndex name: MetaNoIndex version: '6.032' - class: Dist::Zilla::Plugin::MetaResources name: MetaResources version: '6.032' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: test type: requires name: TestRequires version: '6.032' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: runtime type: recommends name: RuntimeRecommends version: '6.032' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: runtime type: suggests name: RuntimeSuggests version: '6.032' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: runtime type: requires name: Prereqs version: '6.032' - class: Dist::Zilla::Plugin::OSPrereqs config: Dist::Zilla::Plugin::OSPrereqs: os: MSWin32 name: MSWin32 version: '0.011' - class: Dist::Zilla::Plugin::RemovePrereqs config: Dist::Zilla::Plugin::RemovePrereqs: modules_to_remove: - Config - Dist::Zilla::Tester::_Role - Path::Class - Some::Package::That::Does::Not::Exist::Due::To::A::Typo name: RemovePrereqs version: '6.032' - class: Dist::Zilla::Plugin::CPANFile name: CPANFile version: '6.032' - class: Dist::Zilla::Plugin::Breaks name: Breaks version: '0.004' - class: Dist::Zilla::Plugin::Test::CleanNamespaces config: Dist::Zilla::Plugin::Test::CleanNamespaces: filename: xt/author/clean-namespaces.t skips: [] name: Test::CleanNamespaces version: '0.006' - class: Dist::Zilla::Plugin::Test::CheckBreaks config: Dist::Zilla::Plugin::Test::CheckBreaks: conflicts_module: - Module::Runtime::Conflicts - Moose::Conflicts no_forced_deps: 0 Dist::Zilla::Role::ModuleMetadata: Module::Metadata: '1.000038' version: '0.006' name: Test::CheckBreaks version: '0.019' - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: '6.032' - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' version: '6.032' - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' version: '6.032' - class: Dist::Zilla::Plugin::FinderCode name: ':ExtraTestFiles' version: '6.032' - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' version: '6.032' - class: Dist::Zilla::Plugin::FinderCode name: ':PerlExecFiles' version: '6.032' - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' version: '6.032' - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' version: '6.032' - class: Dist::Zilla::Plugin::FinderCode name: ':AllFiles' version: '6.032' - class: Dist::Zilla::Plugin::FinderCode name: ':NoFiles' version: '6.032' zilla: class: Dist::Zilla::Dist::Builder config: is_trial: 0 version: '6.032' x_breaks: Dist::Zilla::App::Command::stale: '< 0.040' Dist::Zilla::App::Command::update: '<= 0.04' Dist::Zilla::App::Command::xtest: '< 0.029' Dist::Zilla::Plugin::Author::Plicease::Tests: '<= 2.02' Dist::Zilla::Plugin::CopyFilesFromBuild: '< 0.161230' Dist::Zilla::Plugin::CopyFilesFromBuild::Filtered: '<= 0.001' Dist::Zilla::Plugin::Git: '<= 2.036' Dist::Zilla::Plugin::Keywords: '<= 0.006' Dist::Zilla::Plugin::MakeMaker::Awesome: '< 0.22' Dist::Zilla::Plugin::NameFromDirectory: '<= 0.03' Dist::Zilla::Plugin::PodWeaver: '<= 4.006' Dist::Zilla::Plugin::Prereqs::AuthorDeps: '<= 0.005' Dist::Zilla::Plugin::ReadmeAnyFromPod: '< 0.161170' Dist::Zilla::Plugin::RepoFileInjector: '<= 0.005' Dist::Zilla::Plugin::Run: '<= 0.035' Dist::Zilla::Plugin::Test::CheckDeps: '<= 0.013' Dist::Zilla::Plugin::Test::Version: '<= 1.05' Dist::Zilla::Plugin::TrialVersionComment: '<= 0.003' x_contributors: - 'Ævar Arnfjörð Bjarmason ' - 'Alastair McGowan-Douglas ' - 'Alceu Rodrigues de Freitas Junior ' - 'Alexei Znamensky ' - 'Alex Vandiver ' - 'ambs ' - 'Andrew Rodland ' - 'Andy Jack ' - 'Apocalypse ' - 'ben hengst ' - 'Bernardo Rechea ' - 'Branislav Zahradník ' - 'Brian Fraser ' - 'Caleb Cushing ' - 'Chase Whitener ' - 'Chisel ' - 'Christian Walde ' - 'Christopher Bottoms ' - 'Christopher J. Madsen ' - 'Chris Weyl ' - 'Cory G Watson ' - 'csjewell ' - 'Curtis Brandt ' - 'Dagfinn Ilmari Mannsåker ' - 'Damien KRotkine ' - 'Dan Book ' - 'Daniel Böhmer ' - 'Danijel Tasov ' - 'Dave Lambley ' - "Dave O'Neill " - 'Dave Rolsky ' - 'David E. Wheeler ' - 'David Golden ' - 'David H. Adler ' - 'David Steinbrunner ' - 'David Zurborg ' - 'Davor Cubranic ' - 'Dimitar Petrov ' - 'Doug Bell ' - 'Doug Bell ' - 'Elvin Aslanov ' - 'Erik Carlsson ' - 'Fayland Lam ' - 'Felix Ostmann ' - 'Florian Ragwitz ' - 'Fred Moyer ' - 'fREW Schmidt ' - 'gardnerm ' - 'Gianni Ceccarelli ' - 'Graham Barr ' - 'Graham Knop ' - 'Graham Ollis ' - 'Graham Ollis ' - 'Grzegorz Rożniecki ' - 'Håkon Hægland ' - 'Hans Dieter Pearcey ' - 'Hunter McMillen ' - 'Ivan Bessarabov ' - 'Jakob Voss ' - 'jantore ' - 'Jérôme Quelin ' - 'Jesse Luehrs ' - 'Jesse Vincent ' - 'JJ Merelo ' - 'John Napiorkowski ' - 'jonasbn ' - 'Jonathan C. Otsuka ' - 'Jonathan Rockway ' - 'Jonathan Scott Duff ' - 'Jonathan Yu ' - 'Karen Etheridge ' - 'Kent Fredric ' - 'Kent Fredric ' - 'Leon Timmermans ' - 'Lucas Theisen ' - 'Luc St-Louis ' - 'Marcel Gruenauer ' - 'Mark Flickinger ' - 'Martin McGrath ' - 'Mary Ehlers ' - 'Mateu X Hunter ' - 'Matthew Horsfall ' - 'mauke ' - 'Michael Conrad ' - 'Michael G. Schwern ' - 'Michael Jemmeson ' - 'Mickey Nasriachi ' - 'Mike Doherty ' - 'Mohammad S Anwar ' - 'Moritz Onken ' - 'Neil Bowers ' - 'Nickolay Platonov ' - 'Nick Tonkin <1nickt@users.noreply.github.com>' - 'nperez ' - 'Olivier Mengué ' - 'Paul Cochrane ' - 'Paulo Custodio ' - 'Pedro Melo ' - 'perlancar (@pc-office) ' - 'Philippe Bruhat (BooK) ' - 'raf <68724930+rafork@users.noreply.github.com>' - 'Randy Stauner ' - 'reneeb ' - 'Ricardo Signes ' - 'robertkrimen ' - 'Rob Hoelz ' - 'Robin Smidsrød ' - 'Roy Ivy III ' - 'Shawn M Moore ' - 'Shlomi Fish ' - 'Shoichi Kaji ' - 'Smylers ' - 'Steffen Schwigon ' - 'Steven Haryanto ' - 'Tatsuhiko Miyagawa ' - 'Upasana Shukla ' - 'Van de Bugger ' - 'Vyacheslav Matjukhin ' - 'Yanick Champoux ' - 'Yuval Kogman ' x_generated_by_perl: v5.38.0 x_rjbs_perl_window: standard x_serialization_backend: 'YAML::Tiny version 1.74' x_spdx_expression: 'Artistic-1.0-Perl OR GPL-1.0-or-later' Dist-Zilla-6.032/lib/000755 000765 000024 00000000000 14624411017 014351 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/Makefile.PL000644 000765 000024 00000015503 14624411017 015561 0ustar00rjbsstaff000000 000000 # This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.032. use strict; use warnings; use 5.020000; use ExtUtils::MakeMaker 6.78; use File::ShareDir::Install; $File::ShareDir::Install::INCLUDE_DOTFILES = 1; $File::ShareDir::Install::INCLUDE_DOTDIRS = 1; install_share module => "Dist::Zilla::MintingProfile::Default", "profiles"; my %WriteMakefileArgs = ( "ABSTRACT" => "distribution builder; installer not included!", "AUTHOR" => "Ricardo SIGNES \x{1f60f} ", "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => "6.78", "File::ShareDir::Install" => "0.06" }, "DISTNAME" => "Dist-Zilla", "EXE_FILES" => [ "bin/dzil" ], "LICENSE" => "perl", "MIN_PERL_VERSION" => "5.020000", "NAME" => "Dist::Zilla", "PREREQ_PM" => { "App::Cmd::Command::version" => 0, "App::Cmd::Setup" => "0.330", "App::Cmd::Tester" => "0.306", "App::Cmd::Tester::CaptureExternal" => 0, "Archive::Tar" => 0, "CPAN::Meta::Converter" => "2.101550", "CPAN::Meta::Merge" => 0, "CPAN::Meta::Prereqs" => "2.120630", "CPAN::Meta::Requirements" => "2.121", "CPAN::Meta::Validator" => "2.101550", "CPAN::Uploader" => "0.103004", "Carp" => 0, "Config::INI::Reader" => 0, "Config::MVP" => "2.200011", "Config::MVP::Assembler" => 0, "Config::MVP::Assembler::WithBundles" => "2.200010", "Config::MVP::Reader" => "2.101540", "Config::MVP::Reader::Findable::ByExtension" => 0, "Config::MVP::Reader::Finder" => 0, "Config::MVP::Reader::INI" => "2.101461", "Config::MVP::Section" => "2.200009", "Data::Dumper" => 0, "Data::Section" => "0.200002", "DateTime" => "0.44", "Digest::MD5" => 0, "Encode" => 0, "ExtUtils::Manifest" => "1.66", "File::Copy::Recursive" => "0.41", "File::Find::Rule" => 0, "File::Path" => 0, "File::ShareDir" => 0, "File::ShareDir::Install" => "0.03", "File::Spec" => 0, "File::Temp" => 0, "File::pushd" => 0, "JSON::MaybeXS" => 0, "List::Util" => "1.45", "Log::Dispatchouli" => "1.102220", "Mixin::Linewise::Readers" => "0.100", "Module::CoreList" => 0, "Module::Runtime" => 0, "Moose" => "0.92", "Moose::Role" => 0, "Moose::Util::TypeConstraints" => 0, "MooseX::LazyRequire" => 0, "MooseX::Role::Parameterized" => "1.01", "MooseX::SetOnce" => 0, "MooseX::Types" => 0, "MooseX::Types::Moose" => 0, "MooseX::Types::Perl" => 0, "PPI::Document" => "1.222", "Params::Util" => 0, "Path::Tiny" => "0.052", "Perl::PrereqScanner" => "1.016", "Pod::Simple" => 0, "Scalar::Util" => 0, "Software::License" => "0.104001", "Software::LicenseUtils" => 0, "String::Formatter" => "0.100680", "String::RewritePrefix" => "0.006", "Sub::Exporter" => 0, "Sub::Exporter::ForMethods" => 0, "Sub::Exporter::Util" => 0, "Term::ANSIColor" => "5.00", "Term::Encoding" => 0, "Term::ReadKey" => 0, "Term::ReadLine" => 0, "Term::UI" => 0, "Test::Deep" => 0, "Text::Glob" => "0.08", "Text::Template" => 0, "Try::Tiny" => 0, "YAML::Tiny" => 0, "autodie" => 0, "experimental" => 0, "namespace::autoclean" => 0, "parent" => 0, "utf8" => 0, "version" => 0, "warnings" => 0 }, "TEST_REQUIRES" => { "CPAN::Meta::Check" => "0.011", "CPAN::Meta::Requirements" => "2.121", "ExtUtils::MakeMaker" => 0, "ExtUtils::Manifest" => "1.66", "File::Spec" => 0, "Software::License::None" => 0, "Test::FailWarnings" => 0, "Test::Fatal" => 0, "Test::File::ShareDir" => 0, "Test::More" => "0.96", "lib" => 0, "strict" => 0 }, "VERSION" => "6.032", "test" => { "TESTS" => "t/*.t t/commands/*.t t/diagnostics/*.t t/plugins/*.t" } ); my %FallbackPrereqs = ( "App::Cmd::Command::version" => 0, "App::Cmd::Setup" => "0.330", "App::Cmd::Tester" => "0.306", "App::Cmd::Tester::CaptureExternal" => 0, "Archive::Tar" => 0, "CPAN::Meta::Check" => "0.011", "CPAN::Meta::Converter" => "2.101550", "CPAN::Meta::Merge" => 0, "CPAN::Meta::Prereqs" => "2.120630", "CPAN::Meta::Requirements" => "2.121", "CPAN::Meta::Validator" => "2.101550", "CPAN::Uploader" => "0.103004", "Carp" => 0, "Config::INI::Reader" => 0, "Config::MVP" => "2.200011", "Config::MVP::Assembler" => 0, "Config::MVP::Assembler::WithBundles" => "2.200010", "Config::MVP::Reader" => "2.101540", "Config::MVP::Reader::Findable::ByExtension" => 0, "Config::MVP::Reader::Finder" => 0, "Config::MVP::Reader::INI" => "2.101461", "Config::MVP::Section" => "2.200009", "Data::Dumper" => 0, "Data::Section" => "0.200002", "DateTime" => "0.44", "Digest::MD5" => 0, "Encode" => 0, "ExtUtils::MakeMaker" => 0, "ExtUtils::Manifest" => "1.66", "File::Copy::Recursive" => "0.41", "File::Find::Rule" => 0, "File::Path" => 0, "File::ShareDir" => 0, "File::ShareDir::Install" => "0.03", "File::Spec" => 0, "File::Temp" => 0, "File::pushd" => 0, "JSON::MaybeXS" => 0, "List::Util" => "1.45", "Log::Dispatchouli" => "1.102220", "Mixin::Linewise::Readers" => "0.100", "Module::CoreList" => 0, "Module::Runtime" => 0, "Moose" => "0.92", "Moose::Role" => 0, "Moose::Util::TypeConstraints" => 0, "MooseX::LazyRequire" => 0, "MooseX::Role::Parameterized" => "1.01", "MooseX::SetOnce" => 0, "MooseX::Types" => 0, "MooseX::Types::Moose" => 0, "MooseX::Types::Perl" => 0, "PPI::Document" => "1.222", "Params::Util" => 0, "Path::Tiny" => "0.052", "Perl::PrereqScanner" => "1.016", "Pod::Simple" => 0, "Scalar::Util" => 0, "Software::License" => "0.104001", "Software::License::None" => 0, "Software::LicenseUtils" => 0, "String::Formatter" => "0.100680", "String::RewritePrefix" => "0.006", "Sub::Exporter" => 0, "Sub::Exporter::ForMethods" => 0, "Sub::Exporter::Util" => 0, "Term::ANSIColor" => "5.00", "Term::Encoding" => 0, "Term::ReadKey" => 0, "Term::ReadLine" => 0, "Term::UI" => 0, "Test::Deep" => 0, "Test::FailWarnings" => 0, "Test::Fatal" => 0, "Test::File::ShareDir" => 0, "Test::More" => "0.96", "Text::Glob" => "0.08", "Text::Template" => 0, "Try::Tiny" => 0, "YAML::Tiny" => 0, "autodie" => 0, "experimental" => 0, "lib" => 0, "namespace::autoclean" => 0, "parent" => 0, "strict" => 0, "utf8" => 0, "version" => 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) }; if ( $^O eq 'MSWin32' ) { $WriteMakefileArgs{PREREQ_PM}{'DateTime::TimeZone'} = $FallbackPrereqs{'DateTime::TimeZone'} = '1.92'; } WriteMakefile(%WriteMakefileArgs); { package MY; use File::ShareDir::Install qw(postamble); } Dist-Zilla-6.032/profiles/000755 000765 000024 00000000000 14624411017 015426 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/META.json000644 000765 000024 00000100337 14624411017 015230 0ustar00rjbsstaff000000 000000 { "abstract" : "distribution builder; installer not included!", "author" : [ "Ricardo SIGNES \ud83d\ude0f " ], "dynamic_config" : 1, "generated_by" : "Dist::Zilla version 6.032, CPAN::Meta::Converter version 2.150010", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "Dist-Zilla", "no_index" : { "directory" : [ "corpus", "misc" ] }, "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "6.78", "File::ShareDir::Install" : "0.06" } }, "develop" : { "requires" : { "Test::CleanNamespaces" : "0.15", "Test::More" : "0.94", "Test::Pod" : "1.41", "strict" : "0" } }, "runtime" : { "recommends" : { "App::cpanminus" : "0", "Archive::Tar::Wrapper" : "0.15", "Data::OptList" : "0.110", "Term::ReadLine::Gnu" : "0" }, "requires" : { "App::Cmd::Command::version" : "0", "App::Cmd::Setup" : "0.330", "App::Cmd::Tester" : "0.306", "App::Cmd::Tester::CaptureExternal" : "0", "Archive::Tar" : "0", "CPAN::Meta::Converter" : "2.101550", "CPAN::Meta::Merge" : "0", "CPAN::Meta::Prereqs" : "2.120630", "CPAN::Meta::Requirements" : "2.121", "CPAN::Meta::Validator" : "2.101550", "CPAN::Uploader" : "0.103004", "Carp" : "0", "Config::INI::Reader" : "0", "Config::MVP" : "2.200011", "Config::MVP::Assembler" : "0", "Config::MVP::Assembler::WithBundles" : "2.200010", "Config::MVP::Reader" : "2.101540", "Config::MVP::Reader::Findable::ByExtension" : "0", "Config::MVP::Reader::Finder" : "0", "Config::MVP::Reader::INI" : "2.101461", "Config::MVP::Section" : "2.200009", "Data::Dumper" : "0", "Data::Section" : "0.200002", "DateTime" : "0.44", "Digest::MD5" : "0", "Encode" : "0", "ExtUtils::Manifest" : "1.66", "File::Copy::Recursive" : "0.41", "File::Find::Rule" : "0", "File::Path" : "0", "File::ShareDir" : "0", "File::ShareDir::Install" : "0.03", "File::Spec" : "0", "File::Temp" : "0", "File::pushd" : "0", "JSON::MaybeXS" : "0", "List::Util" : "1.45", "Log::Dispatchouli" : "1.102220", "Mixin::Linewise::Readers" : "0.100", "Module::CoreList" : "0", "Module::Runtime" : "0", "Moose" : "0.92", "Moose::Role" : "0", "Moose::Util::TypeConstraints" : "0", "MooseX::LazyRequire" : "0", "MooseX::Role::Parameterized" : "1.01", "MooseX::SetOnce" : "0", "MooseX::Types" : "0", "MooseX::Types::Moose" : "0", "MooseX::Types::Perl" : "0", "PPI::Document" : "1.222", "Params::Util" : "0", "Path::Tiny" : "0.052", "Perl::PrereqScanner" : "1.016", "Pod::Simple" : "0", "Scalar::Util" : "0", "Software::License" : "0.104001", "Software::LicenseUtils" : "0", "String::Formatter" : "0.100680", "String::RewritePrefix" : "0.006", "Sub::Exporter" : "0", "Sub::Exporter::ForMethods" : "0", "Sub::Exporter::Util" : "0", "Term::ANSIColor" : "5.00", "Term::Encoding" : "0", "Term::ReadKey" : "0", "Term::ReadLine" : "0", "Term::UI" : "0", "Test::Deep" : "0", "Text::Glob" : "0.08", "Text::Template" : "0", "Try::Tiny" : "0", "YAML::Tiny" : "0", "autodie" : "0", "experimental" : "0", "namespace::autoclean" : "0", "parent" : "0", "perl" : "v5.20.0", "utf8" : "0", "version" : "0", "warnings" : "0" }, "suggests" : { "PPI::XS" : "0" } }, "test" : { "recommends" : { "CPAN::Meta" : "2.120900" }, "requires" : { "CPAN::Meta::Check" : "0.011", "CPAN::Meta::Requirements" : "2.121", "ExtUtils::MakeMaker" : "0", "ExtUtils::Manifest" : "1.66", "File::Spec" : "0", "Software::License::None" : "0", "Test::FailWarnings" : "0", "Test::Fatal" : "0", "Test::File::ShareDir" : "0", "Test::More" : "0.96", "lib" : "0", "strict" : "0" } } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/rjbs/Dist-Zilla/issues" }, "homepage" : "http://dzil.org/", "repository" : { "type" : "git", "url" : "https://github.com/rjbs/Dist-Zilla.git", "web" : "https://github.com/rjbs/Dist-Zilla" }, "x_IRC" : "irc://irc.perl.org/#distzilla", "x_MailingList" : "http://dzil.org/#mailing-list" }, "version" : "6.032", "x_Dist_Zilla" : { "perl" : { "version" : "5.038000" }, "plugins" : [ { "class" : "Dist::Zilla::Plugin::Git::GatherDir", "config" : { "Dist::Zilla::Plugin::GatherDir" : { "exclude_filename" : [], "exclude_match" : [], "include_dotfiles" : 0, "prefix" : "", "prune_directory" : [], "root" : "." }, "Dist::Zilla::Plugin::Git::GatherDir" : { "include_untracked" : 0 } }, "name" : "@RJBS/Git::GatherDir", "version" : "2.049" }, { "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed", "name" : "@RJBS/CheckPrereqsIndexed", "version" : "0.022" }, { "class" : "Dist::Zilla::Plugin::CheckExtraTests", "name" : "@RJBS/CheckExtraTests", "version" : "0.029" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "config" : { "Dist::Zilla::Plugin::PromptIfStale" : { "check_all_plugins" : 0, "check_all_prereqs" : 0, "modules" : [ "Dist::Zilla::PluginBundle::RJBS" ], "phase" : "build", "run_under_travis" : 0, "skip" : [] } }, "name" : "@RJBS/RJBS-Outdated", "version" : "0.060" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "config" : { "Dist::Zilla::Plugin::PromptIfStale" : { "check_all_plugins" : 1, "check_all_prereqs" : 0, "modules" : [], "phase" : "release", "run_under_travis" : 0, "skip" : [ "Dist::Zilla::Plugin::RJBSMisc" ] } }, "name" : "@RJBS/CPAN-Outdated", "version" : "0.060" }, { "class" : "Dist::Zilla::Plugin::PruneCruft", "name" : "@RJBS/@Filter/PruneCruft", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::ManifestSkip", "name" : "@RJBS/@Filter/ManifestSkip", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@RJBS/@Filter/MetaYAML", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::License", "name" : "@RJBS/@Filter/License", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::Readme", "name" : "@RJBS/@Filter/Readme", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::ExecDir", "name" : "@RJBS/@Filter/ExecDir", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::ShareDir", "name" : "@RJBS/@Filter/ShareDir", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@RJBS/@Filter/Manifest", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@RJBS/@Filter/TestRelease", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@RJBS/@Filter/ConfirmRelease", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@RJBS/@Filter/UploadToCPAN", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::MakeMaker", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 9 } }, "name" : "@RJBS/MakeMaker", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::AutoPrereqs", "name" : "@RJBS/AutoPrereqs", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::Git::NextVersion", "config" : { "Dist::Zilla::Plugin::Git::NextVersion" : { "first_version" : "0.001", "version_by_branch" : 1, "version_regexp" : "(?^:^([0-9]+\\.[0-9]+)$)" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.44.0", "repo_root" : "." } }, "name" : "@RJBS/Git::NextVersion", "version" : "2.049" }, { "class" : "Dist::Zilla::Plugin::PkgVersion", "name" : "@RJBS/PkgVersion", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@RJBS/MetaConfig", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@RJBS/MetaJSON", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::NextRelease", "name" : "@RJBS/NextRelease", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::Test::ChangesHasContent", "name" : "@RJBS/Test::ChangesHasContent", "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@RJBS/PodSyntaxTests", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs", "name" : "@RJBS/Test::ReportPrereqs", "version" : "0.029" }, { "class" : "Dist::Zilla::Plugin::Git::Remote::Check", "name" : "@RJBS/Git::Remote::Check", "version" : "0.1.2" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "test", "type" : "requires" } }, "name" : "@RJBS/TestMoreWithSubtests", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::PodWeaver", "config" : { "Dist::Zilla::Plugin::PodWeaver" : { "config_plugins" : [ "@RJBS" ], "finder" : [ ":InstallModules", ":PerlExecFiles" ], "plugins" : [ { "class" : "Pod::Weaver::Plugin::EnsurePod5", "name" : "@CorePrep/EnsurePod5", "version" : "4.020" }, { "class" : "Pod::Weaver::Plugin::H1Nester", "name" : "@CorePrep/H1Nester", "version" : "4.020" }, { "class" : "Pod::Weaver::Plugin::SingleEncoding", "name" : "@RJBS/SingleEncoding", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Name", "name" : "@RJBS/Name", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Version", "name" : "@RJBS/Version", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@RJBS/Prelude", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "@RJBS/Synopsis", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "@RJBS/Description", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "@RJBS/Overview", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "@RJBS/Stability", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::GenerateSection", "name" : "@RJBS/PerlSupport", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "Attributes", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "Methods", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "Functions", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Leftovers", "name" : "@RJBS/Leftovers", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@RJBS/postlude", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Authors", "name" : "@RJBS/Authors", "version" : "4.020" }, { "class" : "Pod::Weaver::Section::Contributors", "name" : "@RJBS/Contributors", "version" : "0.009" }, { "class" : "Pod::Weaver::Section::Legal", "name" : "@RJBS/Legal", "version" : "4.020" }, { "class" : "Pod::Weaver::Plugin::Transformer", "name" : "@RJBS/List", "version" : "4.020" } ] } }, "name" : "@RJBS/PodWeaver", "version" : "4.010" }, { "class" : "Dist::Zilla::Plugin::RJBSMisc", "name" : "@RJBS/RJBSMisc", "version" : "5.028" }, { "class" : "Dist::Zilla::Plugin::GithubMeta", "name" : "@RJBS/GithubMeta", "version" : "0.58" }, { "class" : "Dist::Zilla::Plugin::Git::Check", "config" : { "Dist::Zilla::Plugin::Git::Check" : { "untracked_files" : "die" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Changes", "dist.ini" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.44.0", "repo_root" : "." } }, "name" : "@RJBS/@Git/Check", "version" : "2.049" }, { "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" : [ "Changes", "dist.ini" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.44.0", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@RJBS/@Git/Commit", "version" : "2.049" }, { "class" : "Dist::Zilla::Plugin::Git::Tag", "config" : { "Dist::Zilla::Plugin::Git::Tag" : { "branch" : null, "changelog" : "Changes", "signed" : 0, "tag" : "6.032", "tag_format" : "%v", "tag_message" : "v%V" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.44.0", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@RJBS/@Git/Tag", "version" : "2.049" }, { "class" : "Dist::Zilla::Plugin::Git::Push", "config" : { "Dist::Zilla::Plugin::Git::Push" : { "push_to" : [ "github :" ], "remotes_must_exist" : 0 }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.44.0", "repo_root" : "." } }, "name" : "@RJBS/@Git/Push", "version" : "2.049" }, { "class" : "Dist::Zilla::Plugin::Git::Contributors", "config" : { "Dist::Zilla::Plugin::Git::Contributors" : { "git_version" : "2.44.0", "include_authors" : 0, "include_releaser" : 1, "order_by" : "name", "paths" : [] } }, "name" : "@RJBS/Git::Contributors", "version" : "0.037" }, { "class" : "Dist::Zilla::Plugin::ModuleShareDirs", "name" : "ModuleShareDirs", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::MetaNoIndex", "name" : "MetaNoIndex", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::MetaResources", "name" : "MetaResources", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "test", "type" : "requires" } }, "name" : "TestRequires", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "runtime", "type" : "recommends" } }, "name" : "RuntimeRecommends", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "runtime", "type" : "suggests" } }, "name" : "RuntimeSuggests", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "runtime", "type" : "requires" } }, "name" : "Prereqs", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::OSPrereqs", "config" : { "Dist::Zilla::Plugin::OSPrereqs" : { "os" : "MSWin32" } }, "name" : "MSWin32", "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::RemovePrereqs", "config" : { "Dist::Zilla::Plugin::RemovePrereqs" : { "modules_to_remove" : [ "Config", "Dist::Zilla::Tester::_Role", "Path::Class", "Some::Package::That::Does::Not::Exist::Due::To::A::Typo" ] } }, "name" : "RemovePrereqs", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::CPANFile", "name" : "CPANFile", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::Breaks", "name" : "Breaks", "version" : "0.004" }, { "class" : "Dist::Zilla::Plugin::Test::CleanNamespaces", "config" : { "Dist::Zilla::Plugin::Test::CleanNamespaces" : { "filename" : "xt/author/clean-namespaces.t", "skips" : [] } }, "name" : "Test::CleanNamespaces", "version" : "0.006" }, { "class" : "Dist::Zilla::Plugin::Test::CheckBreaks", "config" : { "Dist::Zilla::Plugin::Test::CheckBreaks" : { "conflicts_module" : [ "Module::Runtime::Conflicts", "Moose::Conflicts" ], "no_forced_deps" : 0 }, "Dist::Zilla::Role::ModuleMetadata" : { "Module::Metadata" : "1.000038", "version" : "0.006" } }, "name" : "Test::CheckBreaks", "version" : "0.019" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExtraTestFiles", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":PerlExecFiles", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":AllFiles", "version" : "6.032" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":NoFiles", "version" : "6.032" } ], "zilla" : { "class" : "Dist::Zilla::Dist::Builder", "config" : { "is_trial" : 0 }, "version" : "6.032" } }, "x_breaks" : { "Dist::Zilla::App::Command::stale" : "< 0.040", "Dist::Zilla::App::Command::update" : "<= 0.04", "Dist::Zilla::App::Command::xtest" : "< 0.029", "Dist::Zilla::Plugin::Author::Plicease::Tests" : "<= 2.02", "Dist::Zilla::Plugin::CopyFilesFromBuild" : "< 0.161230", "Dist::Zilla::Plugin::CopyFilesFromBuild::Filtered" : "<= 0.001", "Dist::Zilla::Plugin::Git" : "<= 2.036", "Dist::Zilla::Plugin::Keywords" : "<= 0.006", "Dist::Zilla::Plugin::MakeMaker::Awesome" : "< 0.22", "Dist::Zilla::Plugin::NameFromDirectory" : "<= 0.03", "Dist::Zilla::Plugin::PodWeaver" : "<= 4.006", "Dist::Zilla::Plugin::Prereqs::AuthorDeps" : "<= 0.005", "Dist::Zilla::Plugin::ReadmeAnyFromPod" : "< 0.161170", "Dist::Zilla::Plugin::RepoFileInjector" : "<= 0.005", "Dist::Zilla::Plugin::Run" : "<= 0.035", "Dist::Zilla::Plugin::Test::CheckDeps" : "<= 0.013", "Dist::Zilla::Plugin::Test::Version" : "<= 1.05", "Dist::Zilla::Plugin::TrialVersionComment" : "<= 0.003" }, "x_contributors" : [ "\u00c6var Arnfj\u00f6r\u00f0 Bjarmason ", "Alastair McGowan-Douglas ", "Alceu Rodrigues de Freitas Junior ", "Alexei Znamensky ", "Alex Vandiver ", "ambs ", "Andrew Rodland ", "Andy Jack ", "Apocalypse ", "ben hengst ", "Bernardo Rechea ", "Branislav Zahradn\u00edk ", "Brian Fraser ", "Caleb Cushing ", "Chase Whitener ", "Chisel ", "Christian Walde ", "Christopher Bottoms ", "Christopher J. Madsen ", "Chris Weyl ", "Cory G Watson ", "csjewell ", "Curtis Brandt ", "Dagfinn Ilmari Manns\u00e5ker ", "Damien KRotkine ", "Dan Book ", "Daniel B\u00f6hmer ", "Danijel Tasov ", "Dave Lambley ", "Dave O'Neill ", "Dave Rolsky ", "David E. Wheeler ", "David Golden ", "David H. Adler ", "David Steinbrunner ", "David Zurborg ", "Davor Cubranic ", "Dimitar Petrov ", "Doug Bell ", "Doug Bell ", "Elvin Aslanov ", "Erik Carlsson ", "Fayland Lam ", "Felix Ostmann ", "Florian Ragwitz ", "Fred Moyer ", "fREW Schmidt ", "gardnerm ", "Gianni Ceccarelli ", "Graham Barr ", "Graham Knop ", "Graham Ollis ", "Graham Ollis ", "Grzegorz Ro\u017cniecki ", "H\u00e5kon H\u00e6gland ", "Hans Dieter Pearcey ", "Hunter McMillen ", "Ivan Bessarabov ", "Jakob Voss ", "jantore ", "J\u00e9r\u00f4me Quelin ", "Jesse Luehrs ", "Jesse Vincent ", "JJ Merelo ", "John Napiorkowski ", "jonasbn ", "Jonathan C. Otsuka ", "Jonathan Rockway ", "Jonathan Scott Duff ", "Jonathan Yu ", "Karen Etheridge ", "Kent Fredric ", "Kent Fredric ", "Leon Timmermans ", "Lucas Theisen ", "Luc St-Louis ", "Marcel Gruenauer ", "Mark Flickinger ", "Martin McGrath ", "Mary Ehlers ", "Mateu X Hunter ", "Matthew Horsfall ", "mauke ", "Michael Conrad ", "Michael G. Schwern ", "Michael Jemmeson ", "Mickey Nasriachi ", "Mike Doherty ", "Mohammad S Anwar ", "Moritz Onken ", "Neil Bowers ", "Nickolay Platonov ", "Nick Tonkin <1nickt@users.noreply.github.com>", "nperez ", "Olivier Mengu\u00e9 ", "Paul Cochrane ", "Paulo Custodio ", "Pedro Melo ", "perlancar (@pc-office) ", "Philippe Bruhat (BooK) ", "raf <68724930+rafork@users.noreply.github.com>", "Randy Stauner ", "reneeb ", "Ricardo Signes ", "robertkrimen ", "Rob Hoelz ", "Robin Smidsr\u00f8d ", "Roy Ivy III ", "Shawn M Moore ", "Shlomi Fish ", "Shoichi Kaji ", "Smylers ", "Steffen Schwigon ", "Steven Haryanto ", "Tatsuhiko Miyagawa ", "Upasana Shukla ", "Van de Bugger ", "Vyacheslav Matjukhin ", "Yanick Champoux ", "Yuval Kogman " ], "x_generated_by_perl" : "v5.38.0", "x_rjbs_perl_window" : "standard", "x_serialization_backend" : "Cpanel::JSON::XS version 4.37", "x_spdx_expression" : "Artistic-1.0-Perl OR GPL-1.0-or-later" } Dist-Zilla-6.032/dist.ini000644 000765 000024 00000005324 14624411017 015253 0ustar00rjbsstaff000000 000000 name = Dist-Zilla author = Ricardo SIGNES 😏 license = Perl_5 copyright_holder = Ricardo SIGNES [@RJBS] homepage = http://dzil.org/ perl-window = standard [ModuleShareDirs] Dist::Zilla::MintingProfile::Default = profiles [MetaNoIndex] dir = corpus dir = misc [MetaResources] x_IRC = irc://irc.perl.org/#distzilla x_MailingList = http://dzil.org/#mailing-list [Prereqs / TestRequires] Test::More = 0.90 [Prereqs / RuntimeRecommends] Term::ReadLine::Gnu = 0 Archive::Tar::Wrapper = 0.15 ; https://github.com/rjbs/Data-OptList/pull/1 Data::OptList = 0.110 ; default install util for dzil, otherwise you need to specify ; (e.g. "dzil install --install-command cpan") App::cpanminus = 0 [Prereqs / RuntimeSuggests] PPI::XS = 0 [Prereqs] perl = v5.20.0 parent = 0 ; used by the AutoPrereq test corpus File::ShareDir::Install = 0.03 ; for EUMM Config::MVP = 2.200011 ; add cwd to lib during config reading Config::MVP::Reader::INI = 2.101461 ; allow spaces in plugin name Data::Section = 0.200000 ; default encodings to UTF-8 ExtUtils::Manifest = 1.54 ; for ManifestSkip that needs maniskip() Mixin::Linewise::Readers = 0.100 ; default encodings to UTF-8 PPI::Document = 1.222 ; version accessor for package stmt Term::ANSIColor = 5.00 ; 24-bit color support DateTime = 0.44 ; CLDR fixes, used by AutoVersion and NextRelease [OSPrereqs / MSWin32] DateTime::TimeZone = 1.92 [RemovePrereqs] remove = Config ; why isn't this indexed?? -- rjbs, 2011-02-11 remove = Dist::Zilla::Tester::_Role ; mistakenly added by autoprereq remove = Some::Package::That::Does::Not::Exist::Due::To::A::Typo remove = Path::Class ; only used in fallback code [CPANFile] [Breaks] Dist::Zilla::Plugin::MakeMaker::Awesome = < 0.22 Dist::Zilla::App::Command::stale = < 0.040 Dist::Zilla::Plugin::TrialVersionComment = <= 0.003 Dist::Zilla::Plugin::Run = <= 0.035 Dist::Zilla::App::Command::update = <= 0.04 Dist::Zilla::Plugin::Author::Plicease::Tests = <= 2.02 Dist::Zilla::Plugin::CopyFilesFromBuild::Filtered = <= 0.001 Dist::Zilla::Plugin::Prereqs::AuthorDeps = <= 0.005 Dist::Zilla::Plugin::Test::Version = <= 1.05 Dist::Zilla::Plugin::CopyFilesFromBuild = < 0.161230 Dist::Zilla::Plugin::ReadmeAnyFromPod = < 0.161170 Dist::Zilla::Plugin::PodWeaver = <= 4.006 Dist::Zilla::Plugin::Test::CheckDeps = <= 0.013 Dist::Zilla::Plugin::Git = <= 2.036 Dist::Zilla::Plugin::Keywords = <= 0.006 Dist::Zilla::Plugin::RepoFileInjector = <= 0.005 Dist::Zilla::App::Command::xtest = < 0.029 Dist::Zilla::Plugin::NameFromDirectory = <= 0.03 [Test::CleanNamespaces] [Test::CheckBreaks] :version = 0.017 conflicts_module = Moose::Conflicts conflicts_module = Module::Runtime::Conflicts Dist-Zilla-6.032/profiles/default/000755 000765 000024 00000000000 14624411017 017052 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/profiles/default/profile.ini000644 000765 000024 00000000050 14624411017 021206 0ustar00rjbsstaff000000 000000 [DistINI] append_file = extra-dist.ini Dist-Zilla-6.032/profiles/default/extra-dist.ini000644 000765 000024 00000000032 14624411017 021632 0ustar00rjbsstaff000000 000000 version = 0.001 [@Basic] Dist-Zilla-6.032/lib/Test/000755 000765 000024 00000000000 14624411017 015270 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/000755 000765 000024 00000000000 14624411017 015254 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla/000755 000765 000024 00000000000 14624411017 016327 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla.pm000644 000765 000024 00000114376 14624411017 016701 0ustar00rjbsstaff000000 000000 package Dist::Zilla 6.032; # ABSTRACT: distribution builder; installer not included! use Moose 0.92; # role composition fixes with 'Dist::Zilla::Role::ConfigDumper'; use Dist::Zilla::Pragmas; # This comment has fün̈n̈ÿ characters. use MooseX::Types::Moose qw(ArrayRef Bool HashRef Object Str); use MooseX::Types::Perl qw(DistName LaxVersionStr); use Moose::Util::TypeConstraints; use Dist::Zilla::Types qw(Path License ReleaseStatus); use Log::Dispatchouli 1.100712; # proxy_loggers, quiet_fatal use Dist::Zilla::Path; use List::Util 1.33 qw(first none); use Software::License 0.104001; # ->program use String::RewritePrefix; use Try::Tiny; use Dist::Zilla::Prereqs; use Dist::Zilla::File::OnDisk; use Dist::Zilla::Role::Plugin; use Dist::Zilla::Util; use Module::Runtime 'require_module'; use namespace::autoclean; #pod =head1 DESCRIPTION #pod #pod Dist::Zilla builds distributions of code to be uploaded to the CPAN. In this #pod respect, it is like L, L, or #pod L. Unlike those tools, however, it is not also a system for #pod installing code that has been downloaded from the CPAN. Since it's only run by #pod authors, and is meant to be run on a repository checkout rather than on #pod published, released code, it can do much more than those tools, and is free to #pod make much more ludicrous demands in terms of prerequisites. #pod #pod If you have access to the web, you can learn more and find an interactive #pod tutorial at B>. If not, try #pod L. #pod #pod =cut has chrome => ( is => 'rw', isa => role_type('Dist::Zilla::Role::Chrome'), required => 1, ); #pod =attr name #pod #pod The name attribute (which is required) gives the name of the distribution to be #pod built. This is usually the name of the distribution's main module, with the #pod double colons (C<::>) replaced with dashes. For example: C. #pod #pod =cut has name => ( is => 'ro', isa => DistName, lazy => 1, builder => '_build_name', ); #pod =attr version #pod #pod This is the version of the distribution to be created. #pod #pod =cut has _version_override => ( isa => LaxVersionStr, is => 'ro' , init_arg => 'version', ); # XXX: *clearly* this needs to be really much smarter -- rjbs, 2008-06-01 has version => ( is => 'rw', isa => LaxVersionStr, lazy => 1, init_arg => undef, builder => '_build_version', ); sub _build_name { my ($self) = @_; my $name; for my $plugin (@{ $self->plugins_with(-NameProvider) }) { next unless defined(my $this_name = $plugin->provide_name); $self->log_fatal('attempted to set name twice') if defined $name; $name = $this_name; } $self->log_fatal('no name was ever set') unless defined $name; $name; } sub _build_version { my ($self) = @_; my $version = $self->_version_override; for my $plugin (@{ $self->plugins_with(-VersionProvider) }) { next unless defined(my $this_version = $plugin->provide_version); $self->log_fatal('attempted to set version twice') if defined $version; $version = $this_version; } $self->log_fatal('no version was ever set') unless defined $version; $version; } #pod =attr release_status #pod #pod This attribute sets the release status to one of the #pod L #pod values: 'stable', 'testing' or 'unstable'. #pod #pod If the C<$ENV{RELEASE_STATUS}> environment variable exists, its value will #pod be used as the release status. #pod #pod For backwards compatibility, if C<$ENV{RELEASE_STATUS}> does not exist and #pod the C<$ENV{TRIAL}> variable is true, the release status will be 'testing'. #pod #pod Otherwise, the release status will be set from a #pod L, if one #pod has been configured. #pod #pod For backwards compatibility, setting C true in F is #pod equivalent to using a C. If C is false, #pod it has no effect. #pod #pod Only B C may be used. #pod #pod If no providers are used, the release status defaults to 'stable' unless there #pod is an "_" character in the version, in which case, it defaults to 'testing'. #pod #pod =cut # release status must be lazy, after files are gathered has release_status => ( is => 'ro', isa => ReleaseStatus, lazy => 1, builder => '_build_release_status', ); sub _build_release_status { my ($self) = @_; # environment variables override completely return $self->_release_status_from_env if $self->_release_status_from_env; # other ways of setting status must not conflict my $status; # dist.ini is equivalent to a release provider if is_trial is true. # If false, though, we want other providers to run or fall back to # the version $status = 'testing' if $self->_override_is_trial; for my $plugin (@{ $self->plugins_with(-ReleaseStatusProvider) }) { next unless defined(my $this_status = $plugin->provide_release_status); $self->log_fatal('attempted to set release status twice') if defined $status; $status = $this_status; } return $status || ( $self->version =~ /_/ ? 'testing' : 'stable' ); } # captures environment variables early during Zilla object construction has _release_status_from_env => ( is => 'ro', isa => Str, builder => '_build_release_status_from_env', ); sub _build_release_status_from_env { my ($self) = @_; return $ENV{RELEASE_STATUS} if $ENV{RELEASE_STATUS}; return $ENV{TRIAL} ? 'testing' : ''; } #pod =attr abstract #pod #pod This is a one-line summary of the distribution. If none is given, one will be #pod looked for in the L of the dist. #pod #pod =cut has abstract => ( is => 'rw', isa => 'Str', lazy => 1, default => sub { my ($self) = @_; unless ($self->main_module) { die "no abstract given and no main_module found; make sure your main module is in ./lib\n"; } my $file = $self->main_module; $self->log_debug("extracting distribution abstract from " . $file->name); my $abstract = Dist::Zilla::Util->abstract_from_file($file); if (!defined($abstract)) { my $filename = $file->name; die "Unable to extract an abstract from $filename. Please add the following comment to the file with your abstract: # ABSTRACT: turns baubles into trinkets "; } return $abstract; } ); #pod =attr main_module #pod #pod This is the module where Dist::Zilla might look for various defaults, like #pod the distribution abstract. By default, it's derived from the distribution #pod name. If your distribution is Foo-Bar, and F exists, #pod that's the main_module. Otherwise, it's the shortest-named module in the #pod distribution. This may change! #pod #pod You can override the default by specifying the file path explicitly, #pod ie: #pod #pod main_module = lib/Foo/Bar.pm #pod #pod =cut has _main_module_override => ( isa => 'Str', is => 'ro' , init_arg => 'main_module', predicate => '_has_main_module_override', ); has main_module => ( is => 'ro', isa => 'Dist::Zilla::Role::File', lazy => 1, init_arg => undef, default => sub { my ($self) = @_; my $file; my $guess; if ( $self->_has_main_module_override ) { $file = first { $_->name eq $self->_main_module_override } @{ $self->files }; } else { # We're having to guess $guess = $self->name =~ s{-}{/}gr; $guess = "lib/$guess.pm"; $file = (first { $_->name eq $guess } @{ $self->files }) || (sort { length $a->name <=> length $b->name } grep { $_->name =~ m{\.pm\z} and $_->name =~ m{\Alib/} } @{ $self->files })[0]; $self->log("guessing dist's main_module is " . ($file ? $file->name : $guess)); } if (not $file) { my @errorlines; push @errorlines, "Unable to find main_module in the distribution"; if ($self->_has_main_module_override) { push @errorlines, "'main_module' was specified in dist.ini but the file '" . $self->_main_module_override . "' is not to be found in our dist. ( Did you add it? )"; } else { push @errorlines,"We tried to guess '$guess' but no file like that existed"; } if (not @{ $self->files }) { push @errorlines, "Upon further inspection we didn't find any files in your dist, did you add any?"; } elsif ( none { $_->name =~ m{^lib/.+\.pm\z} } @{ $self->files } ){ push @errorlines, "We didn't find any .pm files in your dist, this is probably a problem."; } push @errorlines,"Cannot continue without a main_module"; $self->log_fatal( join qq{\n}, @errorlines ); } $self->log_debug("dist's main_module is " . $file->name); return $file; }, ); #pod =attr license #pod #pod This is the L object for this dist's #pod license and copyright. #pod #pod It will be created automatically, if possible, with the #pod C and C attributes. If necessary, it will #pod try to guess the license from the POD of the dist's main module. #pod #pod A better option is to set the C name in the dist's config to something #pod understandable, like C. #pod #pod =cut has license => ( is => 'ro', isa => License, lazy => 1, init_arg => 'license_obj', predicate => '_has_license', builder => '_build_license', handles => { copyright_holder => 'holder', copyright_year => 'year', }, ); sub _build_license { my ($self) = @_; my $license_class = $self->_license_class; my $copyright_holder = $self->_copyright_holder; my $copyright_year = $self->_copyright_year; my $provided_license; for my $plugin (@{ $self->plugins_with(-LicenseProvider) }) { my $this_license = $plugin->provide_license({ copyright_holder => $copyright_holder, copyright_year => $copyright_year, }); next unless defined $this_license; $self->log_fatal('attempted to set license twice') if defined $provided_license; $provided_license = $this_license; } return $provided_license if defined $provided_license; if ($license_class) { $license_class = String::RewritePrefix->rewrite( { '=' => '', '' => 'Software::License::' }, $license_class, ); } else { require Software::LicenseUtils; my @guess = Software::LicenseUtils->guess_license_from_pod( $self->main_module->content ); if (@guess != 1) { $self->log_fatal( "no license data in config, no %Rights stash,", "couldn't make a good guess at license from Pod; giving up. ", "Perhaps you need to set up a global config file (dzil setup)?" ); } my $filename = $self->main_module->name; $license_class = $guess[0]; $self->log("based on POD in $filename, guessing license is $guess[0]"); } unless (eval { require_module($license_class) }) { $self->log_fatal( "could not load class $license_class for license " . $self->_license_class ); } my $license = $license_class->new({ holder => $self->_copyright_holder, year => $self->_copyright_year, program => $self->name, }); $self->_clear_license_class; $self->_clear_copyright_holder; $self->_clear_copyright_year; return $license; } has _license_class => ( is => 'ro', isa => 'Maybe[Str]', lazy => 1, init_arg => 'license', clearer => '_clear_license_class', default => sub { my $stash = $_[0]->stash_named('%Rights'); $stash && return $stash->license_class; return; } ); has _copyright_holder => ( is => 'ro', isa => 'Maybe[Str]', lazy => 1, init_arg => 'copyright_holder', clearer => '_clear_copyright_holder', default => sub { return unless my $stash = $_[0]->stash_named('%Rights'); $stash && return $stash->copyright_holder; return; } ); has _copyright_year => ( is => 'ro', isa => 'Str', lazy => 1, init_arg => 'copyright_year', clearer => '_clear_copyright_year', default => sub { # Oh man. This is a terrible idea! I mean, what if by the code gets run # around like Dec 31, 23:59:59.9 and by the time the default gets called # it's the next year but the default was already set up? Oh man. That # could ruin lives! I guess we could make this a sub to defer the guess, # but think of the performance hit! I guess we'll have to suffer through # this until we can optimize the code to not take .1s to run, right? -- # rjbs, 2008-06-13 my $stash = $_[0]->stash_named('%Rights'); my $year = $stash && $stash->copyright_year; return( $year // (localtime)[5] + 1900 ); } ); #pod =attr authors #pod #pod This is an arrayref of author strings, like this: #pod #pod [ #pod 'Ricardo Signes ', #pod 'X. Ample, Jr ', #pod ] #pod #pod This is likely to change at some point in the near future. #pod #pod =cut has authors => ( is => 'ro', isa => ArrayRef[Str], lazy => 1, default => sub { my ($self) = @_; if (my $stash = $self->stash_named('%User')) { return $stash->authors; } my $author = try { $self->copyright_holder }; return [ $author ] if length $author; $self->log_fatal( "No %User stash and no copyright holder;", "can't determine dist author; configure author or a %User section", ); }, ); #pod =attr files #pod #pod This is an arrayref of objects implementing L that #pod will, if left in this arrayref, be built into the dist. #pod #pod Non-core code should avoid altering this arrayref, but sometimes there is not #pod other way to change the list of files. In the future, the representation used #pod for storing files B. #pod #pod =cut has files => ( is => 'ro', isa => ArrayRef[ role_type('Dist::Zilla::Role::File') ], lazy => 1, init_arg => undef, default => sub { [] }, ); sub prune_file { my ($self, $file) = @_; my @files = @{ $self->files }; for my $i (0 .. $#files) { next unless $file == $files[ $i ]; splice @{ $self->files }, $i, 1; return; } return; } #pod =attr root #pod #pod This is the root directory of the dist, as a L. It will #pod nearly always be the current working directory in which C was run. #pod #pod =cut has root => ( is => 'ro', isa => Path, coerce => 1, required => 1, ); #pod =attr is_trial #pod #pod This attribute tells us whether or not the dist will be a trial release, #pod i.e. whether it has C 'testing' or 'unstable'. #pod #pod Do not set this directly, it will be derived from C. #pod #pod =cut has is_trial => ( is => 'ro', isa => Bool, init_arg => undef, lazy => 1, builder => '_build_is_trial', ); has _override_is_trial => ( is => 'ro', isa => Bool, init_arg => 'is_trial', default => 0, ); sub _build_is_trial { my ($self) = @_; return $self->release_status =~ /\A(?:testing|unstable)\z/ ? 1 : 0; } #pod =attr plugins #pod #pod This is an arrayref of plugins that have been plugged into this Dist::Zilla #pod object. #pod #pod Non-core code B alter this arrayref. Public access to this attribute #pod B in the future. #pod #pod =cut has plugins => ( is => 'ro', isa => 'ArrayRef[Dist::Zilla::Role::Plugin]', init_arg => undef, default => sub { [ ] }, ); #pod =attr distmeta #pod #pod This is a hashref containing the metadata about this distribution that will be #pod stored in META.yml or META.json. You should not alter the metadata in this #pod hash; use a MetaProvider plugin instead. #pod #pod =cut has distmeta => ( is => 'ro', isa => 'HashRef', init_arg => undef, lazy => 1, builder => '_build_distmeta', ); sub _build_distmeta { my ($self) = @_; require CPAN::Meta::Merge; my $meta_merge = CPAN::Meta::Merge->new(default_version => 2); my $meta = {}; for (@{ $self->plugins_with(-MetaProvider) }) { $meta = $meta_merge->merge($meta, $_->metadata); } my %meta_main = ( 'meta-spec' => { version => 2, url => 'https://metacpan.org/pod/CPAN::Meta::Spec', }, name => $self->name, version => $self->version, abstract => $self->abstract, author => $self->authors, license => [ $self->license->meta2_name ], release_status => $self->release_status, dynamic_config => 0, # problematic, I bet -- rjbs, 2010-06-04 generated_by => $self->_metadata_generator_id . ' version ' . ($self->VERSION // '(undef)'), x_generated_by_perl => "$^V", # v5.24.0 ); if (my $spdx = $self->license->spdx_expression) { $meta_main{x_spdx_expression} = $spdx; } $meta = $meta_merge->merge($meta, \%meta_main); return $meta; } sub _metadata_generator_id { 'Dist::Zilla' } #pod =attr prereqs #pod #pod This is a L object, which is a thin layer atop #pod L, and describes the distribution's prerequisites. #pod #pod =method register_prereqs #pod #pod Allows registration of prerequisites; delegates to #pod L via our L attribute. #pod #pod =cut has prereqs => ( is => 'ro', isa => 'Dist::Zilla::Prereqs', init_arg => undef, lazy => 1, default => sub { Dist::Zilla::Prereqs->new }, handles => [ qw(register_prereqs) ], ); #pod =method plugin_named #pod #pod my $plugin = $zilla->plugin_named( $plugin_name ); #pod #pod =cut sub plugin_named { my ($self, $name) = @_; my $plugin = first { $_->plugin_name eq $name } @{ $self->plugins }; return $plugin if $plugin; return; } #pod =method plugins_with #pod #pod my $roles = $zilla->plugins_with( -SomeRole ); #pod #pod This method returns an arrayref containing all the Dist::Zilla object's plugins #pod that perform the named role. If the given role name begins with a dash, the #pod dash is replaced with "Dist::Zilla::Role::" #pod #pod =cut sub plugins_with { my ($self, $role) = @_; $role =~ s/^-/Dist::Zilla::Role::/; my $plugins = [ grep { $_->does($role) } @{ $self->plugins } ]; return $plugins; } #pod =method find_files #pod #pod my $files = $zilla->find_files( $finder_name ); #pod #pod This method will look for a #pod L-performing plugin with the given #pod name and return the result of calling C on it. If no plugin can be #pod found, an exception will be raised. #pod #pod =cut sub find_files { my ($self, $finder_name) = @_; $self->log_fatal("no plugin named $finder_name found") unless my $plugin = $self->plugin_named($finder_name); $self->log_fatal("plugin $finder_name is not a FileFinder") unless $plugin->does('Dist::Zilla::Role::FileFinder'); $plugin->find_files; } sub _check_dupe_files { my ($self) = @_; my %files_named; my @dupes; for my $file (@{ $self->files }) { my $filename = $file->name; if (my $seen = $files_named{ $filename }) { push @{ $seen }, $file; push @dupes, $filename if @{ $seen } == 2; } else { $files_named{ $filename } = [ $file ]; } } return unless @dupes; for my $name (@dupes) { $self->log("attempt to add $name multiple times; added by: " . join('; ', map { $_->added_by } @{ $files_named{ $name } }) ); } Carp::croak("aborting; duplicate files would be produced"); } sub _write_out_file { my ($self, $file, $build_root) = @_; # Okay, this is a bit much, until we have ->debug. -- rjbs, 2008-06-13 # $self->log("writing out " . $file->name); my $file_path = path($file->name); my $to_dir = path($build_root)->child( $file_path->parent ); my $to = $to_dir->child( $file_path->basename ); $to_dir->mkpath unless -e $to_dir; die "not a directory: $to_dir" unless -d $to_dir; Carp::croak("attempted to write $to multiple times") if -e $to; path("$to")->spew_raw( $file->encoded_content ); chmod $file->mode, "$to" or die "couldn't chmod $to: $!"; } #pod =attr logger #pod #pod This attribute stores a L object, used to log #pod messages. By default, a proxy to the dist's L is #pod taken. #pod #pod The following methods are delegated from the Dist::Zilla object to the logger: #pod #pod =for :list #pod * log #pod * log_debug #pod * log_fatal #pod #pod =cut has logger => ( is => 'ro', isa => 'Log::Dispatchouli::Proxy', # could be duck typed, I guess lazy => 1, handles => [ qw(log log_debug log_fatal) ], default => sub { $_[0]->chrome->logger->proxy({ proxy_prefix => '[DZ] ' }) }, ); around dump_config => sub { my ($orig, $self) = @_; my $config = $self->$orig; $config->{is_trial} = $self->is_trial; return $config; }; has _local_stashes => ( is => 'ro', isa => HashRef[ Object ], lazy => 1, default => sub { {} }, ); has _global_stashes => ( is => 'ro', isa => HashRef[ Object ], lazy => 1, default => sub { {} }, ); #pod =method stash_named #pod #pod my $stash = $zilla->stash_named( $name ); #pod #pod This method will return the stash with the given name, or undef if none exists. #pod It looks for a local stash (for this dist) first, then falls back to a global #pod stash (from the user's global configuration). #pod #pod =cut sub stash_named { my ($self, $name) = @_; return $self->_local_stashes->{ $name } if $self->_local_stashes->{$name}; return $self->_global_stashes->{ $name }; } __PACKAGE__->meta->make_immutable; 1; #pod =head1 STABILITY PROMISE #pod #pod None. #pod #pod I will try not to break things within any major release. Minor releases are #pod not extensively tested before release. In major releases, anything goes, #pod although I will try to publish a complete list of known breaking changes in any #pod major release. #pod #pod If Dist::Zilla was a tool, it would have yellow and black stripes and there #pod would be no L
    on it. #pod It is nasty, brutish, and large. #pod #pod =head1 SUPPORT #pod #pod There are usually people on C in C<#distzilla>, even if they're #pod idling. #pod #pod The L has several valuable resources for #pod learning to use Dist::Zilla. #pod #pod =head1 SEE ALSO #pod #pod =over 4 #pod #pod =item * #pod #pod In the Dist::Zilla distribution: #pod #pod =over 4 #pod #pod =item * #pod #pod Plugin bundles: #pod L<@Basic|Dist::Zilla::PluginBundle::Basic>, #pod L<@Filter|Dist::Zilla::PluginBundle::Filter>. #pod #pod =item * #pod #pod Major plugins: #pod L, #pod L, #pod L, #pod L, #pod L, #pod ... #pod #pod =back #pod #pod =item * #pod #pod On the CPAN: #pod #pod =over 4 #pod #pod =item * #pod #pod Search for plugins: L #pod #pod =item * #pod #pod Search for plugin bundles: L #pod #pod =back #pod #pod =back __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla - distribution builder; installer not included! =head1 VERSION version 6.032 =head1 DESCRIPTION Dist::Zilla builds distributions of code to be uploaded to the CPAN. In this respect, it is like L, L, or L. Unlike those tools, however, it is not also a system for installing code that has been downloaded from the CPAN. Since it's only run by authors, and is meant to be run on a repository checkout rather than on published, released code, it can do much more than those tools, and is free to make much more ludicrous demands in terms of prerequisites. If you have access to the web, you can learn more and find an interactive tutorial at B>. If not, try L. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 name The name attribute (which is required) gives the name of the distribution to be built. This is usually the name of the distribution's main module, with the double colons (C<::>) replaced with dashes. For example: C. =head2 version This is the version of the distribution to be created. =head2 release_status This attribute sets the release status to one of the L values: 'stable', 'testing' or 'unstable'. If the C<$ENV{RELEASE_STATUS}> environment variable exists, its value will be used as the release status. For backwards compatibility, if C<$ENV{RELEASE_STATUS}> does not exist and the C<$ENV{TRIAL}> variable is true, the release status will be 'testing'. Otherwise, the release status will be set from a L, if one has been configured. For backwards compatibility, setting C true in F is equivalent to using a C. If C is false, it has no effect. Only B C may be used. If no providers are used, the release status defaults to 'stable' unless there is an "_" character in the version, in which case, it defaults to 'testing'. =head2 abstract This is a one-line summary of the distribution. If none is given, one will be looked for in the L of the dist. =head2 main_module This is the module where Dist::Zilla might look for various defaults, like the distribution abstract. By default, it's derived from the distribution name. If your distribution is Foo-Bar, and F exists, that's the main_module. Otherwise, it's the shortest-named module in the distribution. This may change! You can override the default by specifying the file path explicitly, ie: main_module = lib/Foo/Bar.pm =head2 license This is the L object for this dist's license and copyright. It will be created automatically, if possible, with the C and C attributes. If necessary, it will try to guess the license from the POD of the dist's main module. A better option is to set the C name in the dist's config to something understandable, like C. =head2 authors This is an arrayref of author strings, like this: [ 'Ricardo Signes ', 'X. Ample, Jr ', ] This is likely to change at some point in the near future. =head2 files This is an arrayref of objects implementing L that will, if left in this arrayref, be built into the dist. Non-core code should avoid altering this arrayref, but sometimes there is not other way to change the list of files. In the future, the representation used for storing files B. =head2 root This is the root directory of the dist, as a L. It will nearly always be the current working directory in which C was run. =head2 is_trial This attribute tells us whether or not the dist will be a trial release, i.e. whether it has C 'testing' or 'unstable'. Do not set this directly, it will be derived from C. =head2 plugins This is an arrayref of plugins that have been plugged into this Dist::Zilla object. Non-core code B alter this arrayref. Public access to this attribute B in the future. =head2 distmeta This is a hashref containing the metadata about this distribution that will be stored in META.yml or META.json. You should not alter the metadata in this hash; use a MetaProvider plugin instead. =head2 prereqs This is a L object, which is a thin layer atop L, and describes the distribution's prerequisites. =head2 logger This attribute stores a L object, used to log messages. By default, a proxy to the dist's L is taken. The following methods are delegated from the Dist::Zilla object to the logger: =over 4 =item * log =item * log_debug =item * log_fatal =back =head1 METHODS =head2 register_prereqs Allows registration of prerequisites; delegates to L via our L attribute. =head2 plugin_named my $plugin = $zilla->plugin_named( $plugin_name ); =head2 plugins_with my $roles = $zilla->plugins_with( -SomeRole ); This method returns an arrayref containing all the Dist::Zilla object's plugins that perform the named role. If the given role name begins with a dash, the dash is replaced with "Dist::Zilla::Role::" =head2 find_files my $files = $zilla->find_files( $finder_name ); This method will look for a L-performing plugin with the given name and return the result of calling C on it. If no plugin can be found, an exception will be raised. =head2 stash_named my $stash = $zilla->stash_named( $name ); This method will return the stash with the given name, or undef if none exists. It looks for a local stash (for this dist) first, then falls back to a global stash (from the user's global configuration). =head1 STABILITY PROMISE None. I will try not to break things within any major release. Minor releases are not extensively tested before release. In major releases, anything goes, although I will try to publish a complete list of known breaking changes in any major release. If Dist::Zilla was a tool, it would have yellow and black stripes and there would be no L
      on it. It is nasty, brutish, and large. =head1 SUPPORT There are usually people on C in C<#distzilla>, even if they're idling. The L has several valuable resources for learning to use Dist::Zilla. =head1 SEE ALSO =over 4 =item * In the Dist::Zilla distribution: =over 4 =item * Plugin bundles: L<@Basic|Dist::Zilla::PluginBundle::Basic>, L<@Filter|Dist::Zilla::PluginBundle::Filter>. =item * Major plugins: L, L, L, L, L, ... =back =item * On the CPAN: =over 4 =item * Search for plugins: L =item * Search for plugin bundles: L =back =back =head1 AUTHOR Ricardo SIGNES 😏 =head1 CONTRIBUTORS =for stopwords Ævar Arnfjörð Bjarmason Alastair McGowan-Douglas Alceu Rodrigues de Freitas Junior Alexei Znamensky Alex Vandiver ambs Andrew Rodland Andy Jack Apocalypse ben hengst Bernardo Rechea Branislav Zahradník Brian Fraser Caleb Cushing Chase Whitener Chisel Christian Walde Christopher Bottoms J. Madsen Chris Weyl Cory G Watson csjewell Curtis Brandt Dagfinn Ilmari Mannsåker Damien KRotkine Dan Book Daniel Böhmer Danijel Tasov Dave Lambley O'Neill Rolsky David E. Wheeler Golden H. Adler Steinbrunner Zurborg Davor Cubranic Dimitar Petrov Doug Bell Elvin Aslanov Erik Carlsson Fayland Lam Felix Ostmann Florian Ragwitz Fred Moyer fREW Schmidt gardnerm Gianni Ceccarelli Graham Barr Knop Ollis Grzegorz Rożniecki Håkon Hægland Hans Dieter Pearcey Hunter McMillen Ivan Bessarabov Jakob Voss jantore Jérôme Quelin Jesse Luehrs Vincent JJ Merelo John Napiorkowski jonasbn Jonathan C. Otsuka Rockway Scott Duff Yu Karen Etheridge Kent Fredric Leon Timmermans Lucas Theisen Luc St-Louis Marcel Gruenauer Mark Flickinger Martin McGrath Mary Ehlers Mateu X Matthew Horsfall mauke Michael Conrad G. Schwern Jemmeson Mickey Nasriachi Mike Doherty Mohammad S Anwar Moritz Onken Neil Bowers Nickolay Platonov Nick Tonkin nperez Olivier Mengué Paul Cochrane Paulo Custodio Pedro Melo perlancar (@pc-office) Philippe Bruhat (BooK) raf Randy Stauner reneeb Ricardo Signes robertkrimen Rob Hoelz Robin Smidsrød Roy Ivy III Shawn M Moore Shlomi Fish Shoichi Kaji Smylers Steffen Schwigon Steven Haryanto Tatsuhiko Miyagawa Upasana Shukla Van Bugger Vyacheslav Matjukhin Yanick Champoux Yuval Kogman =over 4 =item * Ævar Arnfjörð Bjarmason =item * Alastair McGowan-Douglas =item * Alceu Rodrigues de Freitas Junior =item * Alexei Znamensky =item * Alex Vandiver =item * ambs =item * Andrew Rodland =item * Andy Jack =item * Apocalypse =item * ben hengst =item * Bernardo Rechea =item * Branislav Zahradník =item * Brian Fraser =item * Caleb Cushing =item * Chase Whitener =item * Chisel =item * Christian Walde =item * Christopher Bottoms =item * Christopher J. Madsen =item * Chris Weyl =item * Cory G Watson =item * csjewell =item * Curtis Brandt =item * Dagfinn Ilmari Mannsåker =item * Damien KRotkine =item * Dan Book =item * Daniel Böhmer =item * Danijel Tasov =item * Dave Lambley =item * Dave O'Neill =item * Dave Rolsky =item * David E. Wheeler =item * David Golden =item * David H. Adler =item * David Steinbrunner =item * David Zurborg =item * Davor Cubranic =item * Dimitar Petrov =item * Doug Bell =item * Doug Bell =item * Elvin Aslanov =item * Erik Carlsson =item * Fayland Lam =item * Felix Ostmann =item * Florian Ragwitz =item * Fred Moyer =item * fREW Schmidt =item * gardnerm =item * Gianni Ceccarelli =item * Graham Barr =item * Graham Knop =item * Graham Ollis =item * Graham Ollis =item * Grzegorz Rożniecki =item * Håkon Hægland =item * Hans Dieter Pearcey =item * Hunter McMillen =item * Ivan Bessarabov =item * Jakob Voss =item * jantore =item * Jérôme Quelin =item * Jesse Luehrs =item * Jesse Vincent =item * JJ Merelo =item * John Napiorkowski =item * jonasbn =item * Jonathan C. Otsuka =item * Jonathan Rockway =item * Jonathan Scott Duff =item * Jonathan Yu =item * Karen Etheridge =item * Kent Fredric =item * Kent Fredric =item * Leon Timmermans =item * Lucas Theisen =item * Luc St-Louis =item * Marcel Gruenauer =item * Mark Flickinger =item * Martin McGrath =item * Mary Ehlers =item * Mateu X Hunter =item * Matthew Horsfall =item * mauke =item * Michael Conrad =item * Michael G. Schwern =item * Michael Jemmeson =item * Mickey Nasriachi =item * Mike Doherty =item * Mohammad S Anwar =item * Moritz Onken =item * Neil Bowers =item * Nickolay Platonov =item * Nick Tonkin <1nickt@users.noreply.github.com> =item * nperez =item * Olivier Mengué =item * Paul Cochrane =item * Paulo Custodio =item * Pedro Melo =item * perlancar (@pc-office) =item * Philippe Bruhat (BooK) =item * raf <68724930+rafork@users.noreply.github.com> =item * Randy Stauner =item * reneeb =item * Ricardo Signes =item * robertkrimen =item * Rob Hoelz =item * Robin Smidsrød =item * Roy Ivy III =item * Shawn M Moore =item * Shlomi Fish =item * Shoichi Kaji =item * Smylers =item * Steffen Schwigon =item * Steven Haryanto =item * Tatsuhiko Miyagawa =item * Upasana Shukla =item * Van de Bugger =item * Vyacheslav Matjukhin =item * Yanick Champoux =item * Yuval Kogman =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Tester.pm000644 000765 000024 00000024707 14624411017 020145 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Tester 6.032; # ABSTRACT: a testing-enabling stand-in for Dist::Zilla use Moose; extends 'Dist::Zilla::Dist::Builder'; use Dist::Zilla::Pragmas; use autodie; use Dist::Zilla::Chrome::Test; use File::pushd (); use File::Spec; use File::Temp; use Dist::Zilla::Path; use Sub::Exporter::Util (); use Sub::Exporter -setup => { exports => [ Builder => sub { $_[0]->can('builder') }, Minter => sub { $_[0]->can('minter') }, ], groups => [ default => [ qw(Builder Minter) ] ], }; use namespace::autoclean -except => 'import'; sub from_config { my ($self, @arg) = @_; # The only thing using a local time zone should be NextRelease. Normally it # defaults to "local," but since some users won't have an automatically # determinable time zone, we'll switch to not-local times for testing. # -- rjbs, 2015-11-26 local $Dist::Zilla::Plugin::NextRelease::DEFAULT_TIME_ZONE = 'GMT'; return $self->builder->from_config(@arg); } sub builder { 'Dist::Zilla::Tester::_Builder' } sub minter { 'Dist::Zilla::Tester::_Minter' } { package Dist::Zilla::Tester::_Role; use Moose::Role; has tempdir_root => ( is => 'rw', isa => 'Str|Undef', writer => '_set_tempdir_root', ); has tempdir_obj => ( is => 'ro', isa => 'File::Temp::Dir', clearer => '_clear_tempdir_obj', writer => '_set_tempdir_obj', ); sub DEMOLISH {} around DEMOLISH => sub { my $orig = shift; my $self = shift; # File::Temp deletes the directory when it goes out of scope $self->_clear_tempdir_obj; rmdir $self->tempdir_root if $self->tempdir_root; return $self->$orig(@_); }; has tempdir => ( is => 'ro', writer => '_set_tempdir', init_arg => undef, ); sub clear_log_events { my ($self) = @_; $self->chrome->logger->clear_events; } sub log_events { my ($self) = @_; $self->chrome->logger->events; } sub log_messages { my ($self) = @_; [ map {; $_->{message} } @{ $self->chrome->logger->events } ]; } sub slurp_file { my ($self, $filename) = @_; Dist::Zilla::Path::path( $self->tempdir->child($filename) )->slurp_utf8; } sub slurp_file_raw { my ($self, $filename) = @_; Dist::Zilla::Path::path( $self->tempdir->child($filename) )->slurp_raw; } sub _metadata_generator_id { 'Dist::Zilla::Tester' } no Moose::Role; } { package Dist::Zilla::Tester::_Builder 6.032; use Moose; extends 'Dist::Zilla::Dist::Builder'; with 'Dist::Zilla::Tester::_Role'; use File::Copy::Recursive 0.41 qw(dircopy); use Dist::Zilla::Path; our $Log_Events = []; sub most_recent_log_events { return @{ $Log_Events } } around from_config => sub { my ($orig, $self, $arg, $tester_arg) = @_; confess "dist_root required for from_config" unless $arg->{dist_root}; my $source = $arg->{dist_root}; my $tempdir_root = exists $tester_arg->{tempdir_root} ? $tester_arg->{tempdir_root} : 'tmp'; mkdir $tempdir_root if defined $tempdir_root and not -d $tempdir_root; my $tempdir_obj = File::Temp->newdir( CLEANUP => 1, (defined $tempdir_root ? (DIR => $tempdir_root) : ()), ); my $tempdir = path( path($tempdir_obj)->absolute) ; my $root = $tempdir->child('source'); $root->mkpath; dircopy($source, $root); if ($tester_arg->{also_copy}) { while (my ($src, $dest) = each %{ $tester_arg->{also_copy} }) { dircopy($src, $tempdir->child($dest)); } } if (my $files = $tester_arg->{add_files}) { while (my ($name, $content) = each %$files) { die "Unix path '$name' does not seem to be portable to the current OS" if !unix_path_seems_portable($name); my $fn = $tempdir->child($name); $fn->parent->mkpath; Dist::Zilla::Path::path($fn)->spew_utf8($content); } } local $arg->{dist_root} = "$root"; local $arg->{chrome} = Dist::Zilla::Chrome::Test->new; $Log_Events = $arg->{chrome}->logger->events; local @INC = @INC; my $had_dot; if ($INC[-1] eq '.') { $had_dot = 1; pop @INC; } @INC = map {; ref($_) ? $_ : File::Spec->rel2abs($_) } @INC; push @INC, '.' if $had_dot; # We do this so that . in @INC will find plugins like [=inc::YourFace] # -- rjbs, 2016-04-24 my $wd = File::pushd::pushd($arg->{dist_root}); local $ENV{DZIL_GLOBAL_CONFIG_ROOT}; $ENV{DZIL_GLOBAL_CONFIG_ROOT} = $tester_arg->{global_config_root} if defined $tester_arg->{global_config_root}; my $zilla = $self->$orig($arg); $zilla->_set_tempdir_root($tempdir_root); $zilla->_set_tempdir_obj($tempdir_obj); $zilla->_set_tempdir($tempdir); return $zilla; }; around build_in => sub { my ($orig, $self, $target) = @_; # Sometimes, we can't get a local time zone. When that happens, we're just # going to pretend to be in UTC. We don't do this during actual runtime # because the user can fix their own environment, but we'll let them do # that after they get the software installed. -- rjbs, 2020-01-26 my $ok = eval { DateTime::TimeZone->new(name => 'local'); 1 }; local $ENV{TZ} = $ok ? $ENV{TZ} : 'UTC'; # XXX: We *must eliminate* the need for this! It's only here because right # now building a dist with (root <> cwd) doesn't work. -- rjbs, 2010-03-08 my $wd = File::pushd::pushd($self->root); $target ||= do { my $target = path($self->tempdir)->child('build'); $target->mkpath; $target; }; return $self->$orig($target); }; around ['test', 'release'] => sub { my ($orig, $self) = @_; # XXX: We *must eliminate* the need for this! It's only here because right # now building a dist with (root <> cwd) doesn't work. -- rjbs, 2010-03-08 my $wd = File::pushd::pushd($self->root); return $self->$orig; }; no Moose; sub unix_path_seems_portable { return 1 if $^O eq "linux"; # this check only makes sense on non-unixes my ($unix_path) = @_; # split the $unix_path into 3 strings: $volume, $directories, $file; with: my @native_parts = File::Spec->splitpath($unix_path); # current OS rules my @unix_parts = File::Spec::Unix->splitpath($unix_path); # unix rules return unless join(qq{\0}, @native_parts) eq join(qq{\0}, @unix_parts); # split the $directories string into a list of the sub-directories; with: my @native_dirs = File::Spec->splitdir($native_parts[1]); # current OS rules my @unix_dirs = File::Spec::Unix->splitdir($unix_parts[1]); # unix rules return unless join(qq{\0}, @native_dirs) eq join(qq{\0}, @unix_dirs); return 1; } } { package Dist::Zilla::Tester::_Minter 6.032; use Moose; extends 'Dist::Zilla::Dist::Minter'; with 'Dist::Zilla::Tester::_Role'; use File::Copy::Recursive 0.41 qw(dircopy); use Dist::Zilla::Path; our $Log_Events = []; sub most_recent_log_events { return @{ $Log_Events } } sub _mint_target_dir { my ($self) = @_; my $name = $self->name; my $dir = $self->tempdir->child('mint')->absolute; $self->log_fatal("$dir already exists") if -e $dir; return $dir; } sub _setup_global_config { my ($self, $dir, $arg) = @_; my $config_base = path($dir)->child('config'); my $stash_registry = {}; require Dist::Zilla::MVP::Assembler::GlobalConfig; require Dist::Zilla::MVP::Section; my $assembler = Dist::Zilla::MVP::Assembler::GlobalConfig->new({ chrome => $arg->{chrome}, stash_registry => $stash_registry, section_class => 'Dist::Zilla::MVP::Section', # make this DZMA default }); require Dist::Zilla::MVP::Reader::Finder; my $reader = Dist::Zilla::MVP::Reader::Finder->new; my $seq = $reader->read_config($config_base, { assembler => $assembler }); return $stash_registry; } around _new_from_profile => sub { my ($orig, $self, $profile_data, $arg, $tester_arg) = @_; # Sometimes, we can't get a local time zone. When that happens, we're just # going to pretend to be in UTC. We don't do this during actual runtime # because the user can fix their own environment, but we'll let them do # that after they get the software installed. -- rjbs, 2020-01-26 my $ok = eval { DateTime::TimeZone->new(name => 'local'); 1 }; local $ENV{TZ} = $ok ? $ENV{TZ} : 'UTC'; my $tempdir_root = exists $tester_arg->{tempdir_root} ? $tester_arg->{tempdir_root} : 'tmp'; mkdir $tempdir_root if defined $tempdir_root and not -d $tempdir_root; my $tempdir_obj = File::Temp->newdir( CLEANUP => 1, (defined $tempdir_root ? (DIR => $tempdir_root) : ()), ); my $tempdir = path($tempdir_obj)->absolute; local $arg->{chrome} = Dist::Zilla::Chrome::Test->new; $Log_Events = $arg->{chrome}->logger->events; local @INC = map {; ref($_) ? $_ : File::Spec->rel2abs($_) } @INC; my $global_config_root = path($tester_arg->{global_config_root})->absolute; local $ENV{DZIL_GLOBAL_CONFIG_ROOT} = $global_config_root; my $global_stashes = $self->_setup_global_config( $global_config_root, { chrome => $arg->{chrome} }, ); local $arg->{_global_stashes} = $global_stashes; my $zilla = $self->$orig($profile_data, $arg); $zilla->_set_tempdir_root($tempdir_root); $zilla->_set_tempdir_obj($tempdir_obj); $zilla->_set_tempdir($tempdir); return $zilla; }; } no Moose; # XXX: namespace::autoclean caused problems -- rjbs, 2011-08-19 __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Tester - a testing-enabling stand-in for Dist::Zilla =head1 VERSION version 6.032 =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Pragmas.pm000644 000765 000024 00000002761 14624411017 020265 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Pragmas 6.032; # ABSTRACT: the pragmas (boilerplate!) to enable in each Dist::Zilla module use v5.20.0; use warnings; use utf8; use experimental qw(signatures); sub import { warnings->import; utf8->import; feature->unimport(':all'); feature->import(':5.20'); feature->unimport('switch'); experimental->import(qw( lexical_subs postderef postderef_qq signatures )); feature->unimport('multidimensional') if $] >= 5.034; } 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Pragmas - the pragmas (boilerplate!) to enable in each Dist::Zilla module =head1 VERSION version 6.032 =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Role/000755 000765 000024 00000000000 14624411017 017230 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla/App/000755 000765 000024 00000000000 14624411017 017047 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla/Tutorial.pm000644 000765 000024 00000026447 14624411017 020505 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Tutorial 6.032; # ABSTRACT: how to use this "Dist::Zilla" thing use Dist::Zilla::Pragmas; use Carp (); Carp::confess "you're not meant to use the tutorial, just read it!"; 1; #pod =head1 SYNOPSIS #pod #pod B: Maybe you should be looking at the web-based #pod tutorial instead. It's more complete. L #pod #pod Dist::Zilla builds distributions to be uploaded to the CPAN. That means that #pod the first thing you'll need is some code. #pod #pod Once you've got that, you'll need to configure Dist::Zilla. Here's a simple #pod F: #pod #pod name = Carbon-Dating #pod version = 0.003 #pod author = Alan Smithee #pod license = Perl_5 #pod copyright_holder = Alan Smithee #pod #pod [@Basic] #pod #pod [Prereqs] #pod App::Cmd = 0.013 #pod Number::Nary = 0 #pod Sub::Exporter = 0.981 #pod #pod The topmost section configures Dist::Zilla itself. Here are some of the #pod entries it expects: #pod #pod name - (required) the name of the dist being built #pod version - (required) the version of the dist #pod abstract - (required) a short description of the dist #pod author - (optional) the dist author (you may have multiple entries for this) #pod license - (required) the dist license; must be a Software::License::* name #pod #pod copyright_holder - (required) the entity holding copyright on the dist #pod #pod Some of the required values above may actually be provided by means other than #pod the top-level section of the config. For example, #pod L plugins can #pod set the version, and a line like this in the "main module" of the dist will set #pod the abstract: #pod #pod # ABSTRACT: a totally cool way to do totally great stuff #pod #pod The main modules is the module that shares the same name as the dist, in #pod general. #pod #pod Named sections load plugins, with the following rules: #pod #pod If a section name begins with an equals sign (C<=>), the rest of the section #pod name is left intact and not expanded. If the section name begins with an at #pod sign (C<@>), it is prepended with C. Otherwise, #pod it is prepended with C. #pod #pod The values inside a section are given as configuration to the plugin. Consult #pod each plugin's documentation for more information. #pod #pod The "Basic" bundle, seen above, builds a fairly normal distribution. It #pod rewrites tests from F<./xt>, adds some information to POD, and builds a #pod F. For more information, you can look at the docs for #pod L<@Basic|Dist::Zilla::PluginBundle::Basic> and see the plugins it includes. #pod #pod =head1 BUILDING YOUR DIST #pod #pod Maybe we're getting ahead of ourselves, here. Configuring a bunch of plugins #pod won't do you a lot of good unless you know how to use them to build your dist. #pod #pod Dist::Zilla ships with a command called F that will get installed by #pod default. While it can be extended to offer more commands, there are two really #pod useful ones: #pod #pod $ dzil build #pod #pod The C command will build the distribution. Say you're using the #pod configuration in the SYNOPSIS above. You'll end up with a file called #pod F. As long as you've done everything right, it #pod will be suitable for uploading to the CPAN. #pod #pod Of course, you should really test it out first. You can test the dist you'd be #pod building by running another F command: #pod #pod $ dzil test #pod #pod This will build a new copy of your distribution and run its tests, so you'll #pod know whether the dist that C would build is worth releasing! #pod #pod =head1 HOW BUILDS GET BUILT #pod #pod This is really more of a sketchy overview than a spec. #pod #pod First, all the plugins that perform the #pod L perform their C #pod tasks. #pod #pod The build root (where the dist is being built) is made. #pod #pod The Ls gather and inject files #pod into the distribution, then the Ls #pod remove some of them. #pod #pod All the Ls get a chance to muck about #pod with each file, possibly changing its name, content, or installability. #pod #pod Now that the distribution is basically set up, it needs an install tool, like a #pod F. All the #pod L-performing plugins are used to #pod do whatever is needed to make the dist installable. #pod #pod Everything is just about done. The files are all written out to disk and the #pod L plugins do their thing. #pod #pod =head1 RELEASING YOUR DIST #pod #pod By running C, you'll test your #pod distribution, build a tarball of it, and upload it to the CPAN. Plugins are #pod able to do things like check your version control system to make sure you're #pod releasing a new version and that you tag the version you've just uploaded. It #pod can also update your Changelog file, too, making sure that you don't need to #pod know what your next version number will be before releasing. #pod #pod The final CPAN release process is implemented by the #pod L plugin. However you can #pod replace it by your own to match your own (company?) process. #pod #pod =head1 SEE ALSO #pod #pod L #pod #pod =cut __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Tutorial - how to use this "Dist::Zilla" thing =head1 VERSION version 6.032 =head1 SYNOPSIS B: Maybe you should be looking at the web-based tutorial instead. It's more complete. L Dist::Zilla builds distributions to be uploaded to the CPAN. That means that the first thing you'll need is some code. Once you've got that, you'll need to configure Dist::Zilla. Here's a simple F: name = Carbon-Dating version = 0.003 author = Alan Smithee license = Perl_5 copyright_holder = Alan Smithee [@Basic] [Prereqs] App::Cmd = 0.013 Number::Nary = 0 Sub::Exporter = 0.981 The topmost section configures Dist::Zilla itself. Here are some of the entries it expects: name - (required) the name of the dist being built version - (required) the version of the dist abstract - (required) a short description of the dist author - (optional) the dist author (you may have multiple entries for this) license - (required) the dist license; must be a Software::License::* name copyright_holder - (required) the entity holding copyright on the dist Some of the required values above may actually be provided by means other than the top-level section of the config. For example, L plugins can set the version, and a line like this in the "main module" of the dist will set the abstract: # ABSTRACT: a totally cool way to do totally great stuff The main modules is the module that shares the same name as the dist, in general. Named sections load plugins, with the following rules: If a section name begins with an equals sign (C<=>), the rest of the section name is left intact and not expanded. If the section name begins with an at sign (C<@>), it is prepended with C. Otherwise, it is prepended with C. The values inside a section are given as configuration to the plugin. Consult each plugin's documentation for more information. The "Basic" bundle, seen above, builds a fairly normal distribution. It rewrites tests from F<./xt>, adds some information to POD, and builds a F. For more information, you can look at the docs for L<@Basic|Dist::Zilla::PluginBundle::Basic> and see the plugins it includes. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 BUILDING YOUR DIST Maybe we're getting ahead of ourselves, here. Configuring a bunch of plugins won't do you a lot of good unless you know how to use them to build your dist. Dist::Zilla ships with a command called F that will get installed by default. While it can be extended to offer more commands, there are two really useful ones: $ dzil build The C command will build the distribution. Say you're using the configuration in the SYNOPSIS above. You'll end up with a file called F. As long as you've done everything right, it will be suitable for uploading to the CPAN. Of course, you should really test it out first. You can test the dist you'd be building by running another F command: $ dzil test This will build a new copy of your distribution and run its tests, so you'll know whether the dist that C would build is worth releasing! =head1 HOW BUILDS GET BUILT This is really more of a sketchy overview than a spec. First, all the plugins that perform the L perform their C tasks. The build root (where the dist is being built) is made. The Ls gather and inject files into the distribution, then the Ls remove some of them. All the Ls get a chance to muck about with each file, possibly changing its name, content, or installability. Now that the distribution is basically set up, it needs an install tool, like a F. All the L-performing plugins are used to do whatever is needed to make the dist installable. Everything is just about done. The files are all written out to disk and the L plugins do their thing. =head1 RELEASING YOUR DIST By running C, you'll test your distribution, build a tarball of it, and upload it to the CPAN. Plugins are able to do things like check your version control system to make sure you're releasing a new version and that you tag the version you've just uploaded. It can also update your Changelog file, too, making sure that you don't need to know what your next version number will be before releasing. The final CPAN release process is implemented by the L plugin. However you can replace it by your own to match your own (company?) process. =head1 SEE ALSO L =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/MVP/000755 000765 000024 00000000000 14624411017 016771 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla/Util/000755 000765 000024 00000000000 14624411017 017244 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla/File/000755 000765 000024 00000000000 14624411017 017206 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla/Dist/000755 000765 000024 00000000000 14624411017 017232 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla/Prereqs.pm000644 000765 000024 00000014007 14624411017 020310 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Prereqs 6.032; # ABSTRACT: the prerequisites of a Dist::Zilla distribution use Moose; use Dist::Zilla::Pragmas; use MooseX::Types::Moose qw(Bool HashRef); use CPAN::Meta::Prereqs 2.120630; # add_string_requirement use String::RewritePrefix; use CPAN::Meta::Requirements 2.121; # requirements_for_module use namespace::autoclean; #pod =head1 DESCRIPTION #pod #pod Dist::Zilla::Prereqs is a subcomponent of Dist::Zilla. The C #pod attribute on your Dist::Zilla object is a Dist::Zilla::Prereqs object, and is #pod responsible for keeping track of the distribution's prerequisites. #pod #pod In fact, a Dist::Zilla::Prereqs object is just a thin layer over a #pod L object, stored in the C attribute. #pod #pod Almost everything this object does is proxied to the CPAN::Meta::Prereqs #pod object, so you should really read how I works. #pod #pod Dist::Zilla::Prereqs proxies the following methods to the CPAN::Meta::Prereqs #pod object: #pod #pod =for :list #pod * finalize #pod * is_finalized #pod * requirements_for #pod * as_string_hash #pod #pod =cut has cpan_meta_prereqs => ( is => 'ro', isa => 'CPAN::Meta::Prereqs', init_arg => undef, default => sub { CPAN::Meta::Prereqs->new }, handles => [ qw( finalize is_finalized requirements_for as_string_hash ) ], ); # storing this is sort of gross, but MakeMaker winds up needing the same data # anyway. -- xdg, 2013-10-22 # This does *not* contain configure requires, as MakeMaker explicitly should # not have it in its fallback prereqs. has merged_requires => ( is => 'ro', isa => 'CPAN::Meta::Requirements', init_arg => undef, default => sub { CPAN::Meta::Requirements->new }, ); #pod =method register_prereqs #pod #pod $prereqs->register_prereqs(%prereqs); #pod #pod $prereqs->register_prereqs(\%arg, %prereqs); #pod #pod This method adds new minimums to the prereqs object. If a hashref is the first #pod arg, it may have entries for C and C to indicate what kind of #pod prereqs are being registered. (For more information on phase and type, see #pod L.) For example, you might say: #pod #pod $prereqs->register_prereqs( #pod { phase => 'test', type => 'recommends' }, #pod 'Test::Foo' => '1.23', #pod 'XML::YZZY' => '2.01', #pod ); #pod #pod If not given, phase and type default to runtime and requires, respectively. #pod #pod =cut sub register_prereqs { my $self = shift; my $arg = ref($_[0]) ? shift(@_) : {}; my %prereq = @_; my $phase = $arg->{phase} || 'runtime'; my $type = $arg->{type} || 'requires'; my $req = $self->requirements_for($phase, $type); while (my ($package, $version) = each %prereq) { $req->add_string_requirement($package, $version || 0); } return; } before 'finalize' => sub { my ($self) = @_; $self->sync_runtime_build_test_requires; }; # this avoids a long-standing CPAN.pm bug that incorrectly merges runtime and # "build" (build+test) requirements by ensuring requirements stay unified # across all three phases sub sync_runtime_build_test_requires { my $self = shift; # first pass: generated merged requirements for my $phase ( qw/runtime build test/ ) { my $req = $self->requirements_for($phase, 'requires'); $self->merged_requires->add_requirements( $req ); }; # second pass: update from merged requirements for my $phase ( qw/runtime build test/ ) { my $req = $self->requirements_for($phase, 'requires'); for my $mod ( $req->required_modules ) { $req->clear_requirement( $mod ); $req->add_string_requirement( $mod => $self->merged_requires->requirements_for_module($mod) ); } } return; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Prereqs - the prerequisites of a Dist::Zilla distribution =head1 VERSION version 6.032 =head1 DESCRIPTION Dist::Zilla::Prereqs is a subcomponent of Dist::Zilla. The C attribute on your Dist::Zilla object is a Dist::Zilla::Prereqs object, and is responsible for keeping track of the distribution's prerequisites. In fact, a Dist::Zilla::Prereqs object is just a thin layer over a L object, stored in the C attribute. Almost everything this object does is proxied to the CPAN::Meta::Prereqs object, so you should really read how I works. Dist::Zilla::Prereqs proxies the following methods to the CPAN::Meta::Prereqs object: =over 4 =item * finalize =item * is_finalized =item * requirements_for =item * as_string_hash =back =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 METHODS =head2 register_prereqs $prereqs->register_prereqs(%prereqs); $prereqs->register_prereqs(\%arg, %prereqs); This method adds new minimums to the prereqs object. If a hashref is the first arg, it may have entries for C and C to indicate what kind of prereqs are being registered. (For more information on phase and type, see L.) For example, you might say: $prereqs->register_prereqs( { phase => 'test', type => 'recommends' }, 'Test::Foo' => '1.23', 'XML::YZZY' => '2.01', ); If not given, phase and type default to runtime and requires, respectively. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Util.pm000644 000765 000024 00000012623 14624411017 017606 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Util 6.032; # ABSTRACT: random snippets of code that Dist::Zilla wants use Dist::Zilla::Pragmas; use Carp (); use Encode (); use namespace::autoclean; { package Dist::Zilla::Util::PEA; @Dist::Zilla::Util::PEA::ISA = ('Pod::Simple'); sub _new { my ($class, @args) = @_; require Pod::Simple; my $parser = $class->new(@args); $parser->code_handler(sub { my ($line, $line_number, $parser) = @_; return if $parser->{abstract}; return $parser->{abstract} = $1 if $line =~ /^\s*#+\s*ABSTRACT:[ \t]*(\S.*)$/m; return; }); return $parser; } sub _handle_element_start { my ($parser, $ele_name, $attr) = @_; if ($ele_name eq 'head1') { $parser->{buffer} = ""; } elsif ($ele_name eq 'Para') { $parser->{buffer} = ""; } elsif ($ele_name eq 'C') { $parser->{in_C} = 1; } return; } sub _handle_element_end { my ($parser, $ele_name, $attr) = @_; return if $parser->{abstract}; if ($ele_name eq 'head1') { $parser->{in_section} = $parser->{buffer}; } elsif ($ele_name eq 'Para' && $parser->{in_section} eq 'NAME' ) { if ($parser->{buffer} =~ /^(?:\S+\s+)+?-+\s+(.+)$/s) { $parser->{abstract} = $1; } } elsif ($ele_name eq 'C') { delete $parser->{in_C}; } return; } sub _handle_text { my ($parser, $text) = @_; # The C<...> tags are expected to be preserved. MetaCPAN renders them. if ($parser->{in_C}) { $parser->{buffer} .= "C<$text>"; } else { $parser->{buffer} .= $text; } return; } } #pod =method abstract_from_file #pod #pod This method, I, tries to guess the #pod abstract of a given file, assuming that it's Perl code. It looks for a POD #pod C<=head1> section called "NAME" or a comment beginning with C. #pod #pod =cut sub abstract_from_file { my ($self, $file) = @_; my $e = Dist::Zilla::Util::PEA->_new; $e->parse_string_document($file->content); return $e->{abstract}; } #pod =method expand_config_package_name #pod #pod my $pkg_name = Dist::Zilla::Util->expand_config_package_name($string); #pod #pod This method, I, rewrites the given string #pod into a package name. #pod #pod Prefixes are rewritten as follows: #pod #pod =for :list #pod * C<=> becomes nothing #pod * C<@> becomes C #pod * C<%> becomes C #pod * otherwise, C is prepended #pod #pod =cut use String::RewritePrefix 0.006 rewrite => { -as => '_expand_config_package_name', prefixes => { '=' => '', '@' => 'Dist::Zilla::PluginBundle::', '%' => 'Dist::Zilla::Stash::', '' => 'Dist::Zilla::Plugin::', }, }; sub expand_config_package_name { shift; goto &_expand_config_package_name } sub homedir { $^O eq 'MSWin32' && "$]" < 5.016 ? $ENV{HOME} || $ENV{USERPROFILE} : (glob('~'))[0]; } sub _global_config_root { require Dist::Zilla::Path; return Dist::Zilla::Path::path($ENV{DZIL_GLOBAL_CONFIG_ROOT}) if $ENV{DZIL_GLOBAL_CONFIG_ROOT}; my $homedir = homedir(); Carp::croak("couldn't determine home directory") if not $homedir; return Dist::Zilla::Path::path($homedir)->child('.dzil'); } sub _assert_loaded_class_version_ok { my ($self, $pkg, $version) = @_; require CPAN::Meta::Requirements; my $req = CPAN::Meta::Requirements->from_string_hash({ $pkg => $version, }); my $have_version = $pkg->VERSION; unless ($req->accepts_module($pkg => $have_version)) { die( sprintf "%s version (%s) does not match required version: %s\n", $pkg, $have_version // 'undef', $version, ); } } 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Util - random snippets of code that Dist::Zilla wants =head1 VERSION version 6.032 =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 METHODS =head2 abstract_from_file This method, I, tries to guess the abstract of a given file, assuming that it's Perl code. It looks for a POD C<=head1> section called "NAME" or a comment beginning with C. =head2 expand_config_package_name my $pkg_name = Dist::Zilla::Util->expand_config_package_name($string); This method, I, rewrites the given string into a package name. Prefixes are rewritten as follows: =over 4 =item * C<=> becomes nothing =item * C<@> becomes C =item * C<%> becomes C =item * otherwise, C is prepended =back =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/000755 000765 000024 00000000000 14624411017 017565 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla/Types.pm000644 000765 000024 00000005272 14624411017 017777 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Types 6.032; # ABSTRACT: dzil-specific type library use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =head1 OVERVIEW #pod #pod This library provides L types for use by Dist::Zilla. These #pod types are not (yet?) for public consumption, and you should not rely on them. #pod #pod Dist::Zilla uses a number of types found in L. Maybe #pod that's what you want. #pod #pod =cut use MooseX::Types -declare => [qw( License OneZero YesNoStr ReleaseStatus Path ArrayRefOfPaths _Filename )]; use MooseX::Types::Moose qw(Str Int Defined ArrayRef); use Path::Tiny; subtype License, as class_type('Software::License'); subtype Path, as class_type('Path::Tiny'); coerce Path, from Defined, via { require Dist::Zilla::Path; Dist::Zilla::Path::path($_); }; subtype ArrayRefOfPaths, as ArrayRef[Path]; coerce ArrayRefOfPaths, from ArrayRef[Defined], via { require Dist::Zilla::Path; [ map { Dist::Zilla::Path::path($_) } @$_ ]; }; subtype OneZero, as Str, where { $_ eq '0' or $_ eq '1' }; subtype YesNoStr, as Str, where { /\A(?:y|ye|yes)\Z/i or /\A(?:n|no)\Z/i }; subtype ReleaseStatus, as Str, where { /\A(?:stable|testing|unstable)\z/ }; coerce OneZero, from YesNoStr, via { /\Ay/i ? 1 : 0 }; subtype _Filename, as Str, where { $_ !~ qr/(?:\x{0a}|\x{0b}|\x{0c}|\x{0d}|\x{85}|\x{2028}|\x{2029})/ }, message { "Filename not a Str, or contains a newline or other vertical whitespace" }; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Types - dzil-specific type library =head1 VERSION version 6.032 =head1 OVERVIEW This library provides L types for use by Dist::Zilla. These types are not (yet?) for public consumption, and you should not rely on them. Dist::Zilla uses a number of types found in L. Maybe that's what you want. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Stash/000755 000765 000024 00000000000 14624411017 017411 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla/Chrome/000755 000765 000024 00000000000 14624411017 017544 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla/App.pm000644 000765 000024 00000013303 14624411017 017405 0ustar00rjbsstaff000000 000000 package Dist::Zilla::App 6.032; # ABSTRACT: Dist::Zilla's App::Cmd use Dist::Zilla::Pragmas; use App::Cmd::Setup 0.330 -app; # better compilation error detection use Carp (); use Try::Tiny; use namespace::autoclean; $Carp::Internal{'Module::Runtime'} = 1; sub global_opt_spec { my ($self) = @_; return ( [ "verbose|v", "log additional output" ], [ "verbose-plugin|V=s@", "log additional output from some plugins only" ], [ "lib-inc|I=s@", "additional \@INC dirs", { callbacks => { 'always fine' => sub { unshift @INC, @{$_[0]}; } } } ], $self->SUPER::global_opt_spec, ); } sub _build_global_stashes { my ($self) = @_; return $self->{__global_stashes__} if $self->{__global_stashes__}; # tests shouldn't depend on the user's configuration return {} if $ENV{DZIL_TESTING}; my $stash_registry = $self->{__global_stashes__} = {}; require Dist::Zilla::Util; my $config_dir = Dist::Zilla::Util->_global_config_root; my $config_base = $config_dir->child('config'); require Dist::Zilla::MVP::Reader::Finder; require Dist::Zilla::MVP::Assembler::GlobalConfig; require Dist::Zilla::MVP::Section; my $assembler = Dist::Zilla::MVP::Assembler::GlobalConfig->new({ chrome => $self->chrome, stash_registry => $stash_registry, section_class => 'Dist::Zilla::MVP::Section', # make this DZMA default }); try { my $reader = Dist::Zilla::MVP::Reader::Finder->new({ if_none => sub { # warn <<'END_WARN'; # WARNING: No global configuration file was found in ~/.dzil -- this limits the # ability of Dist::Zilla to perform some tasks. You can run "dzil setup" to # create a simple first-pass configuration file, or you can touch the file # ~/.dzil/config.ini to suppress this message in the future. # END_WARN return $_[2]->{assembler}->sequence }, }); my $seq = $reader->read_config($config_base, { assembler => $assembler }); } catch { my $e = $_; if (eval { $e->isa('Config::MVP::Error') and $e->ident eq 'package not installed' }) { my $package = $e->package; my $bundle = $package =~ /^@/ ? ' bundle' : ''; die <<"END_DIE"; Required plugin$bundle $package isn't installed. Remedy with: cpanm $package END_DIE } else { die <<'END_DIE'; Your global configuration file couldn't be loaded. It's a file matching ~/.dzil/config.* You can try deleting the file or you might need to upgrade from pre-version 4 format. In most cases, this will just mean replacing [!release] with [%PAUSE] and deleting any [!new] stanza. You can also delete the existing file and run "dzil setup" END_DIE } }; return $stash_registry; } #pod =method zilla #pod #pod This returns the Dist::Zilla object in use by the command. If none has yet #pod been constructed, one will be by calling C<< Dist::Zilla->from_config >>. #pod #pod =cut sub chrome { my ($self) = @_; require Dist::Zilla::Chrome::Term; return $self->{__chrome__} if $self->{__chrome__}; $self->{__chrome__} = Dist::Zilla::Chrome::Term->new; my @v_plugins = $self->global_options->verbose_plugin ? grep { length } @{ $self->global_options->verbose_plugin } : (); my $verbose = $self->global_options->verbose; $self->{__chrome__}->logger->set_debug($verbose ? 1 : 0); return $self->{__chrome__}; } sub zilla { my ($self) = @_; require Dist::Zilla::Dist::Builder; return $self->{'' . __PACKAGE__}{zilla} ||= do { my @v_plugins = $self->global_options->verbose_plugin ? grep { length } @{ $self->global_options->verbose_plugin } : (); my $verbose = $self->global_options->verbose; $self->chrome->logger->set_debug($verbose ? 1 : 0); my $core_debug = grep { m/\A[-_]\z/ } @v_plugins; my $zilla; try { $zilla = Dist::Zilla::Dist::Builder->from_config({ chrome => $self->chrome, _global_stashes => $self->_build_global_stashes, }); } catch { die $_ unless try { $_->isa('Config::MVP::Error') } && $_->ident =~ /no viable config/; $self->chrome->logger->log_fatal("no configuration (e.g, dist.ini) found"); }; $zilla->logger->set_debug($verbose ? 1 : 0); VERBOSE_PLUGIN: for my $plugin_name (grep { ! m{\A[-_]\z} } @v_plugins) { my @plugins = grep { $_->plugin_name =~ /\b\Q$plugin_name\E\b/ } @{ $zilla->plugins }; $zilla->log_fatal("can't find plugins matching $plugin_name to set debug") unless @plugins; $_->logger->set_debug(1) for @plugins; } $zilla; } } 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::App - Dist::Zilla's App::Cmd =head1 VERSION version 6.032 =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 METHODS =head2 zilla This returns the Dist::Zilla object in use by the command. If none has yet been constructed, one will be by calling C<< Dist::Zilla->from_config >>. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/MintingProfile/000755 000765 000024 00000000000 14624411017 021255 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla/Path.pm000644 000765 000024 00000004544 14624411017 017570 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Path 6.032; # ABSTRACT: a helper to get Path::Tiny objects use Dist::Zilla::Pragmas; use parent 'Path::Tiny'; use Path::Tiny 0.052 qw(); # issue 427 use Scalar::Util qw( blessed ); use Sub::Exporter -setup => { exports => [ qw( path ) ], groups => { default => [ qw( path ) ] }, }; use namespace::autoclean -except => 'import'; sub path { my ($thing, @rest) = @_; if (@rest == 0 && blessed $thing) { return $thing if $thing->isa(__PACKAGE__); return bless(Path::Tiny::path("$thing"), __PACKAGE__) if $thing->isa('Path::Class::Entity') || $thing->isa('Path::Tiny'); } return bless(Path::Tiny::path($thing, @rest), __PACKAGE__); } my %warned; sub file { my ($self, @file) = @_; my ($package, $pmfile, $line) = caller; my $key = join qq{\0}, $pmfile, $line; unless ($warned{ $key }++) { Carp::carp("->file called on a Dist::Zilla::Path object; this will cease to work in Dist::Zilla v7; downstream code should be updated to use Path::Tiny API, not Path::Class"); } require Path::Class; Path::Class::dir($self)->file(@file); } sub subdir { my ($self, @subdir) = @_; Carp::carp("->subdir called on a Dist::Zilla::Path object; this will cease to work in Dist::Zilla v7; downstream code should be updated to use Path::Tiny API, not Path::Class"); require Path::Class; Path::Class::dir($self)->subdir(@subdir); } 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Path - a helper to get Path::Tiny objects =head1 VERSION version 6.032 =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/PluginBundle/000755 000765 000024 00000000000 14624411017 020717 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla/PluginBundle/FakeClassic.pm000644 000765 000024 00000003310 14624411017 023422 0ustar00rjbsstaff000000 000000 package Dist::Zilla::PluginBundle::FakeClassic 6.032; # ABSTRACT: build something more or less like a "classic" CPAN dist use Moose; extends 'Dist::Zilla::PluginBundle::Classic'; use Dist::Zilla::Pragmas; use namespace::autoclean; around bundle_config => sub { my ($orig, $self, $arg) = @_; my @config = $self->$orig($arg); for my $i (0 .. $#config) { if ($config[ $i ][1] eq 'Dist::Zilla::Plugin::UploadToCPAN') { require Dist::Zilla::Plugin::FakeRelease; $config[ $i ] = [ "$arg->{name}/FakeRelease", 'Dist::Zilla::Plugin::FakeRelease', $config[ $i ][2] ]; } } return @config; }; __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::PluginBundle::FakeClassic - build something more or less like a "classic" CPAN dist =head1 VERSION version 6.032 =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/PluginBundle/Basic.pm000644 000765 000024 00000007516 14624411017 022307 0ustar00rjbsstaff000000 000000 package Dist::Zilla::PluginBundle::Basic 6.032; # ABSTRACT: the basic plugins to maintain and release CPAN dists use Moose; with 'Dist::Zilla::Role::PluginBundle::Easy'; use Dist::Zilla::Pragmas; use namespace::autoclean; sub configure { my ($self) = @_; $self->add_plugins(qw( GatherDir PruneCruft ManifestSkip MetaYAML License Readme ExtraTests ExecDir ShareDir MakeMaker Manifest TestRelease ConfirmRelease UploadToCPAN )); } __PACKAGE__->meta->make_immutable; 1; #pod =head1 DESCRIPTION #pod #pod This plugin is meant to be a basic "first step" bundle for using Dist::Zilla. #pod It won't munge any of your code, but will generate a F and allows #pod easy, reliable releasing of distributions. #pod #pod It includes the following plugins with their default configuration: #pod #pod =for :list #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod #pod =head1 SEE ALSO #pod #pod Core Dist::Zilla plugins: L<@Filter|Dist::Zilla::PluginBundle::Filter>. #pod #pod Dist::Zilla roles: #pod L, #pod L. #pod #pod =cut __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::PluginBundle::Basic - the basic plugins to maintain and release CPAN dists =head1 VERSION version 6.032 =head1 DESCRIPTION This plugin is meant to be a basic "first step" bundle for using Dist::Zilla. It won't munge any of your code, but will generate a F and allows easy, reliable releasing of distributions. It includes the following plugins with their default configuration: =over 4 =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =back =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 SEE ALSO Core Dist::Zilla plugins: L<@Filter|Dist::Zilla::PluginBundle::Filter>. Dist::Zilla roles: L, L. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/PluginBundle/Filter.pm000644 000765 000024 00000011041 14624411017 022477 0ustar00rjbsstaff000000 000000 package Dist::Zilla::PluginBundle::Filter 6.032; # ABSTRACT: use another bundle, with some plugins removed use Moose; with 'Dist::Zilla::Role::PluginBundle'; use Dist::Zilla::Pragmas; use namespace::autoclean; use List::Util 1.33 qw(any); use Module::Runtime qw(use_module); use Dist::Zilla::Util; #pod =head1 SYNOPSIS #pod #pod In your F: #pod #pod [@Filter] #pod -bundle = @Basic #pod -version = 5.031 #pod -remove = ShareDir #pod -remove = UploadToCPAN #pod option = for_basic #pod #pod =head1 DESCRIPTION #pod #pod This plugin bundle actually wraps and modifies another plugin bundle. It #pod includes all the configuration for the bundle named in the C<-bundle> attribute, #pod but removes all the entries whose package is given in the C<-remove> attributes. #pod #pod A minimum required version of the bundle can be specified with the C<-version> #pod attribute. #pod #pod Options not prefixed with C<-> will be passed to the bundle to be filtered. #pod #pod B When you filter a bundle you B include it directly in #pod your C file. This plugin will take care of including it for you. #pod #pod =head1 SEE ALSO #pod #pod Core Dist::Zilla plugins: L<@Basic|Dist::Zilla::PluginBundle::Basic>. #pod #pod Dist::Zilla roles: L. #pod #pod =cut sub mvp_multivalue_args { qw(remove -remove) } sub bundle_config { my ($self, $section) = @_; my $class = (ref $self) || $self; my $config = {}; my $has_filter_args = any { /^-/ } keys %{ $section->{payload} }; for my $key (keys %{ $section->{payload} }) { my $val = $section->{payload}->{$key}; my $target = $has_filter_args && ($key !~ /^-/) ? 'bundle' : 'filter'; $key =~ s/^-// if $target eq 'filter'; $config->{$target}->{$key} = $val; } Carp::croak("no bundle given for bundle filter") unless my $bundle = $config->{filter}->{bundle}; my $pkg = Dist::Zilla::Util->expand_config_package_name($bundle); my $version = $config->{filter}->{version}; unless (eval { &use_module($pkg, $version ? $version : ()); 1 }) { # XXX Naughty! -- rjbs, 2013-07-23 Config::MVP::Section->missing_package($pkg, $bundle); } my @plugins = $pkg->bundle_config({ name => $section->{name}, # not 100% sure about this -- rjbs, 2010-03-06 package => $pkg, payload => $config->{bundle} || {}, }); return @plugins unless my $remove = $config->{filter}->{remove}; for my $i (reverse 0 .. $#plugins) { splice @plugins, $i, 1 if any(sub { $plugins[$i][1] eq Dist::Zilla::Util->expand_config_package_name($_) }, @$remove); } return @plugins; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::PluginBundle::Filter - use another bundle, with some plugins removed =head1 VERSION version 6.032 =head1 SYNOPSIS In your F: [@Filter] -bundle = @Basic -version = 5.031 -remove = ShareDir -remove = UploadToCPAN option = for_basic =head1 DESCRIPTION This plugin bundle actually wraps and modifies another plugin bundle. It includes all the configuration for the bundle named in the C<-bundle> attribute, but removes all the entries whose package is given in the C<-remove> attributes. A minimum required version of the bundle can be specified with the C<-version> attribute. Options not prefixed with C<-> will be passed to the bundle to be filtered. B When you filter a bundle you B include it directly in your C file. This plugin will take care of including it for you. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 SEE ALSO Core Dist::Zilla plugins: L<@Basic|Dist::Zilla::PluginBundle::Basic>. Dist::Zilla roles: L. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/PluginBundle/Classic.pm000644 000765 000024 00000010471 14624411017 022641 0ustar00rjbsstaff000000 000000 package Dist::Zilla::PluginBundle::Classic 6.032; # ABSTRACT: the classic (old) default configuration for Dist::Zilla use Moose; with 'Dist::Zilla::Role::PluginBundle::Easy'; use Dist::Zilla::Pragmas; use namespace::autoclean; sub configure { my ($self) = @_; $self->add_plugins(qw( GatherDir PruneCruft ManifestSkip MetaYAML License Readme PkgVersion PodVersion PodCoverageTests PodSyntaxTests ExtraTests ExecDir ShareDir MakeMaker Manifest ConfirmRelease UploadToCPAN )); } __PACKAGE__->meta->make_immutable; 1; #pod =head1 DESCRIPTION #pod #pod This bundle is more or less the original configuration bundled with #pod Dist::Zilla. More than likely, you'd rather be using #pod L<@Basic|Dist::Zilla::PluginBundle::Basic> or a more complex bundle. This one #pod will muck around with your code by adding C<$VERSION> declarations and will #pod mess with you Pod by adding a C<=head1 VERSION> section, but it won't get you a #pod lot of more useful features like autoversioning, autoprereqs, or Pod::Weaver. #pod #pod It includes the following plugins with their default configuration: #pod #pod =for :list #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod * L #pod #pod =head1 SEE ALSO #pod #pod L<@Basic|Dist::Zilla::PluginBundle::Basic> #pod #pod =cut __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::PluginBundle::Classic - the classic (old) default configuration for Dist::Zilla =head1 VERSION version 6.032 =head1 DESCRIPTION This bundle is more or less the original configuration bundled with Dist::Zilla. More than likely, you'd rather be using L<@Basic|Dist::Zilla::PluginBundle::Basic> or a more complex bundle. This one will muck around with your code by adding C<$VERSION> declarations and will mess with you Pod by adding a C<=head1 VERSION> section, but it won't get you a lot of more useful features like autoversioning, autoprereqs, or Pod::Weaver. It includes the following plugins with their default configuration: =over 4 =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =back =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 SEE ALSO L<@Basic|Dist::Zilla::PluginBundle::Basic> =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/MintingProfile/Default.pm000644 000765 000024 00000004147 14624411017 023205 0ustar00rjbsstaff000000 000000 package Dist::Zilla::MintingProfile::Default 6.032; # ABSTRACT: Default minting profile provider use Moose; with 'Dist::Zilla::Role::MintingProfile::ShareDir'; use Dist::Zilla::Pragmas; use namespace::autoclean; use Dist::Zilla::Util; #pod =head1 DESCRIPTION #pod #pod Default minting profile provider. #pod #pod This provider looks first in the F<~/.dzil/profiles/$profile_name> directory, #pod if not found it looks among the default profiles shipped with Dist::Zilla. #pod #pod =cut around profile_dir => sub { my ($orig, $self, $profile_name) = @_; $profile_name ||= 'default'; # shouldn't look in user's config when testing if (!$ENV{DZIL_TESTING}) { my $profile_dir = Dist::Zilla::Util->_global_config_root ->child('profiles', $profile_name); return $profile_dir if -d $profile_dir; } return $self->$orig($profile_name); }; __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::MintingProfile::Default - Default minting profile provider =head1 VERSION version 6.032 =head1 DESCRIPTION Default minting profile provider. This provider looks first in the F<~/.dzil/profiles/$profile_name> directory, if not found it looks among the default profiles shipped with Dist::Zilla. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Chrome/Term.pm000644 000765 000024 00000013153 14624411017 021014 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Chrome::Term 6.032; # ABSTRACT: chrome used for terminal-based interaction use Moose; use Dist::Zilla::Pragmas; use Digest::MD5 qw(md5); use Dist::Zilla::Types qw(OneZero); use Encode (); use Log::Dispatchouli 1.102220; use namespace::autoclean; #pod =head1 OVERVIEW #pod #pod This class provides a L implementation for use in a #pod terminal environment. It's the default chrome used by L. #pod #pod =cut sub _str_color { my ($str) = @_; state %color_for; # I know, I know, this is ludicrous, but guess what? It's my Sunday and I # can spend it how I want. state $max = ($ENV{COLORTERM}//'') eq 'truecolor' ? 255 : 5; state $min = $max == 255 ? 384 : 5; state $inc = $max == 255 ? 16 : 1; state $fmt = $max == 255 ? 'r%ug%ub%u' : 'rgb%u%u%u'; return $color_for{$str} //= do { my @rgb = map { $_ % $max } unpack 'CCC', md5($str); my $i = ($rgb[0] + $rgb[1] + $rgb[2]) % 3; while (1) { last if $rgb[0] + $rgb[1] + $rgb[2] >= $min; my $next = $i++ % 3; $rgb[$next] = abs($max - $rgb[$next]); } sprintf $fmt, @rgb; } } has logger => ( is => 'ro', isa => 'Log::Dispatchouli', init_arg => undef, writer => '_set_logger', lazy => 1, builder => '_build_logger', ); sub _build_logger { my $self = shift; my $enc = $self->term_enc; if ($enc && Encode::resolve_alias($enc)) { my $layer = sprintf(":encoding(%s)", $enc); binmode( STDOUT, $layer ); binmode( STDERR, $layer ); } my $logger = Log::Dispatchouli->new({ ident => 'Dist::Zilla', to_stdout => 1, log_pid => 0, to_self => ($ENV{DZIL_TESTING} ? 1 : 0), quiet_fatal => 'stdout', }); my $use_color = $ENV{DZIL_COLOR} // -t *STDOUT; if ($use_color) { my $stdout = $logger->{dispatcher}->output('stdout'); $stdout->add_callback(sub { require Term::ANSIColor; my $message = {@_}->{message}; return $message unless $message =~ s/\A\[([^\]]+)] //; my $prefix = $1; return sprintf "[%s] %s", Term::ANSIColor::colored([ _str_color($prefix) ], $prefix), $message; }); } return $logger; } has term_ui => ( is => 'ro', isa => 'Object', lazy => 1, default => sub { require Term::ReadLine; require Term::UI; Term::ReadLine->new('dzil') }, ); has term_enc => ( is => 'ro', lazy => 1, default => sub { require Term::Encoding; return Term::Encoding::get_encoding(); }, ); sub prompt_str { my ($self, $prompt, $arg) = @_; $arg ||= {}; my $default = $arg->{default}; my $check = $arg->{check}; require Encode; my $term_enc = $self->term_enc; my $encode = $term_enc ? sub { Encode::encode($term_enc, shift, Encode::FB_CROAK()) } : sub { shift }; my $decode = $term_enc ? sub { Encode::decode($term_enc, shift, Encode::FB_CROAK()) } : sub { shift }; if ($arg->{noecho}) { require Term::ReadKey; Term::ReadKey::ReadMode('noecho'); } my $input_bytes = $self->term_ui->get_reply( prompt => $encode->($prompt), allow => $check || sub { length $_[0] }, (defined $default ? (default => $encode->($default)) : () ), ); if ($arg->{noecho}) { Term::ReadKey::ReadMode('normal'); # The \n ending user input disappears under noecho; this ensures # the next output ends up on the next line. print "\n"; } my $input = $decode->($input_bytes); chomp $input; return $input; } sub prompt_yn { my ($self, $prompt, $arg) = @_; $arg ||= {}; my $default = $arg->{default}; if (! $self->_isa_tty) { if (defined $default) { return OneZero->coerce($default); } $self->logger->log_fatal( "want interactive input, but terminal doesn't appear interactive" ); } my $input = $self->term_ui->ask_yn( prompt => $prompt, (defined $default ? (default => OneZero->coerce($default)) : ()), ); return $input; } sub _isa_tty { my $isa_tty = -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT)); return $isa_tty; } sub prompt_any_key { my ($self, $prompt) = @_; $prompt ||= 'press any key to continue'; my $isa_tty = $self->_isa_tty; if ($isa_tty) { local $| = 1; print $prompt; require Term::ReadKey; Term::ReadKey::ReadMode('cbreak'); Term::ReadKey::ReadKey(0); Term::ReadKey::ReadMode('normal'); print "\n"; } } with 'Dist::Zilla::Role::Chrome'; __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Chrome::Term - chrome used for terminal-based interaction =head1 VERSION version 6.032 =head1 OVERVIEW This class provides a L implementation for use in a terminal environment. It's the default chrome used by L. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Chrome/Test.pm000644 000765 000024 00000007353 14624411017 021031 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Chrome::Test 6.032; # ABSTRACT: the chrome used by Dist::Zilla::Tester use Moose; use Dist::Zilla::Pragmas; use MooseX::Types::Moose qw(ArrayRef HashRef Str); use Dist::Zilla::Types qw(OneZero); use Log::Dispatchouli 1.102220; use namespace::autoclean; has logger => ( is => 'ro', default => sub { Log::Dispatchouli->new({ ident => 'Dist::Zilla::Tester', log_pid => 0, to_self => 1, }); } ); #pod =attr response_for #pod #pod The response_for attribute (which exists only in the Test chrome) is a #pod hashref that lets you specify the answer to questions asked by #pod C or C. The key is the prompt string. If the #pod value is a string, it is returned every time that question is asked. #pod If the value is an arrayref, the first element is shifted off and #pod returned every time the question is asked. If the arrayref is empty #pod (or the prompt is not listed in the hash), the default answer (if any) #pod is returned. #pod #pod Since you can't pass arguments to the Chrome constructor, response_for #pod is initialized to an empty hash, and you can add entries after #pod construction with the C method: #pod #pod $chrome->set_response_for($prompt => $response); #pod #pod =cut has response_for => ( isa => HashRef[ ArrayRef | Str ], traits => [ 'Hash' ], default => sub { {} }, handles => { response_for => 'get', set_response_for => 'set', }, ); sub prompt_str { my ($self, $prompt, $arg) = @_; $arg ||= {}; my $response = $self->response_for($prompt); $response = shift @$response if ref $response; $response = $arg->{default} unless defined $response; $self->logger->log_fatal("no response for test prompt '$prompt'") unless defined $response; return $response; } sub prompt_yn { my $self = shift; return OneZero->coerce( $self->prompt_str(@_) ); } sub prompt_any_key { return } with 'Dist::Zilla::Role::Chrome'; __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Chrome::Test - the chrome used by Dist::Zilla::Tester =head1 VERSION version 6.032 =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 response_for The response_for attribute (which exists only in the Test chrome) is a hashref that lets you specify the answer to questions asked by C or C. The key is the prompt string. If the value is a string, it is returned every time that question is asked. If the value is an arrayref, the first element is shifted off and returned every time the question is asked. If the arrayref is empty (or the prompt is not listed in the hash), the default answer (if any) is returned. Since you can't pass arguments to the Chrome constructor, response_for is initialized to an empty hash, and you can add entries after construction with the C method: $chrome->set_response_for($prompt => $response); =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Stash/User.pm000644 000765 000024 00000002673 14624411017 020675 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Stash::User 6.032; # ABSTRACT: a stash of user name and email use Moose; use Dist::Zilla::Pragmas; use namespace::autoclean; has name => ( is => 'ro', isa => 'Str', required => 1, ); has email => ( is => 'ro', isa => 'Str', required => 1, ); sub authors { my ($self) = @_; return [ sprintf "%s <%s>", $self->name, $self->email ]; } with 'Dist::Zilla::Role::Stash::Authors'; __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Stash::User - a stash of user name and email =head1 VERSION version 6.032 =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Stash/Mint.pm000644 000765 000024 00000002655 14624411017 020666 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Stash::Mint 6.032; # ABSTRACT: a stash of your default minting provider/profile use Moose; with 'Dist::Zilla::Role::Stash'; use Dist::Zilla::Pragmas; use namespace::autoclean; has provider => ( is => 'ro', isa => 'Str', required => 0, default => 'Default', ); has profile => ( is => 'ro', isa => 'Str', required => 0, default => 'default', ); __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Stash::Mint - a stash of your default minting provider/profile =head1 VERSION version 6.032 =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Stash/Rights.pm000644 000765 000024 00000002670 14624411017 021214 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Stash::Rights 6.032; # ABSTRACT: a stash of your default licensing terms use Moose; with 'Dist::Zilla::Role::Stash'; use Dist::Zilla::Pragmas; use namespace::autoclean; has license_class => ( is => 'ro', isa => 'Str', required => 1, ); has copyright_holder => ( is => 'ro', isa => 'Str', required => 1, ); has copyright_year => ( is => 'ro', isa => 'Int', ); __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Stash::Rights - a stash of your default licensing terms =head1 VERSION version 6.032 =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Stash/PAUSE.pm000644 000765 000024 00000003273 14624411017 020631 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Stash::PAUSE 6.032; # ABSTRACT: a stash of your PAUSE credentials use Moose; use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =head1 OVERVIEW #pod #pod The PAUSE stash is a L stash generally #pod used for uploading to PAUSE. #pod #pod =cut sub mvp_aliases { return { user => 'username' }; } has username => ( is => 'ro', isa => 'Str', required => 1, ); has password => ( is => 'ro', isa => 'Str', required => 1, ); with 'Dist::Zilla::Role::Stash::Login'; __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Stash::PAUSE - a stash of your PAUSE credentials =head1 VERSION version 6.032 =head1 OVERVIEW The PAUSE stash is a L stash generally used for uploading to PAUSE. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/PruneFiles.pm000644 000765 000024 00000010355 14624411017 022203 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::PruneFiles 6.032; # ABSTRACT: prune arbitrary files from the dist use Moose; with 'Dist::Zilla::Role::FilePruner'; use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =head1 SYNOPSIS #pod #pod This plugin allows you to explicitly prune some files from your #pod distribution. You can either specify the exact set of files (with the #pod "filenames" parameter) or provide the regular expressions to #pod check (using "match"). #pod #pod This is useful if another plugin (maybe a FileGatherer) adds a #pod bunch of files, and you only want a subset of them. #pod #pod In your F: #pod #pod [PruneFiles] #pod filename = xt/release/pod-coverage.t ; pod coverage tests are for jerks #pod filename = todo-list.txt ; keep our secret plans to ourselves #pod #pod match = ^test_data/ #pod match = ^test.cvs$ #pod #pod =cut sub mvp_multivalue_args { qw(filenames matches) } sub mvp_aliases { return { filename => 'filenames', match => 'matches' } } #pod =attr filenames #pod #pod This is an arrayref of filenames to be pruned from the distribution. #pod #pod =cut has filenames => ( is => 'ro', isa => 'ArrayRef', default => sub { [] }, ); #pod =attr matches #pod #pod This is an arrayref of regular expressions and files matching any of them, #pod will be pruned from the distribution. #pod #pod =cut has matches => ( is => 'ro', isa => 'ArrayRef', default => sub { [] }, ); sub prune_files { my ($self) = @_; # never match (at least the filename characters) my $matches_regex = qr/\000/; $matches_regex = qr/$matches_regex|$_/ for (@{ $self->matches }); # \A\Q$_\E should also handle the `eq` check $matches_regex = qr/$matches_regex|\A\Q$_\E/ for (@{ $self->filenames }); # Copy list (break reference) so we can mutate. for my $file ((), @{ $self->zilla->files }) { next unless $file->name =~ $matches_regex; $self->log_debug([ 'pruning %s', $file->name ]); $self->zilla->prune_file($file); } return; } __PACKAGE__->meta->make_immutable; 1; #pod =head1 SEE ALSO #pod #pod Dist::Zilla plugins: #pod L, #pod L, #pod L. #pod #pod =cut __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::PruneFiles - prune arbitrary files from the dist =head1 VERSION version 6.032 =head1 SYNOPSIS This plugin allows you to explicitly prune some files from your distribution. You can either specify the exact set of files (with the "filenames" parameter) or provide the regular expressions to check (using "match"). This is useful if another plugin (maybe a FileGatherer) adds a bunch of files, and you only want a subset of them. In your F: [PruneFiles] filename = xt/release/pod-coverage.t ; pod coverage tests are for jerks filename = todo-list.txt ; keep our secret plans to ourselves match = ^test_data/ match = ^test.cvs$ =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 filenames This is an arrayref of filenames to be pruned from the distribution. =head2 matches This is an arrayref of regular expressions and files matching any of them, will be pruned from the distribution. =head1 SEE ALSO Dist::Zilla plugins: L, L, L. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/ModuleShareDirs.pm000644 000765 000024 00000004602 14624411017 023157 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::ModuleShareDirs 6.032; # ABSTRACT: install a directory's contents as module-based "ShareDir" content use Moose; use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =head1 SYNOPSIS #pod #pod In your F: #pod #pod [ModuleShareDirs] #pod Foo::Bar = shares/foo_bar #pod Foo::Baz = shares/foo_baz #pod #pod =cut has _module_map => ( is => 'ro', isa => 'HashRef', default => sub { {} }, ); sub find_files { my ($self) = @_; my $modmap = $self->_module_map; my @files; for my $mod ( keys %$modmap ) { my $dir = $modmap->{$mod}; my @mod_files = grep { index($_->name, "$dir/") == 0 } @{ $self->zilla->files }; push @files, @mod_files; } return \@files; } sub share_dir_map { my ($self) = @_; my $modmap = $self->_module_map; return unless keys %$modmap; return { module => $modmap }; } around BUILDARGS => sub { my $orig = shift; my ($class, @arg) = @_; my $args = $class->$orig(@arg); my %copy = %{ $args }; my $zilla = delete $copy{zilla}; my $name = delete $copy{plugin_name}; return { zilla => $zilla, plugin_name => $name, _module_map => \%copy, } }; with 'Dist::Zilla::Role::ShareDir'; __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::ModuleShareDirs - install a directory's contents as module-based "ShareDir" content =head1 VERSION version 6.032 =head1 SYNOPSIS In your F: [ModuleShareDirs] Foo::Bar = shares/foo_bar Foo::Baz = shares/foo_baz =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/PruneCruft.pm000644 000765 000024 00000010547 14624411017 022227 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::PruneCruft 6.032; # ABSTRACT: prune stuff that you probably don't mean to include use Moose; use Moose::Util::TypeConstraints; with 'Dist::Zilla::Role::FilePruner'; use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =head1 SYNOPSIS #pod #pod This plugin tries to compensate for the stupid crap that turns up in your #pod working copy, removing it before it gets into your dist and screws everything #pod up. #pod #pod In your F: #pod #pod [PruneCruft] #pod #pod If you would like to exclude certain exclusions, use the C option (it #pod can be specified multiple times): #pod #pod [PruneCruft] #pod except = \.gitignore #pod except = t/.*/\.keep$ #pod #pod This plugin is included in the L<@Basic|Dist::Zilla::PluginBundle::Basic> #pod bundle. #pod #pod =head1 SEE ALSO #pod #pod Dist::Zilla plugins: #pod L<@Basic|Dist::Zilla::PluginBundle::Basic>, #pod L, #pod L. #pod #pod =cut { my $type = subtype as 'ArrayRef[RegexpRef]'; coerce $type, from 'ArrayRef[Str]', via { [map { qr/$_/ } @$_] }; has except => ( is => 'ro', isa => $type, coerce => 1, default => sub { [] }, ); sub mvp_multivalue_args { qw(except) } } sub _dont_exclude_file { my ($self, $file) = @_; for my $exception (@{ $self->except }) { return 1 if $file->name =~ $exception; } return; } sub exclude_file { my ($self, $file) = @_; return 0 if $self->_dont_exclude_file($file); return 1 if index($file->name, $self->zilla->name . '-') == 0; return 1 if $file->name =~ /\A\./; return 1 if $file->name =~ /\A(?:Build|Makefile)\z/; return 1 if $file->name eq 'Makefile.old'; return 1 if $file->name =~ /\Ablib/; return 1 if $file->name =~ /\.(?:o|bs)$/; return 1 if $file->name =~ /\A_Inline/; return 1 if $file->name eq 'MYMETA.yml'; return 1 if $file->name eq 'MYMETA.json'; return 1 if $file->name eq 'pm_to_blib'; return 1 if substr($file->name, 0, 6) eq '_eumm/'; # Avoid bundling fatlib/ dir created by App::FatPacker # https://github.com/andk/pause/pull/65 return 1 if substr($file->name, 0, 7) eq 'fatlib/'; return 1 if substr($file->name, 0, 4) eq 'tmp/'; if (my $file = $file->name =~ s/\.c$//r) { for my $other (@{ $self->zilla->files }) { return 1 if $other->name eq "${file}.xs"; } } return; } sub prune_files { my ($self) = @_; # Copy list (break reference) so we can mutate. for my $file ((), @{ $self->zilla->files }) { next unless $self->exclude_file($file); $self->log_debug([ 'pruning %s', $file->name ]); $self->zilla->prune_file($file); } return; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::PruneCruft - prune stuff that you probably don't mean to include =head1 VERSION version 6.032 =head1 SYNOPSIS This plugin tries to compensate for the stupid crap that turns up in your working copy, removing it before it gets into your dist and screws everything up. In your F: [PruneCruft] If you would like to exclude certain exclusions, use the C option (it can be specified multiple times): [PruneCruft] except = \.gitignore except = t/.*/\.keep$ This plugin is included in the L<@Basic|Dist::Zilla::PluginBundle::Basic> bundle. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 SEE ALSO Dist::Zilla plugins: L<@Basic|Dist::Zilla::PluginBundle::Basic>, L, L. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/CPANFile.pm000644 000765 000024 00000011335 14624411017 021447 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::CPANFile 6.032; # ABSTRACT: produce a cpanfile prereqs file use Moose; with 'Dist::Zilla::Role::FileGatherer'; use Dist::Zilla::Pragmas; use namespace::autoclean; use Dist::Zilla::File::FromCode; #pod =head1 SYNOPSIS #pod #pod # dist.ini #pod [CPANFile] #pod #pod =head1 DESCRIPTION #pod #pod This plugin will add a F file to the distribution. #pod #pod =attr filename #pod #pod If given, parameter allows you to specify an alternate name for the generated #pod file. It defaults, of course, to F. #pod #pod # dist.ini #pod [CPANFile] #pod filename = dzil-generated-cpanfile #pod #pod =attr comment #pod #pod If given, override the default C header comment with your own. The default comment #pod explains that this file was generated by Dist::Zilla and tells users to edit the dist.ini #pod file to change prereqs #pod #pod # dist.ini #pod [CPANFile] #pod comment = This file is generated by Dist::Zilla #pod comment = Prereqs are detected automatically. You do not need to edit this file #pod #pod =head1 SEE ALSO #pod #pod =for :list #pod * L #pod * L #pod * L #pod #pod =cut has filename => ( is => 'ro', isa => 'Str', default => 'cpanfile', ); sub mvp_multivalue_args { qw( comment ) } has comment => ( is => 'ro', isa => 'ArrayRef[Str]', default => sub { [ qq{This file is generated by Dist::Zilla::Plugin::CPANFile v} . ( $Dist::Zilla::Plugin::CPANFile::VERSION // '' ), qq{Do not edit this file directly. To change prereqs, edit the `dist.ini` file.}, ] } ); sub _hunkify_hunky_hunk_hunks { my ($self, $indent, $type, $req) = @_; my $str = ''; for my $module (sort $req->required_modules) { my $vstr = $req->requirements_for_module($module); $str .= qq{$type "$module" => "$vstr";\n}; } $str =~ s/^/' ' x $indent/egm; return $str; } sub gather_files { my ($self, $arg) = @_; my $zilla = $self->zilla; my $file = Dist::Zilla::File::FromCode->new({ name => $self->filename, code => sub { my $prereqs = $zilla->prereqs; my @types = qw(requires recommends suggests conflicts); my @phases = qw(runtime build test configure develop); my $str = join "\n", ( map { "# $_" } @{ $self->comment } ), '', ''; for my $phase (@phases) { for my $type (@types) { my $req = $prereqs->requirements_for($phase, $type); next unless $req->required_modules; $str .= qq[\non '$phase' => sub {\n] unless $phase eq 'runtime'; $str .= $self->_hunkify_hunky_hunk_hunks( ($phase eq 'runtime' ? 0 : 1), $type, $req, ); $str .= qq[};\n] unless $phase eq 'runtime'; } } return $str; }, }); $self->add_file($file); return; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::CPANFile - produce a cpanfile prereqs file =head1 VERSION version 6.032 =head1 SYNOPSIS # dist.ini [CPANFile] =head1 DESCRIPTION This plugin will add a F file to the distribution. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 filename If given, parameter allows you to specify an alternate name for the generated file. It defaults, of course, to F. # dist.ini [CPANFile] filename = dzil-generated-cpanfile =head2 comment If given, override the default C header comment with your own. The default comment explains that this file was generated by Dist::Zilla and tells users to edit the dist.ini file to change prereqs # dist.ini [CPANFile] comment = This file is generated by Dist::Zilla comment = Prereqs are detected automatically. You do not need to edit this file =head1 SEE ALSO =over 4 =item * L =item * L =item * L =back =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/MetaTests.pm000644 000765 000024 00000005743 14624411017 022045 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::MetaTests 6.032; # ABSTRACT: common extra tests for META.yml use Moose; extends 'Dist::Zilla::Plugin::InlineFiles'; with 'Dist::Zilla::Role::PrereqSource'; use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =head1 DESCRIPTION #pod #pod This is an extension of L, providing the #pod following files: #pod #pod xt/author/meta-yaml.t - a standard Test::CPAN::Meta test #pod #pod L will be added as a C dependency (which #pod can be installed via C<< dzil listdeps --author | cpanm >>). #pod #pod =head1 SEE ALSO #pod #pod Core Dist::Zilla plugins: #pod L, #pod L, #pod L, #pod L, #pod L. #pod #pod =cut # Register the author test prereq as a "develop requires" # so it will be listed in "dzil listdeps --author" sub register_prereqs { my ($self) = @_; $self->zilla->register_prereqs( { phase => 'develop', type => 'requires', }, 'Test::CPAN::Meta' => 0, ); } __PACKAGE__->meta->make_immutable; 1; =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::MetaTests - common extra tests for META.yml =head1 VERSION version 6.032 =head1 DESCRIPTION This is an extension of L, providing the following files: xt/author/meta-yaml.t - a standard Test::CPAN::Meta test L will be added as a C dependency (which can be installed via C<< dzil listdeps --author | cpanm >>). =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 SEE ALSO Core Dist::Zilla plugins: L, L, L, L, L. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut __DATA__ ___[ xt/author/distmeta.t ]___ #!perl # This file was automatically generated by Dist::Zilla::Plugin::MetaTests. use strict; use warnings; use Test::CPAN::Meta; meta_yaml_ok(); Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/PodVersion.pm000644 000765 000024 00000007704 14624411017 022223 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::PodVersion 6.032; # ABSTRACT: add a VERSION head1 to each Perl document use Moose; with( 'Dist::Zilla::Role::FileMunger', 'Dist::Zilla::Role::FileFinderUser' => { default_finders => [ ':InstallModules', ':ExecFiles' ], }, ); use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =head1 DESCRIPTION #pod #pod This plugin adds a C<=head1 VERSION> section to most perl files in the #pod distribution, indicating the version of the dist being built. This section is #pod added after C<=head1 NAME>. If there is no such section, the version section #pod will not be added. #pod #pod Note that this plugin is not useful if you are using the #pod L<[PodWeaver]|Dist::Zilla::Plugin::PodWeaver> plugin, as it also adds a #pod C<=head1 VERSION> section (via the L<[Version]|Pod::Weaver::Section::Version> #pod section). #pod #pod =cut sub munge_files { my ($self) = @_; $self->munge_file($_) for @{ $self->found_files }; } sub munge_file { my ($self, $file) = @_; return $self->munge_pod($file); } sub munge_pod { my ($self, $file) = @_; my @content = split /\n/, $file->content; require List::Util; List::Util->VERSION('1.33'); if (List::Util::any(sub { $_ =~ /^=head1 VERSION\b/ }, @content)) { $self->log($file->name . ' already has a VERSION section in POD'); return; } for (0 .. $#content) { next until $content[$_] =~ /^=head1 NAME/; $_++; # move past the =head1 line itself $_++ while $content[$_] =~ /^\s*$/; $_++ while $content[$_] !~ /^\s*$/; # move past the abstract $_++ while $content[$_] =~ /^\s*$/; splice @content, $_ - 1, 0, ( q{}, "=head1 VERSION", q{}, "version " . $self->zilla->version . q{}, ); $self->log_debug([ 'adding VERSION Pod section to %s', $file->name ]); my $content = join "\n", @content; $content .= "\n" if length $content; $file->content($content); return; } $self->log([ "couldn't find '=head1 NAME' in %s, not adding '=head1 VERSION'", $file->name, ]); } __PACKAGE__->meta->make_immutable; 1; #pod =head1 SEE ALSO #pod #pod Core Dist::Zilla plugins: #pod L, #pod L, #pod L. #pod #pod =cut __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::PodVersion - add a VERSION head1 to each Perl document =head1 VERSION version 6.032 =head1 DESCRIPTION This plugin adds a C<=head1 VERSION> section to most perl files in the distribution, indicating the version of the dist being built. This section is added after C<=head1 NAME>. If there is no such section, the version section will not be added. Note that this plugin is not useful if you are using the L<[PodWeaver]|Dist::Zilla::Plugin::PodWeaver> plugin, as it also adds a C<=head1 VERSION> section (via the L<[Version]|Pod::Weaver::Section::Version> section). =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 SEE ALSO Core Dist::Zilla plugins: L, L, L. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/GatherFile.pm000644 000765 000024 00000012521 14624411017 022136 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::GatherFile 6.032; # ABSTRACT: gather individual file(s) use Moose; use Dist::Zilla::Types qw(Path ArrayRefOfPaths); with 'Dist::Zilla::Role::FileGatherer'; use Dist::Zilla::Pragmas; use MooseX::Types::Moose 'ArrayRef'; use Path::Tiny; use Dist::Zilla::File::OnDisk; use Dist::Zilla::Util; use namespace::autoclean; #pod =head1 SYNOPSIS #pod #pod [GatherFile] #pod filename = examples/file.txt #pod #pod =head1 DESCRIPTION #pod #pod This is a very, very simple L #pod plugin. It adds all the files referenced by the C option that are #pod found in the directory named in the L attribute. If the root begins #pod with a tilde, the tilde is passed through C first. #pod #pod Since normally every distribution will use a GatherDir plugin, you would only #pod need to use the GatherFile plugin if the file was already being excluded (e.g. #pod from an C configuration). #pod #pod =cut #pod =attr root #pod #pod This is the directory in which to look for files. If not given, it defaults to #pod the dist root -- generally, the place where your F or other #pod configuration file is located. #pod #pod =cut has root => ( is => 'ro', isa => Path, lazy => 1, coerce => 1, required => 1, default => sub { shift->zilla->root }, ); #pod =attr prefix #pod #pod This parameter can be set to place the gathered files under a particular #pod directory. See the L above for an example. #pod #pod =cut has prefix => ( is => 'ro', isa => 'Str', default => '', ); #pod =attr filename #pod #pod The name of the file to gather, relative to the C. #pod Can be used more than once. #pod #pod =cut has filenames => ( is => 'ro', isa => ArrayRefOfPaths, lazy => 1, coerce => 1, default => sub { [] }, ); sub mvp_aliases { +{ filename => 'filenames' } } sub mvp_multivalue_args { qw(filenames) } around dump_config => sub { my $orig = shift; my $self = shift; my $config = $self->$orig; $config->{+__PACKAGE__} = { prefix => $self->prefix, # only report relative to dist root to avoid leaking private info root => path($self->root)->relative($self->zilla->root), filenames => [ sort @{ $self->filenames } ], }; return $config; }; sub gather_files { my ($self) = @_; my $repo_root = $self->zilla->root; my $root = "" . $self->root; $root =~ s{^~([\\/])}{ Dist::Zilla::Util->homedir . $1 }e; $root = path($root); $root = $root->absolute($repo_root) if path($root)->is_relative; for my $filename (@{ $self->filenames }) { $filename = $root->child($filename); $self->log_fatal("$filename is a directory! Use [GatherDir] instead?") if -d $filename; my $fileobj = $self->_file_from_filename($filename->stringify); $filename = $fileobj->name; my $file = path($filename)->relative($root); $file = path($self->prefix, $file) if $self->prefix; $fileobj->name($file->stringify); $self->add_file($fileobj); } return; } # as in GatherDir sub _file_from_filename { my ($self, $filename) = @_; my @stat = stat $filename or $self->log_fatal("$filename does not exist!"); return Dist::Zilla::File::OnDisk->new({ name => $filename, mode => $stat[2] & 0755, # kill world-writeability }); } __PACKAGE__->meta->make_immutable; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::GatherFile - gather individual file(s) =head1 VERSION version 6.032 =head1 SYNOPSIS [GatherFile] filename = examples/file.txt =head1 DESCRIPTION This is a very, very simple L plugin. It adds all the files referenced by the C option that are found in the directory named in the L attribute. If the root begins with a tilde, the tilde is passed through C first. Since normally every distribution will use a GatherDir plugin, you would only need to use the GatherFile plugin if the file was already being excluded (e.g. from an C configuration). =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 root This is the directory in which to look for files. If not given, it defaults to the dist root -- generally, the place where your F or other configuration file is located. =head2 prefix This parameter can be set to place the gathered files under a particular directory. See the L above for an example. =head2 filename The name of the file to gather, relative to the C. Can be used more than once. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/Manifest.pm000644 000765 000024 00000005627 14624411017 021703 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::Manifest 6.032; # ABSTRACT: build a MANIFEST file use Moose; with 'Dist::Zilla::Role::FileGatherer'; use Dist::Zilla::Pragmas; use namespace::autoclean; use Dist::Zilla::File::FromCode; #pod =head1 DESCRIPTION #pod #pod If included, this plugin will produce a F file for the distribution, #pod listing all of the files it contains. For obvious reasons, it should be #pod included as close to last as possible. #pod #pod This plugin is included in the L<@Basic|Dist::Zilla::PluginBundle::Basic> #pod bundle. #pod #pod =head1 SEE ALSO #pod #pod Dist::Zilla core plugins: #pod L<@Basic|Dist::Zilla::PluginBundle::Manifest>, #pod L. #pod #pod Other modules: L. #pod #pod =cut sub __fix_filename { my ($name) = @_; return $name unless $name =~ /[ '\\]/; $name =~ s/\\/\\\\/g; $name =~ s/'/\\'/g; return qq{'$name'}; } sub gather_files { my ($self, $arg) = @_; my $zilla = $self->zilla; my $file = Dist::Zilla::File::FromCode->new({ name => 'MANIFEST', code_return_type => 'bytes', code => sub { my $generated_by = sprintf "%s v%s", ref($self), $self->VERSION || '(dev)'; return "# This file was automatically generated by $generated_by.\n" . join("\n", map { __fix_filename($_) } sort map { $_->name } @{ $zilla->files }) . "\n", }, }); $self->add_file($file); } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::Manifest - build a MANIFEST file =head1 VERSION version 6.032 =head1 DESCRIPTION If included, this plugin will produce a F file for the distribution, listing all of the files it contains. For obvious reasons, it should be included as close to last as possible. This plugin is included in the L<@Basic|Dist::Zilla::PluginBundle::Basic> bundle. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 SEE ALSO Dist::Zilla core plugins: L<@Basic|Dist::Zilla::PluginBundle::Manifest>, L. Other modules: L. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/MetaJSON.pm000644 000765 000024 00000011174 14624411017 021507 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::MetaJSON 6.032; # ABSTRACT: produce a META.json use Moose; with 'Dist::Zilla::Role::FileGatherer'; use Moose::Util::TypeConstraints; use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =head1 DESCRIPTION #pod #pod This plugin will add a F file to the distribution. #pod #pod This file is meant to replace the old-style F. For more information #pod on this file, see L and L. #pod #pod =attr filename #pod #pod If given, parameter allows you to specify an alternate name for the generated #pod file. It defaults, of course, to F. #pod #pod =cut has filename => ( is => 'ro', isa => 'Str', default => 'META.json', ); #pod =attr version #pod #pod This parameter lets you pick what version of the spec to use when generating #pod the output. It defaults to 2 at present, but may be updated to new specs as #pod they are released and adopted. #pod #pod If you want a fixed version, specify it. #pod #pod =cut my $version_type = subtype( as 'Num', where { $_ >= 2 }, message { "MetaJSON version must be 2 or greater" }, ); has version => ( is => 'ro', isa => $version_type, default => '2', ); sub gather_files { my ($self, $arg) = @_; my $zilla = $self->zilla; require JSON::MaybeXS; require Dist::Zilla::File::FromCode; require CPAN::Meta::Converter; CPAN::Meta::Converter->VERSION(2.101550); # improved downconversion require CPAN::Meta::Validator; CPAN::Meta::Validator->VERSION(2.101550); # improved downconversion my $file = Dist::Zilla::File::FromCode->new({ name => $self->filename, encoding => 'ascii', code_return_type => 'text', code => sub { my $distmeta = $zilla->distmeta; my $validator = CPAN::Meta::Validator->new($distmeta); unless ($validator->is_valid) { my $msg = "Invalid META structure. Errors found:\n"; $msg .= join( "\n", $validator->errors ); $self->log_fatal($msg); } my $converter = CPAN::Meta::Converter->new($distmeta); my $output = $converter->convert(version => $self->version); my $backend = JSON::MaybeXS::JSON(); $output->{x_serialization_backend} = sprintf '%s version %s', $backend, $backend->VERSION; JSON::MaybeXS->new(canonical => 1, pretty => 1, ascii => 1)->encode($output) . "\n"; }, }); $self->add_file($file); return; } __PACKAGE__->meta->make_immutable; 1; #pod =head1 SEE ALSO #pod #pod Core Dist::Zilla plugins: #pod L<@Basic|Dist::Zilla::PluginBundle::Basic>, #pod L. #pod #pod Dist::Zilla roles: #pod L. #pod #pod Other modules: #pod L, #pod L, L. #pod #pod =cut __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::MetaJSON - produce a META.json =head1 VERSION version 6.032 =head1 DESCRIPTION This plugin will add a F file to the distribution. This file is meant to replace the old-style F. For more information on this file, see L and L. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 filename If given, parameter allows you to specify an alternate name for the generated file. It defaults, of course, to F. =head2 version This parameter lets you pick what version of the spec to use when generating the output. It defaults to 2 at present, but may be updated to new specs as they are released and adopted. If you want a fixed version, specify it. =head1 SEE ALSO Core Dist::Zilla plugins: L<@Basic|Dist::Zilla::PluginBundle::Basic>, L. Dist::Zilla roles: L. Other modules: L, L, L. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/MetaResources.pm000644 000765 000024 00000007074 14624411017 022714 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::MetaResources 6.032; # ABSTRACT: provide arbitrary "resources" for distribution metadata use Moose; with 'Dist::Zilla::Role::MetaProvider'; use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =head1 DESCRIPTION #pod #pod This plugin adds resources entries to the distribution's metadata. #pod #pod [MetaResources] #pod homepage = https://example.com/~dude/project.asp #pod bugtracker.web = https://rt.cpan.org/Public/Dist/Display.html?Name=Project #pod bugtracker.mailto = bug-Project@rt.cpan.org #pod repository.url = git://github.com/dude/project.git #pod repository.web = https://github.com/dude/project #pod repository.type = git #pod #pod =cut has resources => ( is => 'ro', isa => 'HashRef', required => 1, ); around BUILDARGS => sub { my $orig = shift; my ($class, @arg) = @_; my $args = $class->$orig(@arg); my %copy = %{ $args }; my $zilla = delete $copy{zilla}; my $name = delete $copy{plugin_name}; if (exists $copy{license} && ref($copy{license}) ne 'ARRAY') { $copy{license} = [ $copy{license} ]; } if (exists $copy{bugtracker}) { my $tracker = delete $copy{bugtracker}; $copy{bugtracker}{web} = $tracker; } if (exists $copy{repository}) { my $repo = delete $copy{repository}; $copy{repository}{url} = $repo; } for my $multi (qw( bugtracker repository )) { for my $key (grep { /^\Q$multi\E\./ } keys %copy) { my $subkey = (split /\./, $key, 2)[1]; $copy{$multi}{$subkey} = delete $copy{$key}; } } return { zilla => $zilla, plugin_name => $name, resources => \%copy, }; }; sub metadata { my ($self) = @_; return { resources => $self->resources }; } __PACKAGE__->meta->make_immutable; 1; #pod =head1 SEE ALSO #pod #pod Dist::Zilla roles: L. #pod #pod Dist::Zilla plugins on the CPAN: L. #pod #pod =cut __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::MetaResources - provide arbitrary "resources" for distribution metadata =head1 VERSION version 6.032 =head1 DESCRIPTION This plugin adds resources entries to the distribution's metadata. [MetaResources] homepage = https://example.com/~dude/project.asp bugtracker.web = https://rt.cpan.org/Public/Dist/Display.html?Name=Project bugtracker.mailto = bug-Project@rt.cpan.org repository.url = git://github.com/dude/project.git repository.web = https://github.com/dude/project repository.type = git =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 SEE ALSO Dist::Zilla roles: L. Dist::Zilla plugins on the CPAN: L. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/ModuleBuild.pm000644 000765 000024 00000021312 14624411017 022327 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::ModuleBuild 6.032; # ABSTRACT: build a Build.PL that uses Module::Build use Moose; with ( 'Dist::Zilla::Role::BuildPL', 'Dist::Zilla::Role::PrereqSource', 'Dist::Zilla::Role::FileGatherer', 'Dist::Zilla::Role::TextTemplate', ); use Dist::Zilla::Pragmas; use namespace::autoclean; use CPAN::Meta::Requirements 2.121; # requirements_for_module use Dist::Zilla::File::InMemory; use List::Util 'first'; use Data::Dumper; #pod =head1 DESCRIPTION #pod #pod This plugin will create a F for installing the dist using #pod L. #pod #pod =cut #pod =attr mb_version #pod #pod B Specify the minimum version of L to depend on. #pod #pod Defaults to 0.3601 if a sharedir is being used, otherwise 0.28. #pod #pod =attr mb_class #pod #pod B Specify the class to use to create the build object. Defaults #pod to C itself. If another class is specified, then the value #pod of mb_lib will be used to generate a line like C to be added #pod to the generated Build.PL file. #pod #pod =attr mb_lib #pod #pod B Specify the list of directories to be passed to lib when using #pod mb_class. Defaults to C. #pod #pod =attr build_element #pod #pod Anything given in a C option will be added as a build element #pod with Module::Build's L method. #pod #pod =cut has 'mb_version' => ( isa => 'Str', is => 'rw', lazy => 1, default => sub { my $self = shift; keys %{$self->zilla->_share_dir_map} ? '0.3601' : '0.28'; }, ); has 'mb_class' => ( isa => 'Str', is => 'rw', default => 'Module::Build', ); has 'mb_lib' => ( isa => 'Str', is => 'rw', default => 'inc' ); has 'build_element' => ( isa => 'ArrayRef[Str]', is => 'rw', default => sub { [] }, ); sub mvp_multivalue_args { return qw(build_element) } my $template = q| # This file was automatically generated by {{ $generated_by }}. use strict; use warnings; use Module::Build {{ $plugin->mb_version }}; {{ $plugin->_use_custom_class }} my {{ $module_build_args }} my {{ $fallback_build_prereqs }} unless ( eval { Module::Build->VERSION(0.4004) } ) { delete $module_build_args{test_requires}; $module_build_args{build_requires} = \%fallback_build_requires; } my $build = {{ $plugin->mb_class }}->new(%module_build_args); {{ $plugin->_add_build_elements }} $build->create_build_script; |; sub _use_custom_class { my ($self) = @_; my $class = $self->mb_class; if ( $class eq 'Module::Build' ) { return ""; } else { return sprintf "use lib qw{%s}; use $class;", join ' ', split ',', $self->mb_lib; } } sub _dump_as { my ($self, $ref, $name) = @_; require Data::Dumper; my $dumper = Data::Dumper->new( [ $ref ], [ $name ] ); $dumper->Sortkeys( 1 ); $dumper->Indent( 1 ); $dumper->Useqq( 1 ); return $dumper->Dump; } sub _add_build_elements { my @elems = @{ shift->build_element } or return ''; return '$build->add_build_element($_) for qw(' . join(' ', @elems) . ');'; } sub register_prereqs { my ($self) = @_; $self->zilla->register_prereqs( { phase => 'configure' }, 'Module::Build' => $self->mb_version, ); $self->zilla->register_prereqs( { phase => 'build' }, 'Module::Build' => $self->mb_version, ); } sub module_build_args { my ($self) = @_; my @exe_files = map { $_->name } @{ $self->zilla->find_files(':ExecFiles') }; $self->log_fatal("can't install files with whitespace in their names") if grep { /\s/ } @exe_files; my $prereqs = $self->zilla->prereqs; my %prereqs = ( configure_requires => $prereqs->requirements_for(qw(configure requires)), build_requires => $prereqs->requirements_for(qw(build requires)), test_requires => $prereqs->requirements_for(qw(test requires)), requires => $prereqs->requirements_for(qw(runtime requires)), recommends => $prereqs->requirements_for(qw(runtime recommends)), ); my $name = $self->zilla->name =~ s/-/::/gr; return { module_name => $name, license => $self->zilla->license->meta_yml_name, dist_abstract => $self->zilla->abstract, dist_name => $self->zilla->name, dist_version => $self->zilla->version, dist_author => [ @{ $self->zilla->authors } ], @exe_files ? ( script_files => [ sort @exe_files ] ) : (), ( keys %{$self->zilla->_share_dir_map} ? (share_dir => $self->zilla->_share_dir_map) : ()), (map {; my $modules = $prereqs{$_}->as_string_hash; keys %$modules ? ( $_ => $modules ) : () } keys %prereqs), recursive_test_files => 1, }; } sub fallback_build_requires { my $self = shift; my $prereqs = $self->zilla->prereqs; my $merged = CPAN::Meta::Requirements->new; for my $phase ( qw/build test/ ) { my $req = $prereqs->requirements_for($phase, 'requires'); $merged->add_requirements( $req ); }; return $self->_dump_as( $merged->as_string_hash, '*fallback_build_requires' ); } sub gather_files { my ($self) = @_; require Dist::Zilla::File::InMemory; my $file = Dist::Zilla::File::InMemory->new({ name => 'Build.PL', content => $template, # template evaluated later }); $self->add_file($file); return; } sub setup_installer { my ($self) = @_; $self->log_fatal("can't build Build.PL; license has no known META.yml value") unless $self->zilla->license->meta_yml_name; my $module_build_args = $self->module_build_args; $self->__module_build_args($module_build_args); my $dumped_args = $self->_dump_as($module_build_args, '*module_build_args'); my $fallback_build_requires = $self->fallback_build_requires; my $file = first { $_->name eq 'Build.PL' } @{$self->zilla->files}; $self->log_debug([ 'updating contents of Build.PL in memory' ]); my $content = $self->fill_in_string( $file->content, { plugin => \$self, module_build_args => \$dumped_args, fallback_build_prereqs => \$fallback_build_requires, generated_by => \sprintf("%s v%s", ref($self), $self->VERSION || '(dev)'), }, ); $file->content($content); return; } # XXX: Just here to facilitate testing. -- rjbs, 2010-03-20 has __module_build_args => ( is => 'rw', isa => 'HashRef', ); __PACKAGE__->meta->make_immutable; 1; #pod =head1 SEE ALSO #pod #pod Core Dist::Zilla plugins: #pod L<@Basic|Dist::Zilla::PluginBundle::Basic>, #pod L<@Filter|Dist::Zilla::PluginBundle::Filter>, #pod L, #pod L. #pod #pod Dist::Zilla roles: #pod L. #pod #pod =cut __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::ModuleBuild - build a Build.PL that uses Module::Build =head1 VERSION version 6.032 =head1 DESCRIPTION This plugin will create a F for installing the dist using L. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 mb_version B Specify the minimum version of L to depend on. Defaults to 0.3601 if a sharedir is being used, otherwise 0.28. =head2 mb_class B Specify the class to use to create the build object. Defaults to C itself. If another class is specified, then the value of mb_lib will be used to generate a line like C to be added to the generated Build.PL file. =head2 mb_lib B Specify the list of directories to be passed to lib when using mb_class. Defaults to C. =head2 build_element Anything given in a C option will be added as a build element with Module::Build's L method. =head1 SEE ALSO Core Dist::Zilla plugins: L<@Basic|Dist::Zilla::PluginBundle::Basic>, L<@Filter|Dist::Zilla::PluginBundle::Filter>, L, L. Dist::Zilla roles: L. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/Encoding.pm000644 000765 000024 00000011076 14624411017 021656 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::Encoding 6.032; # ABSTRACT: set the encoding of arbitrary files use Moose; with 'Dist::Zilla::Role::EncodingProvider'; use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =head1 SYNOPSIS #pod #pod This plugin allows you to explicitly set the encoding on some files in your #pod distribution. You can either specify the exact set of files (with the #pod "filenames" parameter) or provide the regular expressions to check (using #pod "match"). #pod #pod In your F: #pod #pod [Encoding] #pod encoding = Latin-3 #pod #pod filename = t/esperanto.t ; this file is Esperanto #pod match = ^t/urkish/ ; these are all Turkish #pod #pod =cut sub mvp_multivalue_args { qw(filenames matches ignore) } sub mvp_aliases { return { filename => 'filenames', match => 'matches' } } #pod =attr encoding #pod #pod This is the encoding to set on the selected files. The special value "bytes" #pod can be used to indicate raw files that should not be encoded. #pod #pod =cut has encoding => ( is => 'ro', isa => 'Str', required => 1, ); #pod =attr filenames #pod #pod This is an arrayref of filenames to have their encoding set. #pod #pod =cut has filenames => ( is => 'ro', isa => 'ArrayRef', default => sub { [] }, ); #pod =attr matches #pod #pod This is an arrayref of regular expressions. Any file whose name matches one of #pod these regex will have its encoding set. #pod #pod =cut has matches => ( is => 'ro', isa => 'ArrayRef', default => sub { [] }, ); #pod =attr ignore #pod #pod This is an arrayref of regular expressions. Any file whose name matches one of #pod these regex will B have its encoding set. Useful to ignore a few files #pod that would otherwise be selected by C. #pod #pod =cut has ignore => ( is => 'ro', isa => 'ArrayRef', default => sub { [] }, ); sub set_file_encodings { my ($self) = @_; # never match (at least the filename characters) my $matches_regex = qr/\000/; $matches_regex = qr/$matches_regex|$_/ for @{$self->matches}; # \A\Q$_\E should also handle the `eq` check $matches_regex = qr/$matches_regex|\A\Q$_\E/ for @{$self->filenames}; my( $ignore_regex ) = map { $_ && qr/$_/ } join '|', @{ $self->ignore }; for my $file (@{$self->zilla->files}) { next unless $file->name =~ $matches_regex; next if $ignore_regex and $file->name =~ $ignore_regex; $self->log_debug([ 'setting encoding of %s to %s', $file->name, $self->encoding, ]); $file->encoding($self->encoding); } return; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::Encoding - set the encoding of arbitrary files =head1 VERSION version 6.032 =head1 SYNOPSIS This plugin allows you to explicitly set the encoding on some files in your distribution. You can either specify the exact set of files (with the "filenames" parameter) or provide the regular expressions to check (using "match"). In your F: [Encoding] encoding = Latin-3 filename = t/esperanto.t ; this file is Esperanto match = ^t/urkish/ ; these are all Turkish =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 encoding This is the encoding to set on the selected files. The special value "bytes" can be used to indicate raw files that should not be encoded. =head2 filenames This is an arrayref of filenames to have their encoding set. =head2 matches This is an arrayref of regular expressions. Any file whose name matches one of these regex will have its encoding set. =head2 ignore This is an arrayref of regular expressions. Any file whose name matches one of these regex will B have its encoding set. Useful to ignore a few files that would otherwise be selected by C. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/Readme.pm000644 000765 000024 00000005211 14624411017 021317 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::Readme 6.032; # ABSTRACT: build a README file use Moose; with qw/Dist::Zilla::Role::FileGatherer Dist::Zilla::Role::TextTemplate Dist::Zilla::Role::FileMunger/; use Dist::Zilla::Pragmas; use Moose::Util::TypeConstraints; use namespace::autoclean; #pod =head1 DESCRIPTION #pod #pod This plugin adds a very simple F file to the distribution, citing the #pod dist's name, version, abstract, and license. It may be more useful or #pod informative in the future. #pod #pod =cut has _file_obj => ( is => 'rw', isa => role_type('Dist::Zilla::Role::File'), ); sub gather_files { my ($self, $arg) = @_; require Dist::Zilla::File::InMemory; my $template = q| This archive contains the distribution {{ $dist->name }}, version {{ $dist->version }}: {{ $dist->abstract }} {{ $dist->license->notice }} This README file was generated by {{ $generated_by }}. |; $template =~ s/\A\n+//; $template =~ s/\n+\z/\n/; $self->add_file( $self->_file_obj( Dist::Zilla::File::InMemory->new( name => 'README', content => $template, ) ) ); return; } sub munge_files { my $self = shift; my $file = $self->_file_obj; $file->content( $self->fill_in_string( $file->content, { dist => \($self->zilla), generated_by => \sprintf("%s v%s", ref($self), $self->VERSION || '(dev)'), } ) ); return; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::Readme - build a README file =head1 VERSION version 6.032 =head1 DESCRIPTION This plugin adds a very simple F file to the distribution, citing the dist's name, version, abstract, and license. It may be more useful or informative in the future. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/MetaNoIndex.pm000644 000765 000024 00000011761 14624411017 022304 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::MetaNoIndex 6.032; # ABSTRACT: Stop CPAN from indexing stuff use Moose; with 'Dist::Zilla::Role::MetaProvider'; use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =encoding utf8 #pod #pod =head1 SYNOPSIS #pod #pod In your F: #pod #pod [MetaNoIndex] #pod #pod directory = t/author #pod directory = examples #pod #pod file = lib/Foo.pm #pod #pod package = My::Module #pod #pod namespace = My::Module #pod #pod =head1 DESCRIPTION #pod #pod This plugin allows you to prevent PAUSE/CPAN from indexing files you don't #pod want indexed. This is useful if you build test classes or example classes #pod that are used for those purposes only, and are not part of the distribution. #pod It does this by adding a C block to your F (or #pod F) file in your distribution. #pod #pod =for Pod::Coverage mvp_aliases mvp_multivalue_args #pod #pod =cut my %ATTR_ALIAS = ( directories => [ qw(directory dir folder) ], files => [ qw(file) ], packages => [ qw(package class module) ], namespaces => [ qw(namespace) ], ); sub mvp_aliases { my %alias_for; for my $key (keys %ATTR_ALIAS) { $alias_for{ $_ } = $key for @{ $ATTR_ALIAS{$key} }; } return \%alias_for; } sub mvp_multivalue_args { return keys %ATTR_ALIAS } #pod =attr directories #pod #pod Exclude folders and everything in them, for example: F #pod #pod Aliases: C, C, C #pod #pod =attr files #pod #pod Exclude a specific file, for example: F #pod #pod Alias: C #pod #pod =attr packages #pod #pod Exclude by package name, for example: C #pod #pod Aliases: C, C, C #pod #pod =attr namespaces #pod #pod Exclude everything under a specific namespace, for example: C #pod #pod Alias: C #pod #pod B This will not exclude the package C, only everything #pod under it like C. #pod #pod =cut for my $attr (keys %ATTR_ALIAS) { has $attr => ( is => 'ro', isa => 'ArrayRef[Str]', init_arg => $attr, predicate => "_has_$attr", ); } #pod =method metadata #pod #pod Returns a reference to a hash containing the distribution's no_index metadata. #pod #pod =cut sub metadata { my $self = shift; return { no_index => { map {; my $reader = $_->[0]; ($_->[1] => [ sort @{ $self->$reader } ]) } grep {; my $pred = "_has_$_->[0]"; $self->$pred } map {; [ $_ => $ATTR_ALIAS{$_}[0] ] } keys %ATTR_ALIAS } }; } __PACKAGE__->meta->make_immutable; 1; #pod =head1 SEE ALSO #pod #pod Dist::Zilla roles: L. #pod #pod =cut __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::MetaNoIndex - Stop CPAN from indexing stuff =head1 VERSION version 6.032 =head1 SYNOPSIS In your F: [MetaNoIndex] directory = t/author directory = examples file = lib/Foo.pm package = My::Module namespace = My::Module =head1 DESCRIPTION This plugin allows you to prevent PAUSE/CPAN from indexing files you don't want indexed. This is useful if you build test classes or example classes that are used for those purposes only, and are not part of the distribution. It does this by adding a C block to your F (or F) file in your distribution. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 directories Exclude folders and everything in them, for example: F Aliases: C, C, C =head2 files Exclude a specific file, for example: F Alias: C =head2 packages Exclude by package name, for example: C Aliases: C, C, C =head2 namespaces Exclude everything under a specific namespace, for example: C Alias: C B This will not exclude the package C, only everything under it like C. =head1 METHODS =head2 metadata Returns a reference to a hash containing the distribution's no_index metadata. =for Pod::Coverage mvp_aliases mvp_multivalue_args =head1 SEE ALSO Dist::Zilla roles: L. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/Prereqs.pm000644 000765 000024 00000020003 14624411017 021537 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::Prereqs 6.032; # ABSTRACT: list simple prerequisites use Moose; with 'Dist::Zilla::Role::PrereqSource'; use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =head1 SYNOPSIS #pod #pod In your F: #pod #pod [Prereqs] #pod Foo::Bar = 1.002 #pod MRO::Compat = 10 #pod Sub::Exporter = 0 #pod #pod You can specify requirements for different phases and relationships with: #pod #pod [Prereqs] #pod -phase = test #pod -relationship = recommends #pod #pod Fitz::Fotz = 1.23 #pod Text::SoundEx = 3 #pod #pod Remember that if you load two Prereqs plugins, each will needs its own name, #pod added like this: #pod #pod [Prereqs / PluginName] #pod -phase = test #pod -relationship = recommends #pod #pod Fitz::Fotz = 1.23 #pod Text::SoundEx = 3 #pod #pod If the name is the CamelCase concatenation of a phase and relationship #pod (or just a relationship), it will set those parameters implicitly. If #pod you use a custom name, but it does not specify the relationship, and #pod you didn't specify either C<-phase> or C<-relationship>, it throws the #pod error C. This is to prevent a #pod typo that makes the name meaningless from slipping by unnoticed. #pod #pod The example below is equivalent to the example above, except for the name of #pod the resulting plugin: #pod #pod [Prereqs / TestRecommends] #pod Fitz::Fotz = 1.23 #pod Text::SoundEx = 3 #pod #pod =head1 DESCRIPTION #pod #pod This module adds "fixed" prerequisites to your distribution. These are prereqs #pod with a known, fixed minimum version that doesn't change based on platform or #pod other conditions. #pod #pod You can specify prerequisites for different phases and kinds of relationships. #pod In C, the phase is Runtime and the relationship is Requires. #pod These are described in more detail in the L. #pod #pod The phases are: #pod #pod =for :list #pod * configure #pod * build #pod * test #pod * runtime #pod * develop #pod #pod The relationship types are: #pod #pod =for :list #pod * requires #pod * recommends #pod * suggests #pod * conflicts #pod #pod If the phase is omitted, it will default to I; thus, specifying #pod "Prereqs / Recommends" in your dist.ini is equivalent to I. #pod #pod Not all of these phases are useful for all tools, especially tools that only #pod understand version 1.x CPAN::Meta files. #pod #pod =cut has prereq_phase => ( is => 'ro', isa => 'Str', lazy => 1, init_arg => 'phase', default => 'runtime', ); has prereq_type => ( is => 'ro', isa => 'Str', lazy => 1, init_arg => 'type', default => 'requires', ); around dump_config => sub { my ($orig, $self) = @_; my $config = $self->$orig; my $this_config = { type => $self->prereq_type, phase => $self->prereq_phase, }; $config->{'' . __PACKAGE__} = $this_config; return $config; }; has _prereq => ( is => 'ro', isa => 'HashRef', default => sub { {} }, ); sub mvp_aliases { return { -relationship => '-type' } } around BUILDARGS => sub { my $orig = shift; my ($class, @arg) = @_; my $args = $class->$orig(@arg); my %copy = %{ $args }; my $zilla = delete $copy{zilla}; my $name = delete $copy{plugin_name}; my @dashed = grep { /^-/ } keys %copy; my %other; for my $dkey (@dashed) { my $key = $dkey =~ s/^-//r; $other{ $key } = delete $copy{ $dkey }; } confess "don't try to pass -_prereq as a build arg!" if $other{_prereq}; # Handle magic plugin names: unless (($other{phase} and $other{type}) # plugin comes from a bundle or $name =~ m! (?: \A | / ) Prereqs? \z !x) { my ($phase, $type) = $name =~ /\A (Build|Test|Runtime|Configure|Develop)? (Requires|Recommends|Suggests|Conflicts) \z/x; if ($type) { $other{phase} ||= lc $phase if defined $phase; $other{type} ||= lc $type; } else { $zilla->chrome->logger->log_fatal({ prefix => "[$name] " }, "No -phase or -relationship specified") unless $other{phase} or $other{type}; } } return { zilla => $zilla, plugin_name => $name, _prereq => \%copy, %other, } }; sub register_prereqs { my ($self) = @_; $self->zilla->register_prereqs( { type => $self->prereq_type, phase => $self->prereq_phase, }, %{ $self->_prereq }, ); } __PACKAGE__->meta->make_immutable; 1; #pod =head1 SEE ALSO #pod #pod =over 4 #pod #pod =item * #pod #pod Core Dist::Zilla plugins: #pod L<@Basic|Dist::Zilla::PluginBundle::Basic>, #pod L. #pod #pod =item * #pod #pod The CPAN Meta specification: L. #pod #pod =back #pod #pod =cut __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::Prereqs - list simple prerequisites =head1 VERSION version 6.032 =head1 SYNOPSIS In your F: [Prereqs] Foo::Bar = 1.002 MRO::Compat = 10 Sub::Exporter = 0 You can specify requirements for different phases and relationships with: [Prereqs] -phase = test -relationship = recommends Fitz::Fotz = 1.23 Text::SoundEx = 3 Remember that if you load two Prereqs plugins, each will needs its own name, added like this: [Prereqs / PluginName] -phase = test -relationship = recommends Fitz::Fotz = 1.23 Text::SoundEx = 3 If the name is the CamelCase concatenation of a phase and relationship (or just a relationship), it will set those parameters implicitly. If you use a custom name, but it does not specify the relationship, and you didn't specify either C<-phase> or C<-relationship>, it throws the error C. This is to prevent a typo that makes the name meaningless from slipping by unnoticed. The example below is equivalent to the example above, except for the name of the resulting plugin: [Prereqs / TestRecommends] Fitz::Fotz = 1.23 Text::SoundEx = 3 =head1 DESCRIPTION This module adds "fixed" prerequisites to your distribution. These are prereqs with a known, fixed minimum version that doesn't change based on platform or other conditions. You can specify prerequisites for different phases and kinds of relationships. In C, the phase is Runtime and the relationship is Requires. These are described in more detail in the L. The phases are: =over 4 =item * configure =item * build =item * test =item * runtime =item * develop =back The relationship types are: =over 4 =item * requires =item * recommends =item * suggests =item * conflicts =back If the phase is omitted, it will default to I; thus, specifying "Prereqs / Recommends" in your dist.ini is equivalent to I. Not all of these phases are useful for all tools, especially tools that only understand version 1.x CPAN::Meta files. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 SEE ALSO =over 4 =item * Core Dist::Zilla plugins: L<@Basic|Dist::Zilla::PluginBundle::Basic>, L. =item * The CPAN Meta specification: L. =back =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/TestRelease.pm000644 000765 000024 00000006377 14624411017 022360 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::TestRelease 6.032; # ABSTRACT: extract archive and run tests before releasing the dist use Moose; with 'Dist::Zilla::Role::BeforeRelease'; use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =head1 DESCRIPTION #pod #pod This plugin runs before a release happens. It will extract the to-be-released #pod archive into a temporary directory and use the TestRunner plugins to run its #pod tests. If the tests fail, the release is aborted and the temporary directory #pod is left in place. If the tests pass, the temporary directory is cleaned up and #pod the release process continues. #pod #pod This will set the RELEASE_TESTING and AUTHOR_TESTING env vars while running the #pod test suite. #pod #pod =head1 CREDITS #pod #pod This plugin was originally contributed by Christopher J. Madsen. #pod #pod =cut use File::pushd (); use Dist::Zilla::Path; sub before_release { my ($self, $tgz) = @_; $tgz = $tgz->absolute; my $build_root = $self->zilla->root->child('.build'); $build_root->mkpath unless -d $build_root; my $tmpdir = path( File::Temp::tempdir(DIR => $build_root) ); $self->log("Extracting $tgz to $tmpdir"); require Archive::Tar; my @files = do { my $wd = File::pushd::pushd($tmpdir); Archive::Tar->extract_archive("$tgz"); }; $self->log_fatal([ "Failed to extract archive: %s", Archive::Tar->error ]) unless @files; # Run tests on the extracted tarball: my $target = $tmpdir->child( $self->zilla->dist_basename ); local $ENV{RELEASE_TESTING} = 1; local $ENV{AUTHOR_TESTING} = 1; $self->zilla->run_tests_in($target); $self->log("all's well; removing $tmpdir"); $tmpdir->remove_tree({ safe => 0 }); } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::TestRelease - extract archive and run tests before releasing the dist =head1 VERSION version 6.032 =head1 DESCRIPTION This plugin runs before a release happens. It will extract the to-be-released archive into a temporary directory and use the TestRunner plugins to run its tests. If the tests fail, the release is aborted and the temporary directory is left in place. If the tests pass, the temporary directory is cleaned up and the release process continues. This will set the RELEASE_TESTING and AUTHOR_TESTING env vars while running the test suite. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 CREDITS This plugin was originally contributed by Christopher J. Madsen. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/UploadToCPAN.pm000644 000765 000024 00000025137 14624411017 022324 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::UploadToCPAN 6.032; # ABSTRACT: upload the dist to CPAN use Moose; with 'Dist::Zilla::Role::BeforeRelease', 'Dist::Zilla::Role::Releaser'; use Dist::Zilla::Pragmas; use File::Spec; use Moose::Util::TypeConstraints; use Scalar::Util qw(weaken); use Dist::Zilla::Util; use Try::Tiny; use namespace::autoclean; #pod =head1 SYNOPSIS #pod #pod If loaded, this plugin will allow the F command to upload to the CPAN. #pod #pod =head1 DESCRIPTION #pod #pod This plugin looks for configuration in your C or (more #pod likely) C<~/.dzil/config.ini>: #pod #pod [%PAUSE] #pod username = YOUR-PAUSE-ID #pod password = YOUR-PAUSE-PASSWORD #pod #pod If this configuration does not exist, it can read the configuration from #pod C<~/.pause>, in the same format that L requires: #pod #pod user YOUR-PAUSE-ID #pod password YOUR-PAUSE-PASSWORD #pod #pod If neither configuration exists, it will prompt you to enter your #pod username and password during the BeforeRelease phase. Entering a #pod blank username or password will abort the release. #pod #pod You can't put your password in your F. C'mon now! #pod #pod =cut { package Dist::Zilla::Plugin::UploadToCPAN::_Uploader; # CPAN::Uploader will be loaded later if used our @ISA = 'CPAN::Uploader'; # Report CPAN::Uploader's version, not ours: sub _ua_string { CPAN::Uploader->_ua_string } sub log { my $self = shift; $self->{'Dist::Zilla'}{plugin}->log(@_); } } #pod =attr credentials_stash #pod #pod This attribute holds the name of a L #pod that will contain the credentials to be used for the upload. By default, #pod UploadToCPAN will look for a C<%PAUSE> stash. #pod #pod =cut has credentials_stash => ( is => 'ro', isa => 'Str', default => '%PAUSE' ); has _credentials_stash_obj => ( is => 'ro', isa => maybe_type( role_type('Dist::Zilla::Role::Stash::Login') ), lazy => 1, init_arg => undef, default => sub { $_[0]->zilla->stash_named( $_[0]->credentials_stash ) }, ); sub _credential { my ($self, $name) = @_; return unless my $stash = $self->_credentials_stash_obj; return $stash->$name; } sub mvp_aliases { return { user => 'username' }; } #pod =attr username #pod #pod This option supplies the user's PAUSE username. #pod It will be looked for in the user's PAUSE configuration; if not #pod found, the user will be prompted. #pod #pod =cut has username => ( is => 'ro', isa => 'Str', lazy => 1, default => sub { my ($self) = @_; return $self->_credential('username') || $self->pause_cfg->{user} || $self->zilla->chrome->prompt_str("PAUSE username: "); }, ); sub cpanid { shift->username } #pod =attr password #pod #pod This option supplies the user's PAUSE password. It cannot be provided via #pod F. It will be looked for in the user's PAUSE configuration; if not #pod found, the user will be prompted. #pod #pod =cut has password => ( is => 'ro', isa => 'Str', init_arg => undef, lazy => 1, default => sub { my ($self) = @_; my $pw = $self->_credential('password') || $self->pause_cfg->{password}; unless ($pw){ my $uname = $self->username; $pw = $self->zilla->chrome->prompt_str( "PAUSE password for $uname: ", { noecho => 1 }, ); } return $pw; }, ); #pod =attr pause_cfg_file #pod #pod This is the name of the file containing your pause credentials. It defaults #pod F<.pause>. If you give a relative path, it is taken to be relative to #pod L. #pod #pod =cut has pause_cfg_file => ( is => 'ro', isa => 'Str', lazy => 1, default => sub { '.pause' }, ); #pod =attr pause_cfg_dir #pod #pod This is the directory for resolving a relative L. #pod it defaults to the glob expansion of F<~>. #pod #pod =cut has pause_cfg_dir => ( is => 'ro', isa => 'Str', lazy => 1, default => sub { Dist::Zilla::Util->homedir }, ); #pod =attr pause_cfg #pod #pod This is a hashref of defaults loaded from F<~/.pause> -- this attribute is #pod subject to removal in future versions, as the config-loading behavior in #pod CPAN::Uploader is improved. #pod #pod =cut has pause_cfg => ( is => 'ro', isa => 'HashRef[Str]', lazy => 1, default => sub { my $self = shift; require CPAN::Uploader; my $file = $self->pause_cfg_file; $file = File::Spec->catfile($self->pause_cfg_dir, $file) unless File::Spec->file_name_is_absolute($file); return {} unless -e $file && -r _; my $cfg = try { CPAN::Uploader->read_config_file($file) } catch { $self->log("Couldn't load credentials from '$file': $_"); {}; }; return $cfg; }, ); #pod =attr subdir #pod #pod If given, this specifies a subdirectory under the user's home directory to #pod which to upload. Using this option is not recommended. #pod #pod =cut has subdir => ( is => 'ro', isa => 'Str', predicate => 'has_subdir', ); #pod =attr upload_uri #pod #pod If given, this specifies an alternate URI for the PAUSE upload form. By #pod default, the default supplied by L is used. Using this option #pod is not recommended in most cases. #pod #pod =cut has upload_uri => ( is => 'ro', isa => 'Str', predicate => 'has_upload_uri', ); #pod =attr retries #pod #pod The number of retries to perform on upload failure (5xx response). The default #pod is set to 3 by this plugin. This option will be passed to L. #pod #pod =cut has retries => ( is => 'ro', isa => 'Int', default => 3, ); #pod =attr retry_delay #pod #pod The number of seconds to wait between retries. The default is set to 5 seconds #pod by this plugin. This option will be passed to L. #pod #pod =cut has retry_delay => ( is => 'ro', isa => 'Int', default => 5, ); has uploader => ( is => 'ro', isa => 'CPAN::Uploader', lazy => 1, default => sub { my ($self) = @_; # Load the module lazily require CPAN::Uploader; CPAN::Uploader->VERSION('0.103004'); # require HTTPS my $uploader = Dist::Zilla::Plugin::UploadToCPAN::_Uploader->new({ user => $self->username, password => $self->password, ($self->has_subdir ? (subdir => $self->subdir) : ()), ($self->has_upload_uri ? (upload_uri => $self->upload_uri) : ()), ($self->retries ? (retries => $self->retries) : ()), ($self->retry_delay ? (retry_delay => $self->retry_delay) : ()), }); $uploader->{'Dist::Zilla'}{plugin} = $self; weaken $uploader->{'Dist::Zilla'}{plugin}; return $uploader; } ); sub before_release { my $self = shift; my $sentinel = []; for my $attr (qw(username password)) { my $value; my $ok = eval { $value = $self->$attr; 1 }; unless ($ok) { $self->log_fatal([ "Couldn't figure out %s: %s", $attr, $@ ]); } unless (length $value) { $self->log_fatal([ "No $attr was provided" ]); } } return; } sub release { my ($self, $archive) = @_; $self->uploader->upload_file("$archive"); } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::UploadToCPAN - upload the dist to CPAN =head1 VERSION version 6.032 =head1 SYNOPSIS If loaded, this plugin will allow the F command to upload to the CPAN. =head1 DESCRIPTION This plugin looks for configuration in your C or (more likely) C<~/.dzil/config.ini>: [%PAUSE] username = YOUR-PAUSE-ID password = YOUR-PAUSE-PASSWORD If this configuration does not exist, it can read the configuration from C<~/.pause>, in the same format that L requires: user YOUR-PAUSE-ID password YOUR-PAUSE-PASSWORD If neither configuration exists, it will prompt you to enter your username and password during the BeforeRelease phase. Entering a blank username or password will abort the release. You can't put your password in your F. C'mon now! =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 credentials_stash This attribute holds the name of a L that will contain the credentials to be used for the upload. By default, UploadToCPAN will look for a C<%PAUSE> stash. =head2 username This option supplies the user's PAUSE username. It will be looked for in the user's PAUSE configuration; if not found, the user will be prompted. =head2 password This option supplies the user's PAUSE password. It cannot be provided via F. It will be looked for in the user's PAUSE configuration; if not found, the user will be prompted. =head2 pause_cfg_file This is the name of the file containing your pause credentials. It defaults F<.pause>. If you give a relative path, it is taken to be relative to L. =head2 pause_cfg_dir This is the directory for resolving a relative L. it defaults to the glob expansion of F<~>. =head2 pause_cfg This is a hashref of defaults loaded from F<~/.pause> -- this attribute is subject to removal in future versions, as the config-loading behavior in CPAN::Uploader is improved. =head2 subdir If given, this specifies a subdirectory under the user's home directory to which to upload. Using this option is not recommended. =head2 upload_uri If given, this specifies an alternate URI for the PAUSE upload form. By default, the default supplied by L is used. Using this option is not recommended in most cases. =head2 retries The number of retries to perform on upload failure (5xx response). The default is set to 3 by this plugin. This option will be passed to L. =head2 retry_delay The number of seconds to wait between retries. The default is set to 5 seconds by this plugin. This option will be passed to L. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/PkgVersion.pm000644 000765 000024 00000036671 14624411017 022227 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::PkgVersion 6.032; # ABSTRACT: add a $VERSION to your packages use Moose; with( 'Dist::Zilla::Role::FileMunger', 'Dist::Zilla::Role::FileFinderUser' => { default_finders => [ ':InstallModules', ':ExecFiles' ], }, 'Dist::Zilla::Role::PPI', ); use Dist::Zilla::Pragmas; use namespace::autoclean; #pod =head1 SYNOPSIS #pod #pod in dist.ini #pod #pod [PkgVersion] #pod #pod =head1 DESCRIPTION #pod #pod This plugin will add lines like the following to each package in each Perl #pod module or program (more or less) within the distribution: #pod #pod $MyModule::VERSION = '0.001'; #pod #pod or #pod #pod { our $VERSION = '0.001'; } #pod #pod ...where 0.001 is the version of the dist, and MyModule is the name of the #pod package being given a version. (In other words, it always uses fully-qualified #pod names to assign versions.) #pod #pod It will skip any package declaration that includes a newline between the #pod C keyword and the package name, like: #pod #pod package #pod Foo::Bar; #pod #pod This sort of declaration is also ignored by the CPAN toolchain, and is #pod typically used when doing monkey patching or other tricky things. #pod #pod =attr die_on_existing_version #pod #pod If true, then when PkgVersion sees an existing C<$VERSION> assignment, it will #pod throw an exception rather than skip the file. This attribute defaults to #pod false. #pod #pod =attr die_on_line_insertion #pod #pod By default, PkgVersion looks for a blank line after each C statement. #pod If it finds one, it inserts the C<$VERSION> assignment on that line. If it #pod doesn't, it will insert a new line, which means the shipped copy of the module #pod will have different line numbers (off by one) than the source. If #pod C is true, PkgVersion will raise an exception rather #pod than insert a new line. #pod #pod =attr use_package #pod #pod This option, if true, will not insert an assignment to C<$VERSION> but will #pod replace the existing C declaration with one that includes a version #pod like: #pod #pod package Module::Name 0.001; #pod #pod =attr use_our #pod #pod The idea here was to insert C<< { our $VERSION = '0.001'; } >> instead of C<< #pod $Module::Name::VERSION = '0.001'; >>. It turns out that this causes problems #pod with some analyzers. Use of this feature is deprecated. #pod #pod Something else will replace it in the future. #pod #pod =attr use_begin #pod #pod If true, the version assignment is wrapped in a BEGIN block. This may help in #pod rare cases, such as when DynaLoader has to be called at BEGIN time, and #pod requires VERSION. This option should be needed rarely. #pod #pod Also note that assigning to C<$VERSION> before the module has finished #pod compiling can lead to confused behavior with attempts to determine whether a #pod module was successfully loaded on perl v5.8. #pod #pod =attr finder #pod #pod =for stopwords FileFinder #pod #pod This is the name of a L for finding #pod modules to edit. The default value is C<:InstallModules> and C<:ExecFiles>; #pod this option can be used more than once. #pod #pod Other predefined finders are listed in #pod L. #pod You can define your own with the #pod L<[FileFinder::ByName]|Dist::Zilla::Plugin::FileFinder::ByName> and #pod L<[FileFinder::Filter]|Dist::Zilla::Plugin::FileFinder::Filter> plugins. #pod #pod =cut sub BUILD { my ($self) = @_; $self->log("use_our option to PkgVersion is deprecated and will be removed") if $self->use_our; if ($self->use_package && ($self->use_our || $self->use_begin)) { $self->log_fatal("use_package and (use_our or use_begin) are not compatible"); } } sub munge_files { my ($self) = @_; $self->munge_file($_) for @{ $self->found_files }; } sub munge_file { my ($self, $file) = @_; if ($file->is_bytes) { $self->log_debug($file->name . " has 'bytes' encoding, skipping..."); return; } if ($file->name =~ /\.pod$/) { $self->log_debug($file->name . " is a pod file, skipping..."); return; } return $self->munge_perl($file); } has die_on_existing_version => ( is => 'ro', isa => 'Bool', default => 0, ); has die_on_line_insertion => ( is => 'ro', isa => 'Bool', default => 0, ); has use_package => ( is => 'ro', isa => 'Bool', default => 0, ); has use_our => ( is => 'ro', isa => 'Bool', default => 0, ); has use_begin => ( is => 'ro', isa => 'Bool', default => 0, ); sub _version_assignment { my ($self, $package, $version) = @_; # the \x20 hack is here so that when we scan *this* document we don't find # an assignment to version; it shouldn't be needed, but it's been annoying # enough in the past that I'm keeping it here until tests are better my $perl = $self->use_our ? "our \$VERSION\x20=\x20'$version';" : "\$$package\::VERSION\x20=\x20'$version';"; return $self->use_begin ? "BEGIN { $perl }" : $self->use_our ? "{ $perl }" : $perl; } sub munge_perl { my ($self, $file) = @_; my $version = $self->zilla->version; require version; Carp::croak("invalid characters in version") unless version::is_lax($version); my $document = $self->ppi_document_for_file($file); my $package_stmts = $document->find('PPI::Statement::Package'); unless ($package_stmts) { $self->log_debug([ 'skipping %s: no package statement found', $file->name ]); return; } if ($self->document_assigns_to_variable($document, '$VERSION')) { if ($self->die_on_existing_version) { $self->log_fatal([ 'existing assignment to $VERSION in %s', $file->name ]); } $self->log([ 'skipping %s: assigns to $VERSION', $file->name ]); return; } my %seen_pkg; my $munged = 0; STATEMENT: for my $stmt (@$package_stmts) { my $package = $stmt->namespace; if ($seen_pkg{ $package }++) { $self->log([ 'skipping package re-declaration for %s', $package ]); next; } if ($stmt->content =~ /package\s*(?:#.*)?\n\s*\Q$package/) { $self->log([ 'skipping private package %s in %s', $package, $file->name ]); next; } $self->log("non-ASCII package name is likely to cause problems") if $package =~ /\P{ASCII}/; $self->log("non-ASCII version is likely to cause problems") if $version =~ /\P{ASCII}/; if ($self->use_package) { my $version_token = $version =~ m/\.\d+\./ ? PPI::Token::Number::Version->new(version->parse($version)->normal) : PPI::Token::Number->new($version) ; if (my ($block) = grep {; $_->isa('PPI::Structure::Block') } $stmt->schildren) { # Okay, we've encountered `package NAME BLOCK` and want to turn it into # `package NAME VERSION BLOCK` but, to quote the PPI documentation, # "we're on our own here". # # This will also preclude us from adding "# TRIAL" because where would # it go? Look, a block package should (in my opinion) not be the only # or top-level package in a file, so the TRIAL comment can be # elsewhere. -- rjbs, 2021-06-12 # # First off, let's make sure we do not already have a version. If the # "version" has a "{" in it, it's just the block, and we're good. # Otherwise, it's going to be a real version and we need to skip. if ($stmt->version !~ /\{/) { $self->log([ "skipping package %s with version %s declared", $stmt->namespace, $stmt->version, ]); next STATEMENT; } # Okay, there's a block (which we have in $block) but no version. So, # we stick a Number / Number::Version in front of the block, then a # space between them. $block->insert_before( $version_token ); $block->insert_before( PPI::Token::Whitespace->new(q{ }) ); $munged = 1; next STATEMENT; } # Now, it's not got a block, but does it already have a version? if (length $stmt->version) { $self->log([ "skipping package %s with version %s declared", $stmt->namespace, $stmt->version, ]); next STATEMENT; } # Oh, good! It's just a normal `package NAME` and we are going to add # VERSION to it. This is stupid, but gets the job done. my $perl = sprintf 'package %s %s;', $package, $version_token->content; $perl .= ' # TRIAL' if $self->zilla->is_trial; my $newstmt = PPI::Token::Unknown->new($perl); Carp::carp("error inserting version in " . $file->name) unless $stmt->parent->__replace_child($stmt, $newstmt); $munged = 1; next STATEMENT; } # the \x20 hack is here so that when we scan *this* document we don't find # an assignment to version; it shouldn't be needed, but it's been annoying # enough in the past that I'm keeping it here until tests are better my $perl = $self->_version_assignment($package, $version); $self->zilla->is_trial and $perl .= ' # TRIAL'; my $clean_version = $version =~ tr/_//dr; if ($version ne $clean_version) { $perl .= "\n" . $self->_version_assignment($package, $clean_version); } $self->log_debug([ 'adding $VERSION assignment to %s in %s', $package, $file->name, ]); my $blank; { my $curr = $stmt; while (1) { # avoid bogus locations due to insert_after $document->flush_locations if $munged; my $curr_line_number = $curr->line_number + 1; my $find = $document->find(sub { my $line = $_[1]->line_number; return $line > $curr_line_number ? undef : $line == $curr_line_number; }); last unless $find and @$find == 1; if ($find->[0]->isa('PPI::Token::Comment')) { $curr = $find->[0]; next; } if ("$find->[0]" =~ /\A\s*\z/) { $blank = $find->[0]; } last; } } $perl = $blank ? "$perl\n" : "\n$perl"; # Why can't I use PPI::Token::Unknown? -- rjbs, 2014-01-11 my $bogus_token = PPI::Token::Comment->new($perl); if ($blank) { Carp::carp("error inserting version in " . $file->name) unless $blank->insert_after($bogus_token); $blank->delete; } else { my $method = $self->die_on_line_insertion ? 'log_fatal' : 'log'; $self->$method([ 'no blank line for $VERSION after package %s statement in %s line %s', $stmt->namespace, $file->name, $stmt->line_number, ]); Carp::carp("error inserting version in " . $file->name) unless $stmt->insert_after($bogus_token); } $munged = 1; } # the document is no longer correct; it must be reparsed before it can be # used again, so we can't just save_ppi_document_to_file # Maybe we want a way to clear the cache for the old form, though... # -- rjbs, 2016-04-24 $file->content($document->serialize) if $munged; return; } __PACKAGE__->meta->make_immutable; 1; #pod =head1 SEE ALSO #pod #pod Core Dist::Zilla plugins: #pod L, #pod L, #pod L. #pod #pod Other Dist::Zilla plugins: #pod L inserts version #pod numbers using C and without changing line numbers #pod #pod =cut __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::PkgVersion - add a $VERSION to your packages =head1 VERSION version 6.032 =head1 SYNOPSIS in dist.ini [PkgVersion] =head1 DESCRIPTION This plugin will add lines like the following to each package in each Perl module or program (more or less) within the distribution: $MyModule::VERSION = '0.001'; or { our $VERSION = '0.001'; } ...where 0.001 is the version of the dist, and MyModule is the name of the package being given a version. (In other words, it always uses fully-qualified names to assign versions.) It will skip any package declaration that includes a newline between the C keyword and the package name, like: package Foo::Bar; This sort of declaration is also ignored by the CPAN toolchain, and is typically used when doing monkey patching or other tricky things. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 die_on_existing_version If true, then when PkgVersion sees an existing C<$VERSION> assignment, it will throw an exception rather than skip the file. This attribute defaults to false. =head2 die_on_line_insertion By default, PkgVersion looks for a blank line after each C statement. If it finds one, it inserts the C<$VERSION> assignment on that line. If it doesn't, it will insert a new line, which means the shipped copy of the module will have different line numbers (off by one) than the source. If C is true, PkgVersion will raise an exception rather than insert a new line. =head2 use_package This option, if true, will not insert an assignment to C<$VERSION> but will replace the existing C declaration with one that includes a version like: package Module::Name 0.001; =head2 use_our The idea here was to insert C<< { our $VERSION = '0.001'; } >> instead of C<< $Module::Name::VERSION = '0.001'; >>. It turns out that this causes problems with some analyzers. Use of this feature is deprecated. Something else will replace it in the future. =head2 use_begin If true, the version assignment is wrapped in a BEGIN block. This may help in rare cases, such as when DynaLoader has to be called at BEGIN time, and requires VERSION. This option should be needed rarely. Also note that assigning to C<$VERSION> before the module has finished compiling can lead to confused behavior with attempts to determine whether a module was successfully loaded on perl v5.8. =head2 finder =for stopwords FileFinder This is the name of a L for finding modules to edit. The default value is C<:InstallModules> and C<:ExecFiles>; this option can be used more than once. Other predefined finders are listed in L. You can define your own with the L<[FileFinder::ByName]|Dist::Zilla::Plugin::FileFinder::ByName> and L<[FileFinder::Filter]|Dist::Zilla::Plugin::FileFinder::Filter> plugins. =head1 SEE ALSO Core Dist::Zilla plugins: L, L, L. Other Dist::Zilla plugins: L inserts version numbers using C and without changing line numbers =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/MetaYAML.pm000644 000765 000024 00000007432 14624411017 021502 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::MetaYAML 6.032; # ABSTRACT: produce a META.yml use Moose; with 'Dist::Zilla::Role::FileGatherer'; use Dist::Zilla::Pragmas; use Try::Tiny; use namespace::autoclean; #pod =head1 DESCRIPTION #pod #pod This plugin will add a F file to the distribution. #pod #pod For more information on this file, see L and L. #pod #pod =attr filename #pod #pod If given, parameter allows you to specify an alternate name for the generated #pod file. It defaults, of course, to F. #pod #pod =cut has filename => ( is => 'ro', isa => 'Str', default => 'META.yml', ); sub gather_files { my ($self, $arg) = @_; require Dist::Zilla::File::FromCode; require YAML::Tiny; require CPAN::Meta::Converter; CPAN::Meta::Converter->VERSION(2.101550); # improved downconversion require CPAN::Meta::Validator; CPAN::Meta::Validator->VERSION(2.101550); # improved downconversion my $zilla = $self->zilla; my $file = Dist::Zilla::File::FromCode->new({ name => $self->filename, code_return_type => 'text', code => sub { my $distmeta = $zilla->distmeta; my $validator = CPAN::Meta::Validator->new($distmeta); unless ($validator->is_valid) { my $msg = "Invalid META structure. Errors found:\n"; $msg .= join( "\n", $validator->errors ); $self->log_fatal($msg); } my $converter = CPAN::Meta::Converter->new($distmeta); my $output = $converter->convert(version => '1.4'); $output->{x_serialization_backend} = sprintf '%s version %s', 'YAML::Tiny', YAML::Tiny->VERSION; my $yaml = try { YAML::Tiny->new($output)->write_string; # text! } catch { $self->log_fatal("Could not create YAML string: " . YAML::Tiny->errstr) }; return $yaml; }, }); $self->add_file($file); return; } __PACKAGE__->meta->make_immutable; 1; #pod =head1 SEE ALSO #pod #pod Core Dist::Zilla plugins: #pod L<@Basic|Dist::Zilla::PluginBundle::Basic>, #pod L. #pod #pod Dist::Zilla roles: #pod L. #pod #pod Other modules: #pod L, #pod L, L. #pod #pod =cut __END__ =pod =encoding UTF-8 =head1 NAME Dist::Zilla::Plugin::MetaYAML - produce a META.yml =head1 VERSION version 6.032 =head1 DESCRIPTION This plugin will add a F file to the distribution. For more information on this file, see L and L. =head1 PERL VERSION This module should work on any version of perl still receiving updates from the Perl 5 Porters. This means it should work on any version of perl released in the last two to three years. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 filename If given, parameter allows you to specify an alternate name for the generated file. It defaults, of course, to F. =head1 SEE ALSO Core Dist::Zilla plugins: L<@Basic|Dist::Zilla::PluginBundle::Basic>, L. Dist::Zilla roles: L. Other modules: L, L, L. =head1 AUTHOR Ricardo SIGNES 😏 =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/FileFinder/000755 000765 000024 00000000000 14624411017 021574 5ustar00rjbsstaff000000 000000 Dist-Zilla-6.032/lib/Dist/Zilla/Plugin/TemplateModule.pm000644 000765 000024 00000012032 14624411017 023042 0ustar00rjbsstaff000000 000000 package Dist::Zilla::Plugin::TemplateModule 6.032; # ABSTRACT: a simple module-from-template plugin use Moose; with 'Dist::Zilla::Role::ModuleMaker', 'Dist::Zilla::Role::TextTemplate'; use Dist::Zilla::Pragmas; use Dist::Zilla::Path; use namespace::autoclean; use autodie; use Sub::Exporter::ForMethods; use Data::Section 0.200002 # encoding and bytes { installer => Sub::Exporter::ForMethods::method_installer }, '-setup'; use Dist::Zilla::File::InMemory; #pod =head1 MINTING CONFIGURATION #pod #pod This module is part of the standard configuration of the default L #pod Minting Profile, and all profiles that don't set a custom ':DefaultModuleMaker' #pod so you don't need to normally do anything to configure it. #pod #pod dzil new Some::Module #pod # creates ./Some-Module/* #pod # creates ./Some-Module/lib/Some/Module.pm #pod #pod However, for those who wish to configure this ( or any subclasses ) this is #pod presently required: #pod #pod [TemplateModule / :DefaultModuleMaker] #pod ; template = SomeFile.pm #pod #pod =head1 DESCRIPTION #pod #pod This is a L used for creating new #pod Perl modules files when minting a new dist with C. It uses #pod L (via L) to render a template #pod into a Perl module. The template is given two variables for use in rendering: #pod C<$name>, the module name; and C<$dist>, the Dist::Zilla object. The module is #pod always created as a file under F<./lib>. #pod #pod By default, the template looks something like this: #pod #pod use strict; #pod use warnings; #pod package {{ $name }}; #pod #pod 1; #pod #pod =attr template #pod #pod The C