1#!/usr/bin/perl -w
2
3# Copyright 2008, 2009, 2010, 2011, 2012, 2014, 2015, 2017 Kevin Ryde
4
5# This file is part of Perl-Critic-Pulp.
6
7# Perl-Critic-Pulp is free software; you can redistribute it and/or
8# modify it under the terms of the GNU General Public License as published
9# by the Free Software Foundation; either version 3, or (at your option) any
10# later version.
11#
12# Perl-Critic-Pulp is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
15# Public License for more details.
16#
17# You should have received a copy of the GNU General Public License along
18# with Perl-Critic-Pulp.  If not, see <http://www.gnu.org/licenses/>.
19
20use 5.006;
21use strict;
22use warnings;
23use ExtUtils::MakeMaker;
24
25WriteMakefile
26  (NAME         => 'Perl::Critic::Pulp',
27   ABSTRACT     => 'Some add-on policies for Perl::Critic.',
28   VERSION_FROM => 'lib/Perl/Critic/Pulp.pm',
29   AUTHOR       => 'Kevin Ryde <user42_kevin@yahoo.com.au>',
30   LICENSE      => 'gpl_3',
31   SIGN         => 1,
32   MIN_PERL_VERSION => '5.006',
33
34   PREREQ_PM => {
35                 # 1.220 for its incompatible PPI::Statement::Sub->prototype()
36                 'PPI' => '1.220',
37                 'PPI::Document' => 0,
38                 # actually PPI::Dumper only used in the .t scripts if
39                 # there's an error ...
40                 'PPI::Dumper' => 0,
41
42                 # 1.082 or some such for new style parameter specs
43                 # 1.084 for highest_explicit_perl_version() method
44                 'Perl::Critic' => '1.084',
45                 # parts of Perl::Critic, used so name them explicitly
46                 'Perl::Critic::Policy' => '1.084',
47                 # Utils 1.100 for precedence_of() supporting -f etc filetests
48                 'Perl::Critic::Utils' => '1.100',
49                 'Perl::Critic::Utils::PPI' => 0,
50                 'Perl::Critic::Violation' => 0,
51
52                 # Required by Perl::Critic itself anyway.
53                 # 1.02 for avoiding leaks in perl 5.8, probably
54                 # something newer has more merit though
55                 'IO::String' => '1.02',
56
57                 # Also used by Perl::Critic itself.  Maybe should
58                 # require 0.24 for various XS bugfixes.
59                 'List::MoreUtils' => '0.24', # 0.24 for stack growing, maybe
60
61                 # Could make this optional, but it doesn't drag in anything
62                 # outrageous.
63                 'Pod::MinimumVersion' => 50, # v.50 fix text in =item etc
64
65                 # Builtin in recent perl anyway.
66                 'List::Util' => 0,
67                 'Test::More' => 0,
68                 'Scalar::Util' => 0,
69
70                 # Required by Perl::Critic itself anyway,
71                 # and comes with perl 5.10 anyway too.
72                 'version' => 0,
73
74                 'Pod::Escapes' => 0,
75                 'Pod::Parser' => 0,
76                 'Pod::ParseLink' => 0,
77                },
78
79   META_MERGE =>
80   { 'meta-spec' => { version => 2 },
81     resources =>
82     { homepage => 'http://user42.tuxfamily.org/perl-critic-pulp/index.html',
83       license  => 'http://www.gnu.org/licenses/gpl.html',
84     },
85     # don't index "package Perl::MinimumVersion" additions there
86     no_index => { package => [ 'Perl::MinimumVersion' ],
87                   directory=>['devel','xt'],
88                 },
89
90     recommends => { 'Perl::MinimumVersion' => 0,
91                   },
92     prereqs =>
93     { test =>
94       { suggests =>
95         { 'Perl::MinimumVersion' => 0,
96         },
97       },
98     },
99
100     optional_features =>
101     { maximum_policies =>
102       { description => 'Have the policies check as much as possible.',
103         prereqs =>
104         { runtime =>
105           { requires => { 'Perl::MinimumVersion' => 0,
106                         },
107           },
108         },
109       },
110     },
111   },
112  );
113
114
115# maximum_devel =>
116# { description => 'Stuff used variously for development.',
117#   requires => { 'PPI::Document' => 0,
118#                 'Perl::MinimumVersion' => 0,
119#                 'Encode' => 0,
120#                 'Perl6::Slurp' => 0,
121#                 'Regexp::Common' => 0,
122#                 'Devel::Mallinfo' => 0,
123#                 'IO::Uncompress::AnyInflate' => 0,
124#                 'lib::abs' => 0,
125#                 'IO::String' => 0,
126#                 'Digest::MD5' => 0,
127#                 'I18N::Langinfo' => 0,
128#                 'Locale::TextDomain' => 0,
129#                 'File::Locate' => 0,
130#
131#                 'File::Locate::Iterator' => 0, # mine
132#                 # parts of File::Locate::Iterator
133#                 'Iterator::Simple' => 0,
134#                 'Iterator::Simple::Locate' => 0,
135#               },
136# },
137