| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
20
|
|
|
20
|
|
16622836
|
use 5.014; # because we use the 'non-destructive substitution' feature (s///r) |
|
|
20
|
|
|
|
|
237
|
|
|
2
|
20
|
|
|
20
|
|
139
|
use strict; |
|
|
20
|
|
|
|
|
59
|
|
|
|
20
|
|
|
|
|
463
|
|
|
3
|
20
|
|
|
20
|
|
113
|
use warnings; |
|
|
20
|
|
|
|
|
68
|
|
|
|
20
|
|
|
|
|
1384
|
|
|
4
|
|
|
|
|
|
|
package Dist::Zilla::PluginBundle::Author::TABULO; # git description: v0.197-45-g838f7b1 |
|
5
|
|
|
|
|
|
|
# vim: set ts=2 sts=2 sw=2 tw=115 et : |
|
6
|
|
|
|
|
|
|
# ABSTRACT: A plugin bundle for distributions built by TABULO |
|
7
|
|
|
|
|
|
|
# BASED_ON: Dist::Zilla::PluginBundle::Author::ETHER |
|
8
|
|
|
|
|
|
|
# KEYWORDS: author bundle distribution tool |
|
9
|
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
our $VERSION = '0.198'; |
|
11
|
|
|
|
|
|
|
# AUTHORITY |
|
12
|
|
|
|
|
|
|
|
|
13
|
20
|
|
|
20
|
|
12360
|
use Data::Printer; # For DEBUG. TODO: Comment this out for a normal release. |
|
|
20
|
|
|
|
|
571299
|
|
|
|
20
|
|
|
|
|
155
|
|
|
14
|
20
|
|
|
20
|
|
2793
|
use Scalar::Util qw(refaddr reftype); |
|
|
20
|
|
|
|
|
56
|
|
|
|
20
|
|
|
|
|
1346
|
|
|
15
|
20
|
|
|
20
|
|
9464
|
use Scalar::Does -constants, does => { -as => 'it_does' }; |
|
|
20
|
|
|
|
|
2019167
|
|
|
|
20
|
|
|
|
|
359
|
|
|
16
|
20
|
|
|
20
|
|
52678
|
use List::Util 1.45 qw(first all any none pairs pairgrep unpairs uniq); |
|
|
20
|
|
|
|
|
499
|
|
|
|
20
|
|
|
|
|
2181
|
|
|
17
|
20
|
|
|
20
|
|
8719
|
use List::MoreUtils qw(arrayify); |
|
|
20
|
|
|
|
|
131792
|
|
|
|
20
|
|
|
|
|
194
|
|
|
18
|
20
|
|
|
20
|
|
29935
|
use Hash::MoreUtils qw(slice_grep); |
|
|
20
|
|
|
|
|
40683
|
|
|
|
20
|
|
|
|
|
1553
|
|
|
19
|
|
|
|
|
|
|
|
|
20
|
|
|
|
|
|
|
|
|
21
|
|
|
|
|
|
|
|
|
22
|
20
|
|
|
20
|
|
10189
|
use Dist::Zilla::PluginBundle::Author::TABULO::Config qw(configuration detect_settings); |
|
|
20
|
|
|
|
|
96
|
|
|
|
20
|
|
|
|
|
397
|
|
|
23
|
20
|
|
|
20
|
|
13811
|
use Dist::Zilla::Util; |
|
|
20
|
|
|
|
|
54421
|
|
|
|
20
|
|
|
|
|
664
|
|
|
24
|
20
|
|
|
20
|
|
234
|
use Module::Runtime qw(require_module use_module); |
|
|
20
|
|
|
|
|
60
|
|
|
|
20
|
|
|
|
|
212
|
|
|
25
|
20
|
|
|
20
|
|
9332
|
use Devel::CheckBin 'can_run'; |
|
|
20
|
|
|
|
|
1938744
|
|
|
|
20
|
|
|
|
|
1563
|
|
|
26
|
20
|
|
|
20
|
|
199
|
use Path::Tiny; |
|
|
20
|
|
|
|
|
50
|
|
|
|
20
|
|
|
|
|
989
|
|
|
27
|
20
|
|
|
20
|
|
9261
|
use CPAN::Meta::Requirements; |
|
|
20
|
|
|
|
|
75322
|
|
|
|
20
|
|
|
|
|
642
|
|
|
28
|
20
|
|
|
20
|
|
187
|
use Term::ANSIColor 'colored'; |
|
|
20
|
|
|
|
|
53
|
|
|
|
20
|
|
|
|
|
1554
|
|
|
29
|
|
|
|
|
|
|
eval { +require Win32::Console::ANSI } if $^O eq 'MSWin32'; |
|
30
|
20
|
|
|
20
|
|
152
|
use Config; |
|
|
20
|
|
|
|
|
54
|
|
|
|
20
|
|
|
|
|
1560
|
|
|
31
|
|
|
|
|
|
|
|
|
32
|
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
# multivalue aliases. name => [ @aliases ] |
|
34
|
|
|
|
|
|
|
our %PINFO = ( |
|
35
|
|
|
|
|
|
|
commit_files_from_release => { multivalue =>1, aka => 'commit_file_from_release', }, |
|
36
|
|
|
|
|
|
|
copy_files_from_release => { multivalue =>1, aka => 'copy_file_from_release', }, |
|
37
|
|
|
|
|
|
|
installers => { multivalue =>1, aka => 'installer', }, |
|
38
|
|
|
|
|
|
|
never_gather => { multivalue =>1, aka => 'do_not_gather', }, |
|
39
|
|
|
|
|
|
|
spellcheck_dirs => { multivalue =>1, aka => 'spellcheck_dir', }, |
|
40
|
|
|
|
|
|
|
stopwords => { multivalue =>1, aka => 'stopword', }, |
|
41
|
|
|
|
|
|
|
); |
|
42
|
|
|
|
|
|
|
|
|
43
|
|
|
|
|
|
|
use vars ( |
|
44
|
20
|
|
|
|
|
1540
|
'%PINFO', # Will be looked up by mhs_dictionnary() -- which is a general purpose 'has-munger' |
|
45
|
|
|
|
|
|
|
'%PROPS', # Will be populated by mhs_dictionnary() -- which is a general purpose 'has-munger' |
|
46
|
|
|
|
|
|
|
'%mungers', |
|
47
|
20
|
|
|
20
|
|
139
|
); |
|
|
20
|
|
|
|
|
61
|
|
|
48
|
|
|
|
|
|
|
|
|
49
|
|
|
|
|
|
|
|
|
50
|
20
|
|
|
|
|
346
|
use Banal::Util::Mini qw( hash_access inverse_dict maybe_kv peek |
|
51
|
20
|
|
|
20
|
|
151
|
tidy_arrayify sanitize_env_var_name suffixed ); |
|
|
20
|
|
|
|
|
51
|
|
|
52
|
20
|
|
|
20
|
|
36464
|
use Banal::Dist::Util::Pause qw(pause_config); |
|
|
20
|
|
|
|
|
17405
|
|
|
|
20
|
|
|
|
|
141
|
|
|
53
|
20
|
|
|
20
|
|
12186
|
use Banal::Moosy::Mungers qw(mhs_dictionary mhs_lazy_ro mhs_fallbacks); |
|
|
20
|
|
|
|
|
46752
|
|
|
|
20
|
|
|
|
|
144
|
|
|
54
|
|
|
|
|
|
|
BEGIN { |
|
55
|
|
|
|
|
|
|
%mungers = ( |
|
56
|
40
|
|
|
|
|
61530
|
haz => [ sub {; mhs_lazy_ro() } ], |
|
57
|
400
|
|
|
|
|
27299
|
haz_bool => [ sub {; mhs_lazy_ro(isa=>'Bool') } ], |
|
58
|
0
|
|
|
|
|
0
|
haz_int => [ sub {; mhs_lazy_ro(isa=>'Int') } ], |
|
59
|
340
|
|
|
|
|
23086
|
haz_str => [ sub {; mhs_lazy_ro(isa=>'Str') } ], |
|
60
|
120
|
|
|
|
|
9630
|
haz_strs => [ sub {; mhs_lazy_ro(isa=>'ArrayRef[Str]', traits=>['Array'] ) } ], |
|
61
|
20
|
|
|
20
|
|
11648
|
haz_hash => [ sub {; mhs_lazy_ro(isa=>'HashRef', traits=>['Hash'] ) } ], |
|
|
120
|
|
|
|
|
8455
|
|
|
62
|
|
|
|
|
|
|
); |
|
63
|
120
|
|
|
|
|
1332
|
push @{$mungers{$_}},( |
|
64
|
1020
|
|
|
|
|
37080
|
sub {; mhs_dictionary( src=> \%PINFO) }, |
|
65
|
1020
|
|
|
|
|
78582
|
sub {; mhs_fallbacks() }, |
|
66
|
|
|
|
|
|
|
# sub {; mhs_dictionary( dest=>\%PROPS) }, |
|
67
|
20
|
|
|
|
|
166
|
) for (sort keys %mungers) |
|
68
|
|
|
|
|
|
|
} |
|
69
|
|
|
|
|
|
|
|
|
70
|
|
|
|
|
|
|
|
|
71
|
|
|
|
|
|
|
|
|
72
|
|
|
|
|
|
|
# satisfy requirements by the consumed banal role : ..::Role::PluginBundle::Easier |
|
73
|
|
|
|
|
|
|
sub _extra_args; |
|
74
|
|
|
|
|
|
|
sub payload; |
|
75
|
|
|
|
|
|
|
|
|
76
|
|
|
|
|
|
|
#use Types::Standard; |
|
77
|
|
|
|
|
|
|
#use Type::Utils qw(enum subtype where class_type); |
|
78
|
20
|
|
|
20
|
|
8909
|
use Moose::Util::TypeConstraints qw(enum subtype where class_type); |
|
|
20
|
|
|
|
|
2503882
|
|
|
|
20
|
|
|
|
|
273
|
|
|
79
|
20
|
|
|
20
|
|
27840
|
use Moose; |
|
|
20
|
|
|
|
|
2593603
|
|
|
|
20
|
|
|
|
|
197
|
|
|
80
|
20
|
|
|
20
|
|
164051
|
use MooseX::MungeHas { %mungers }; |
|
|
20
|
|
|
|
|
45741
|
|
|
|
20
|
|
|
|
|
262
|
|
|
81
|
|
|
|
|
|
|
with ( 'Banal::Dist::Zilla::Role::PluginBundle::Easier', |
|
82
|
|
|
|
|
|
|
'Banal::Role::Fallback::Moo', |
|
83
|
|
|
|
|
|
|
); |
|
84
|
20
|
|
|
20
|
|
112274
|
use namespace::autoclean; |
|
|
20
|
|
|
|
|
64
|
|
|
|
20
|
|
|
|
|
232
|
|
|
85
|
|
|
|
|
|
|
|
|
86
|
|
|
|
|
|
|
# Forward subroutine declarations (as needed) |
|
87
|
|
|
|
|
|
|
sub _msg; |
|
88
|
|
|
|
|
|
|
|
|
89
|
|
|
|
|
|
|
|
|
90
|
|
|
|
|
|
|
# plural values (array-ref) expected |
|
91
|
|
|
|
|
|
|
sub kvh_promote_mv(@) { |
|
92
|
40
|
50
|
|
40
|
0
|
212
|
my $fields = ref ($_[0]) eq 'ARRAY' ? shift : []; |
|
93
|
|
|
|
|
|
|
|
|
94
|
40
|
|
|
|
|
469
|
map {; |
|
95
|
240
|
|
|
|
|
980
|
my ($k, $v) = ($_->key, $_->value); # 'pairs' come handy |
|
96
|
240
|
50
|
|
|
|
1313
|
local %_ = (ref($v) eq 'HASH') ? (%$v) : (); |
|
97
|
240
|
|
|
|
|
900
|
my @nv = tidy_arrayify( @_{@$fields} ); # We flatten a hash slice that gathers any existing values from any of the given fields |
|
98
|
240
|
|
|
|
|
3539
|
($k => [@nv] ) |
|
99
|
|
|
|
|
|
|
} pairs @_ |
|
100
|
|
|
|
|
|
|
} |
|
101
|
|
|
|
|
|
|
|
|
102
|
|
|
|
|
|
|
# Scalar values expected |
|
103
|
|
|
|
|
|
|
sub kvh_promote(@) { |
|
104
|
0
|
0
|
|
0
|
0
|
0
|
my $fields = ref ($_[0]) eq 'ARRAY' ? shift : []; |
|
105
|
|
|
|
|
|
|
|
|
106
|
0
|
|
|
|
|
0
|
map {; |
|
107
|
0
|
|
|
|
|
0
|
my ($k, $v) = ($_->key, $_->value); # 'pairs' come handy |
|
108
|
0
|
0
|
|
|
|
0
|
local %_ = (ref($v) eq 'HASH') ? (%$v) : (); |
|
109
|
0
|
|
|
0
|
|
0
|
my $nv = first { defined } @_{@$fields}; |
|
|
0
|
|
|
|
|
0
|
|
|
110
|
0
|
|
|
|
|
0
|
($_->key, $nv) |
|
111
|
|
|
|
|
|
|
} pairs @_ |
|
112
|
|
|
|
|
|
|
} |
|
113
|
|
|
|
|
|
|
|
|
114
|
|
|
|
|
|
|
|
|
115
|
|
|
|
|
|
|
sub map_name_to_aliases(@) { |
|
116
|
40
|
|
|
40
|
0
|
523
|
kvh_promote_mv( [qw(aka alias aliases) ], @_ ) |
|
117
|
|
|
|
|
|
|
} |
|
118
|
|
|
|
|
|
|
|
|
119
|
|
|
|
|
|
|
# multivalue aliases. name => [ @aliases ] |
|
120
|
|
|
|
|
|
|
our %AKA = map_name_to_aliases (%PINFO); |
|
121
|
|
|
|
|
|
|
our %AKA_MV = map_name_to_aliases slice_grep { $_{$_}->{multivalue} // 0 } (\%PINFO) ; |
|
122
|
|
|
|
|
|
|
our %MV_ALIASES = inverse_dict(%AKA); |
|
123
|
|
|
|
|
|
|
|
|
124
|
|
|
|
|
|
|
|
|
125
|
|
|
|
|
|
|
# multivalue aliases |
|
126
|
|
|
|
|
|
|
# our %MV_ALIASES = ( |
|
127
|
|
|
|
|
|
|
# commit_file_from_release => 'commit_files_from_release', |
|
128
|
|
|
|
|
|
|
# copy_file_from_release => 'copy_files_from_release', |
|
129
|
|
|
|
|
|
|
# installer => 'installers', |
|
130
|
|
|
|
|
|
|
# do_not_gather => 'never_gather', |
|
131
|
|
|
|
|
|
|
# spellcheck_dir => 'spellcheck_dirs', |
|
132
|
|
|
|
|
|
|
# stopword => 'stopwords', |
|
133
|
|
|
|
|
|
|
# ); |
|
134
|
|
|
|
|
|
|
|
|
135
|
|
|
|
|
|
|
# TABULO : |
|
136
|
|
|
|
|
|
|
# DZIL wants us to declare multi-value INI parameters like below |
|
137
|
|
|
|
|
|
|
# We declare both singular and plural forms for the same things to reduce hassle. |
|
138
|
|
|
|
|
|
|
sub mvp_multivalue_args { |
|
139
|
|
|
|
|
|
|
map {; |
|
140
|
|
|
|
|
|
|
($_, $_.'_implicit') |
|
141
|
|
|
|
|
|
|
} (%MV_ALIASES); |
|
142
|
|
|
|
|
|
|
} |
|
143
|
|
|
|
|
|
|
|
|
144
|
|
|
|
|
|
|
|
|
145
|
|
|
|
|
|
|
# our %MV_IMPLICIT = map {; ($_->key . '_implicit' => $_->value . '_implicit' ) } |
|
146
|
39
|
|
|
39
|
0
|
6964
|
sub mvp_aliases { +{ %MV_ALIASES } } |
|
147
|
|
|
|
|
|
|
|
|
148
|
|
|
|
|
|
|
|
|
149
|
|
|
|
|
|
|
# plugins that use the network when they run |
|
150
|
|
|
|
|
|
|
sub _network_plugins |
|
151
|
|
|
|
|
|
|
{ |
|
152
|
5
|
|
|
5
|
|
4585639
|
qw( |
|
153
|
|
|
|
|
|
|
PromptIfStale |
|
154
|
|
|
|
|
|
|
Test::Pod::LinkCheck |
|
155
|
|
|
|
|
|
|
Test::Pod::No404s |
|
156
|
|
|
|
|
|
|
Git::Remote::Check |
|
157
|
|
|
|
|
|
|
CheckPrereqsIndexed |
|
158
|
|
|
|
|
|
|
CheckIssues |
|
159
|
|
|
|
|
|
|
UploadToCPAN |
|
160
|
|
|
|
|
|
|
Git::Push |
|
161
|
|
|
|
|
|
|
); |
|
162
|
|
|
|
|
|
|
} |
|
163
|
|
|
|
|
|
|
|
|
164
|
|
|
|
|
|
|
# |
|
165
|
|
|
|
|
|
|
# NOTE: 'haz' is our shorthand form of 'has' created with the help of 'MooseX::MungeHas' and some of our own craft. |
|
166
|
|
|
|
|
|
|
# |
|
167
|
|
|
|
|
|
|
# It reduces a lot of the noise, which also means you may immediately notice what is going on. |
|
168
|
|
|
|
|
|
|
|
|
169
|
|
|
|
|
|
|
# The specific munger function we are using here 'mhs_lazy_ro_with_fallbacks' implies : |
|
170
|
|
|
|
|
|
|
# (is=>ro, lazy=1, initargs=>undef) |
|
171
|
|
|
|
|
|
|
# |
|
172
|
|
|
|
|
|
|
# Also, it will automatically create a 'default' subroutine that will invoke the 'fallback' method (defined below for this class). |
|
173
|
|
|
|
|
|
|
# In this particular case, our 'fallback' method will make use of Config settings, which supports author-specific default values, |
|
174
|
|
|
|
|
|
|
# and falling back to global defaults if necessary. It also supports the notions of : |
|
175
|
|
|
|
|
|
|
# - a preffered default ('apriori' parameter), which will be tried before going into the fallbak mechanism described above. |
|
176
|
|
|
|
|
|
|
# - an ultimate default ('def' parameter), which will be used if the Config fallback mechanism could not find an applicable default setting. |
|
177
|
|
|
|
|
|
|
# |
|
178
|
|
|
|
|
|
|
# When present, the 'apriori/mid/def' parameters should be one of: |
|
179
|
|
|
|
|
|
|
# - a SCALAR value |
|
180
|
|
|
|
|
|
|
# _ a subroutine reference (which will be invoked to use its return value) |
|
181
|
|
|
|
|
|
|
# - An reference to an array |
|
182
|
|
|
|
|
|
|
# |
|
183
|
|
|
|
|
|
|
# Also, the fallback method also supports specifying a set of aliases (via 'aka' or 'alias' parameters) |
|
184
|
|
|
|
|
|
|
# |
|
185
|
|
|
|
|
|
|
|
|
186
|
|
|
|
|
|
|
|
|
187
|
|
|
|
|
|
|
haz_bool airplane =>( def => 0, ); |
|
188
|
|
|
|
|
|
|
haz_bool fake_release =>( apriori => sub { $ENV{FAKE_RELEASE} }, def => 0, ); |
|
189
|
|
|
|
|
|
|
haz_bool surgical_podweaver =>( def => 0, ); |
|
190
|
|
|
|
|
|
|
haz_bool commit_copied =>( def => 1, ); # + by TABULO |
|
191
|
|
|
|
|
|
|
haz_bool verify_phases =>( def => 0, ); # + by TABULO |
|
192
|
|
|
|
|
|
|
haz_bool allow_insecure_operations =>( def => 0, ); # + by TABULO |
|
193
|
|
|
|
|
|
|
haz_bool install_release_from_cpan =>( def => 0, ); # + by TABULO |
|
194
|
|
|
|
|
|
|
|
|
195
|
|
|
|
|
|
|
|
|
196
|
|
|
|
|
|
|
haz server =>( def => 'github', isa => enum([qw(github bitbucket gitmo p5sagit catagits none)]),); |
|
197
|
|
|
|
|
|
|
haz_str licence =>( def => sub { $_[0]->spelling eq 'GB' ? 'LICENCE' : 'LICENSE' }, aka=>[qw( license) ], ); |
|
198
|
39
|
|
|
39
|
0
|
1687
|
sub license { shift->licence(@_) } |
|
199
|
|
|
|
|
|
|
haz_str max_target_perl =>( def => '5.006', aka=> 'Test::MinimumVersion.max_target_perl', ); |
|
200
|
|
|
|
|
|
|
haz_str portability_options =>( def => '', aka=>[qw( Portability.options Test::Portability.options )],); |
|
201
|
|
|
|
|
|
|
haz_str spelling =>( def => 'US', ); # + by TABULO |
|
202
|
|
|
|
|
|
|
haz_str static_install_mode =>( def => 'no', aka => 'StaticInstall.mode', ); |
|
203
|
|
|
|
|
|
|
haz_str weaver_config =>( def => sub { $_[0]->_bundle_ini_section_name }, ); |
|
204
|
|
|
|
|
|
|
|
|
205
|
|
|
|
|
|
|
|
|
206
|
|
|
|
|
|
|
# Changes file handling |
|
207
|
|
|
|
|
|
|
haz nextrelease_entry_columns =>( def => 10, isa => subtype('Int', where { $_ > 0 && $_ < 20 }), |
|
208
|
|
|
|
|
|
|
aka=>[qw( changes_version_columns |
|
209
|
|
|
|
|
|
|
)],); |
|
210
|
|
|
|
|
|
|
|
|
211
|
|
|
|
|
|
|
haz_str nextrelease_entry_time_zone =>( def =>'UTC', |
|
212
|
|
|
|
|
|
|
aka=>[qw( changes_version_time_zone |
|
213
|
|
|
|
|
|
|
changes_version_timezone |
|
214
|
|
|
|
|
|
|
nextrelease_entry_timezone |
|
215
|
|
|
|
|
|
|
NextRelease.time_zone |
|
216
|
|
|
|
|
|
|
)],); |
|
217
|
|
|
|
|
|
|
|
|
218
|
|
|
|
|
|
|
haz_str nextrelease_entry_format =>( |
|
219
|
|
|
|
|
|
|
def=>sub {; '%-' . ($_[0]->nextrelease_entry_columns - 2) . 'v %{yyyy-MM-dd HH:mm:ss\'Z\'}d%{ (TRIAL RELEASE)}T' }, |
|
220
|
|
|
|
|
|
|
aka=>[qw( changes_version_format |
|
221
|
|
|
|
|
|
|
NextRelease.format )], ); |
|
222
|
|
|
|
|
|
|
|
|
223
|
|
|
|
|
|
|
# $VERSION management |
|
224
|
|
|
|
|
|
|
haz_bool bump_version_global =>( def => 1, |
|
225
|
|
|
|
|
|
|
aka=>[qw( BumpVersionAfterRelease.global |
|
226
|
|
|
|
|
|
|
BumpVersionAfterRelease::Transitional.global )],); # + by TABULO |
|
227
|
|
|
|
|
|
|
|
|
228
|
|
|
|
|
|
|
haz_str fallback_version_provider =>( def => 'Git::NextVersion', |
|
229
|
|
|
|
|
|
|
aka=> 'RewriteVersion::Transitional.fallback_version_provider', ); |
|
230
|
|
|
|
|
|
|
|
|
231
|
|
|
|
|
|
|
haz_bool rewrite_version_global =>( def => 1, |
|
232
|
|
|
|
|
|
|
aka=>[qw( RewriteVersion.global |
|
233
|
|
|
|
|
|
|
RewriteVersion::Transitional.global ) ],); # + by TABULO |
|
234
|
|
|
|
|
|
|
|
|
235
|
|
|
|
|
|
|
haz_str version_regexp =>( def => '^v([\d._]+)(-TRIAL)?$', |
|
236
|
|
|
|
|
|
|
aka=>[qw( RewriteVersion::Transitional.version_regexp |
|
237
|
|
|
|
|
|
|
Git::NextVersion.version_regexp )], ); |
|
238
|
|
|
|
|
|
|
|
|
239
|
|
|
|
|
|
|
|
|
240
|
|
|
|
|
|
|
# VCS options, added by TABULO [ 2018-01-16 ] |
|
241
|
|
|
|
|
|
|
haz_str tag_format => ( def => 'v%v', aka => 'Git::Tag.tag_format', ); |
|
242
|
|
|
|
|
|
|
haz_str tag_message => ( def => 'v%v%t', aka => 'Git::Tag.tag_message', ); |
|
243
|
|
|
|
|
|
|
haz_str release_snapshot_commit_msg => ( def => '%N-%v%t%n%n%c', ); |
|
244
|
|
|
|
|
|
|
|
|
245
|
|
|
|
|
|
|
# Git information (normally detected automatically). + by TABULO [ 2018-01-16 ] |
|
246
|
|
|
|
|
|
|
haz_str git_remote => ( def => 'origin', ); |
|
247
|
|
|
|
|
|
|
haz_str git_branch => ( def => 'master', ); |
|
248
|
|
|
|
|
|
|
haz_str git_remote_branch => ( def => sub {; shift->git_branch // 'master' }, ); |
|
249
|
|
|
|
|
|
|
|
|
250
|
|
|
|
|
|
|
# Boolean switches for VCS (git, etc) checks,. + by TABULO [ 2018-06-24 ] |
|
251
|
|
|
|
|
|
|
haz_bool check_vcs =>( ); |
|
252
|
|
|
|
|
|
|
haz_bool check_vcs_more =>( def => sub {; $_[0]->check_vcs // !($_[0]->fake_release // 0) }, ); |
|
253
|
|
|
|
|
|
|
|
|
254
|
|
|
|
|
|
|
# The below are UNDOCUMENTED for the moment: |
|
255
|
|
|
|
|
|
|
haz_bool check_vcs_clean =>( def => sub {; $_[0]->check_vcs // 1 }, ); |
|
256
|
|
|
|
|
|
|
haz_bool check_vcs_clean_initial =>( def => sub {; $_[0]->check_vcs_clean // 1 }, ); |
|
257
|
|
|
|
|
|
|
haz_bool check_vcs_clean_after_tests =>( def => sub {; $_[0]->check_vcs_clean // 1 }, ); |
|
258
|
|
|
|
|
|
|
|
|
259
|
|
|
|
|
|
|
haz_bool check_vcs_merge_conflicts =>( def => sub {; $_[0]->check_vcs_more // 1 }, ); |
|
260
|
|
|
|
|
|
|
haz_bool check_vcs_correct_branch =>( def => sub {; $_[0]->check_vcs_more // 1 }, ); |
|
261
|
|
|
|
|
|
|
haz_bool check_vcs_remote_branch =>( def => sub {; $_[0]->check_vcs_more // 1 }, ); |
|
262
|
|
|
|
|
|
|
|
|
263
|
|
|
|
|
|
|
# NOTE: no support yet for depending on a specific version of an installer plugin -- |
|
264
|
|
|
|
|
|
|
# but [PromptIfStale] generally makes that unnecessary |
|
265
|
|
|
|
|
|
|
haz_strs commit_file_after_release =>( |
|
266
|
|
|
|
|
|
|
sort =>1, |
|
267
|
|
|
|
|
|
|
blankers =>'none', |
|
268
|
|
|
|
|
|
|
def => sub { [] }, |
|
269
|
|
|
|
|
|
|
aka => { commit_files_after_release => 'elements' }, |
|
270
|
|
|
|
|
|
|
); |
|
271
|
|
|
|
|
|
|
|
|
272
|
|
|
|
|
|
|
haz_strs copy_file_from_release =>( |
|
273
|
|
|
|
|
|
|
sort =>1, |
|
274
|
|
|
|
|
|
|
blankers =>'none', |
|
275
|
|
|
|
|
|
|
def => sub { [] }, |
|
276
|
|
|
|
|
|
|
aka => { copy_files_from_release => 'elements' }, |
|
277
|
|
|
|
|
|
|
); |
|
278
|
|
|
|
|
|
|
|
|
279
|
|
|
|
|
|
|
haz_strs do_not_gather =>( |
|
280
|
|
|
|
|
|
|
sort =>1, |
|
281
|
|
|
|
|
|
|
blankers =>'none', |
|
282
|
|
|
|
|
|
|
def => sub { [] }, |
|
283
|
|
|
|
|
|
|
aka => { never_gather => 'elements' }, |
|
284
|
|
|
|
|
|
|
); # + by TABULO |
|
285
|
|
|
|
|
|
|
|
|
286
|
|
|
|
|
|
|
haz_strs installer =>( |
|
287
|
|
|
|
|
|
|
blankers =>'none', |
|
288
|
|
|
|
|
|
|
def => sub { [] }, |
|
289
|
|
|
|
|
|
|
aka => { installers => 'elements' }, |
|
290
|
|
|
|
|
|
|
); |
|
291
|
|
|
|
|
|
|
|
|
292
|
|
|
|
|
|
|
#sub spellcheck_dir { $_[0]->spellcheck_dirs } |
|
293
|
|
|
|
|
|
|
haz_strs spellcheck_dirs =>( def => sub { [ qw(bin examples lib script t xt) ] }, |
|
294
|
|
|
|
|
|
|
sort=>1, blankers=>'none', |
|
295
|
|
|
|
|
|
|
aka => 'spellcheck_dir', |
|
296
|
|
|
|
|
|
|
); |
|
297
|
|
|
|
|
|
|
|
|
298
|
|
|
|
|
|
|
|
|
299
|
|
|
|
|
|
|
#sub stopword { $_[0]->stopwords } |
|
300
|
|
|
|
|
|
|
haz_strs stopwords =>( def => sub { [qw(irc)] }, |
|
301
|
|
|
|
|
|
|
sort=>1, blankers=>'none', |
|
302
|
|
|
|
|
|
|
aka => 'stopword', |
|
303
|
|
|
|
|
|
|
); # + by TABULO |
|
304
|
|
|
|
|
|
|
|
|
305
|
|
|
|
|
|
|
|
|
306
|
|
|
|
|
|
|
around commit_files_after_release => sub { |
|
307
|
|
|
|
|
|
|
my $orig = shift; my $self = shift; |
|
308
|
|
|
|
|
|
|
my $cpfr = $self->copy_files_from_release; |
|
309
|
|
|
|
|
|
|
my @extras = arrayify ($self->commit_copied ? $cpfr : [] ); |
|
310
|
|
|
|
|
|
|
my $oresult = $self->$orig(@_); |
|
311
|
|
|
|
|
|
|
|
|
312
|
|
|
|
|
|
|
[ sort(uniq((grep { defined $_} arrayify( $oresult, @extras)))) ]; |
|
313
|
|
|
|
|
|
|
}; |
|
314
|
|
|
|
|
|
|
|
|
315
|
|
|
|
|
|
|
|
|
316
|
|
|
|
|
|
|
# Note: no support yet for depending on a specific version of the plugin -- |
|
317
|
|
|
|
|
|
|
# but [PromptIfStale] generally makes that unnecessary |
|
318
|
|
|
|
|
|
|
haz_bool _keen_on_static_install =>( def => 0, aka => 'keen_on_static_install', ); |
|
319
|
|
|
|
|
|
|
haz_hash _extra_args =>( def => sub { +{} }, aka => 'extra_args', ); |
|
320
|
|
|
|
|
|
|
|
|
321
|
|
|
|
|
|
|
|
|
322
|
|
|
|
|
|
|
# The following attributes are NOT allowed to have AUTHOR SPECIFIC fallbacks |
|
323
|
|
|
|
|
|
|
# 'author_specific => 0' allows us to avoid an infinte loop... |
|
324
|
|
|
|
|
|
|
# -- because the usual fallbacks include known_author_prefs which depend on 'authority' ... |
|
325
|
|
|
|
|
|
|
haz_str authority =>( def => 'cpan:TABULO', author_specific => 0, aka => 'Authority.authority', ); |
|
326
|
|
|
|
|
|
|
haz_bool _no_author_specific_prefs =>( def => 0, author_specific => 0, aka => 'no_author_specific_preferences',); |
|
327
|
|
|
|
|
|
|
haz_hash _known_authors =>( def => sub { +{} }, author_specific => 0, aka => 'known_authors', ); |
|
328
|
|
|
|
|
|
|
|
|
329
|
|
|
|
|
|
|
|
|
330
|
|
|
|
|
|
|
# The following attributes are NOT allowed to have FALLBACKS at all (because they provide the basis for the fallback mechanism) |
|
331
|
|
|
|
|
|
|
haz_hash _defaults =>( default => sub { shift->_config('defaults') // {} }, ); |
|
332
|
|
|
|
|
|
|
haz_hash _settings_detected =>( default => sub { +{ detect_settings(plugin_bundle => shift) } }, ); |
|
333
|
|
|
|
|
|
|
haz_hash _settings =>( default => sub { shift->_config() // +{} }, ); |
|
334
|
|
|
|
|
|
|
haz_hash _author_specific_prefs => ( |
|
335
|
|
|
|
|
|
|
default => sub { |
|
336
|
|
|
|
|
|
|
my $o = $_[0]; |
|
337
|
|
|
|
|
|
|
( $o->_no_author_specific_prefs ? +{} : hash_access( $o->_known_authors, $o->authority, 'prefs') ) // {} |
|
338
|
|
|
|
|
|
|
}, |
|
339
|
|
|
|
|
|
|
); |
|
340
|
|
|
|
|
|
|
|
|
341
|
|
|
|
|
|
|
# The following attributes currently BYPASS the implicit FALLBACK mechanism (for lack of a simple way) |
|
342
|
|
|
|
|
|
|
# haz_bool static_install_dry_run => ( |
|
343
|
|
|
|
|
|
|
# default => sub { |
|
344
|
|
|
|
|
|
|
# my $self = shift; |
|
345
|
|
|
|
|
|
|
# # only set x_static_install using auto mode for distributions where the authority is known to be 'keen on' static install (e.g. ETHER) |
|
346
|
|
|
|
|
|
|
# # (for all other distributions, set explicitly to on or off) |
|
347
|
|
|
|
|
|
|
# # Note that this is just the default; if a dist.ini changed these values, ConfigSlicer will apply it later |
|
348
|
|
|
|
|
|
|
# my $mode = $self->static_install_mode; |
|
349
|
|
|
|
|
|
|
# my $keen = $self->_keen_on_static_install // 0; |
|
350
|
|
|
|
|
|
|
# my $r = $self->_resolve( 'StaticInstall.dry_run', 'static_install_dry_run' ); |
|
351
|
|
|
|
|
|
|
# $r = undef if (defined $r) && ($r eq ''); |
|
352
|
|
|
|
|
|
|
# $r //= (defined $mode) && ($mode eq 'auto') ? !$keen : undef; |
|
353
|
|
|
|
|
|
|
# $r //= 0; |
|
354
|
|
|
|
|
|
|
# return $r; |
|
355
|
|
|
|
|
|
|
# }, |
|
356
|
|
|
|
|
|
|
# ); |
|
357
|
|
|
|
|
|
|
|
|
358
|
|
|
|
|
|
|
# The following attributes currently BYPASS the implicit FALLBACK mechanism (for lack of a simple way) |
|
359
|
|
|
|
|
|
|
haz_bool static_install_dry_run => ( |
|
360
|
|
|
|
|
|
|
def => sub { |
|
361
|
|
|
|
|
|
|
my $self = shift; |
|
362
|
|
|
|
|
|
|
# only set x_static_install using auto mode for distributions where the authority is known to be 'keen on' static install (e.g. ETHER) |
|
363
|
|
|
|
|
|
|
# (for all other distributions, set explicitly to on or off) |
|
364
|
|
|
|
|
|
|
# Note that this is just the default; if a dist.ini changed these values, ConfigSlicer will apply it later |
|
365
|
|
|
|
|
|
|
!($self->_keen_on_static_install // 0); |
|
366
|
|
|
|
|
|
|
}, |
|
367
|
|
|
|
|
|
|
); |
|
368
|
|
|
|
|
|
|
|
|
369
|
|
|
|
|
|
|
|
|
370
|
|
|
|
|
|
|
around static_install_dry_run => sub { |
|
371
|
|
|
|
|
|
|
my ($orig, $self) = (shift, shift); |
|
372
|
|
|
|
|
|
|
my $mode = $self->static_install_mode // ''; |
|
373
|
|
|
|
|
|
|
my $r = $self->$orig(@_); |
|
374
|
|
|
|
|
|
|
$r = ($mode eq 'auto') ? $r : 0; |
|
375
|
|
|
|
|
|
|
$r //= 0; |
|
376
|
|
|
|
|
|
|
}; |
|
377
|
|
|
|
|
|
|
|
|
378
|
|
|
|
|
|
|
|
|
379
|
|
|
|
|
|
|
|
|
380
|
|
|
|
|
|
|
# "PROTECTED" METHODS (OK to use/override in inherited classes) |
|
381
|
116
|
|
|
116
|
|
557
|
sub _bundle_ini_section_name { $_[0]->_config('bundle', 'ini_section_name') } |
|
382
|
0
|
|
|
0
|
|
0
|
sub _pause_config { shift; pause_config(@_) } # return username, password from ~/.pause |
|
|
0
|
|
|
|
|
0
|
|
|
383
|
233
|
|
|
233
|
|
9305
|
sub _config { shift; configuration( @_) } # Retrieve a setting, to ease sub-classing and such. |
|
|
233
|
|
|
|
|
1241
|
|
|
384
|
|
|
|
|
|
|
|
|
385
|
|
|
|
|
|
|
# Below are computed directly from settings and also possibly depend on state. |
|
386
|
|
|
|
|
|
|
# $detected : we try to auto-detect some defaults from the environment or the context |
|
387
|
|
|
|
|
|
|
# such as the repository 'server' |
|
388
|
|
|
|
|
|
|
sub _fallback_settings { # required by C<Banal::Role::Fallbacks> |
|
389
|
2100
|
|
|
2100
|
|
334775
|
my $self = shift; |
|
390
|
2100
|
50
|
|
|
|
4073
|
my %opt = %{ (ref($_[0]) eq 'HASH') ? shift : +{} }; |
|
|
2100
|
|
|
|
|
8513
|
|
|
391
|
2100
|
|
|
|
|
8920
|
%opt = (%opt, @_); |
|
392
|
2100
|
|
|
|
|
4545
|
my (%res, @src); |
|
393
|
|
|
|
|
|
|
|
|
394
|
|
|
|
|
|
|
# %ENV hash wins over all of the others, unless we are asked not to include it in the bunch. |
|
395
|
2100
|
50
|
|
|
|
5789
|
unless ( $opt{'no_env'} ) { |
|
396
|
2100
|
|
50
|
|
|
8802
|
my $pfx = $opt{env_key_prefix} // 'DZIL_'; |
|
397
|
2100
|
|
50
|
4194
|
|
24903
|
$res{source_opts}{refaddr \%ENV}{map_keys} ||= sub { map {; sanitize_env_var_name($pfx . uc $_) } @_ }; |
|
|
4194
|
|
|
|
|
1098518
|
|
|
|
6770
|
|
|
|
|
45153
|
|
|
398
|
2100
|
|
|
|
|
5525
|
push @src, \%ENV; |
|
399
|
|
|
|
|
|
|
} |
|
400
|
|
|
|
|
|
|
|
|
401
|
|
|
|
|
|
|
# Then comes the rest of them... Some of them (like payload) make sense only for OBJECT invocation, while others |
|
402
|
|
|
|
|
|
|
# may also make sense in a CLASS invocation context. |
|
403
|
2100
|
50
|
33
|
|
|
82436
|
push @src, $self->payload() if $opt{payload} && ref $self; |
|
404
|
2100
|
100
|
|
|
|
74112
|
push @src, $self->_author_specific_prefs() if $opt{author_specific}; # depends on state. |
|
405
|
2100
|
50
|
33
|
|
|
90851
|
push @src, $self->_defaults if $opt{defaults} // $opt{generic}; |
|
406
|
2100
|
50
|
33
|
|
|
82624
|
push @src, $self->_settings_detected() if $opt{detected} // $opt{generic}; |
|
407
|
2100
|
50
|
33
|
|
|
79956
|
push @src, $self->_settings() if $opt{settings} // $opt{generic}; |
|
408
|
|
|
|
|
|
|
|
|
409
|
2100
|
|
|
|
|
30045
|
$res{sources} = [ grep { defined } arrayify( @src ) ]; |
|
|
12483
|
|
|
|
|
30518
|
|
|
410
|
|
|
|
|
|
|
|
|
411
|
2100
|
50
|
|
|
|
16778
|
return wantarray ? (%res) : \%res; |
|
412
|
|
|
|
|
|
|
} |
|
413
|
|
|
|
|
|
|
|
|
414
|
|
|
|
|
|
|
|
|
415
|
|
|
|
|
|
|
|
|
416
|
|
|
|
|
|
|
sub BUILD |
|
417
|
|
|
|
|
|
|
{ |
|
418
|
39
|
|
|
39
|
0
|
8028
|
my $self = shift; |
|
419
|
|
|
|
|
|
|
|
|
420
|
|
|
|
|
|
|
# say STDERR 'Here is my humble self : ' . np $self; |
|
421
|
|
|
|
|
|
|
|
|
422
|
39
|
100
|
|
|
|
1386
|
if ($self->airplane) |
|
423
|
|
|
|
|
|
|
{ |
|
424
|
3
|
|
|
|
|
750
|
warn _msg ( colored('building in airplane mode - plugins requiring the network are skipped, and releases are not permitted', 'yellow')); |
|
425
|
|
|
|
|
|
|
# doing this before running configure means we can be sure we update the removal list before |
|
426
|
|
|
|
|
|
|
# our _removed_plugins attribute is built. |
|
427
|
3
|
|
|
|
|
73
|
push @{ $self->payload->{ $self->plugin_remover_attribute } }, $self->_network_plugins; |
|
|
3
|
|
|
|
|
115
|
|
|
428
|
|
|
|
|
|
|
} |
|
429
|
|
|
|
|
|
|
} |
|
430
|
|
|
|
|
|
|
|
|
431
|
|
|
|
|
|
|
|
|
432
|
|
|
|
|
|
|
|
|
433
|
|
|
|
|
|
|
sub check |
|
434
|
|
|
|
|
|
|
{ |
|
435
|
39
|
|
|
39
|
0
|
228
|
my $self = shift; |
|
436
|
39
|
|
|
|
|
1998
|
my @installers = tidy_arrayify( $self->installers ); |
|
437
|
|
|
|
|
|
|
|
|
438
|
|
|
|
|
|
|
warn _msg 'no "bash" executable found; skipping Run::AfterBuild command to update .ackrc' |
|
439
|
39
|
0
|
33
|
|
|
13908
|
if not $INC{'Test/More.pm'} and not $self->_detected_bash; |
|
440
|
|
|
|
|
|
|
|
|
441
|
|
|
|
|
|
|
# NOTE! since the working directory has not changed to $zilla->root yet, |
|
442
|
|
|
|
|
|
|
# if running this code via a different mechanism than dzil <command>, file |
|
443
|
|
|
|
|
|
|
# operations may be looking at the wrong directory! Take this into |
|
444
|
|
|
|
|
|
|
# consideration when running tests! |
|
445
|
|
|
|
|
|
|
|
|
446
|
39
|
|
|
|
|
2256
|
my $has_xs = $self->_detected_xs; |
|
447
|
39
|
50
|
|
|
|
263
|
warn _msg 'XS-based distribution detected.' if $has_xs; |
|
448
|
39
|
50
|
33
|
|
|
319
|
die _msg 'no Makefile.PL found in the repository root: this is not very nice for contributors!' |
|
449
|
|
|
|
|
|
|
if $has_xs and not -e 'Makefile.PL'; |
|
450
|
|
|
|
|
|
|
|
|
451
|
|
|
|
|
|
|
# check for a bin/ that should probably be renamed to script/ |
|
452
|
|
|
|
|
|
|
warn _msg colored('bin/ detected - should this be moved to script/, so its contents can be installed into $PATH?', 'bright_red') |
|
453
|
39
|
50
|
33
|
|
|
1065
|
if -d 'bin' and grep { $_ eq 'ModuleBuildTiny' } $self->installers; |
|
|
0
|
|
|
|
|
0
|
|
|
454
|
|
|
|
|
|
|
|
|
455
|
|
|
|
|
|
|
warn _msg colored('You are using [ModuleBuild] as an installer, WTF?!', 'bright_red') |
|
456
|
48
|
|
|
48
|
|
3679
|
if any { $_->isa('Dist::Zilla::Plugin::ModuleBuild') } |
|
457
|
39
|
50
|
|
|
|
769
|
map { Dist::Zilla::Util->expand_config_package_name($_) } @installers; |
|
|
48
|
|
|
|
|
2187
|
|
|
458
|
|
|
|
|
|
|
|
|
459
|
|
|
|
|
|
|
# this is better than injecting a perl prereq for 5.008, to allow MBT to |
|
460
|
|
|
|
|
|
|
# become more 5.006-compatible in the future without forcing the distribution to be re-released. |
|
461
|
|
|
|
|
|
|
die _msg 'Module::Build::Tiny should not be used in distributions that are targeting perl 5.006!' |
|
462
|
39
|
50
|
50
|
48
|
|
614
|
if any { /ModuleBuildTiny/ } @installers and ($self->max_target_perl // 0) < '5.008'; |
|
|
48
|
|
66
|
|
|
1256
|
|
|
463
|
|
|
|
|
|
|
|
|
464
|
39
|
0
|
33
|
|
|
4274
|
warn _msg colored('.git is missing and META.json is present -- this looks like a CPAN download rather than a git repository. You should probably run ' |
|
|
|
50
|
33
|
|
|
|
|
|
465
|
|
|
|
|
|
|
. (-f 'Build.PL' ? 'perl Build.PL; ./Build' : 'perl Makefile.PL; make') . ' instead of using dzil commands!', 'yellow') |
|
466
|
|
|
|
|
|
|
if not -d '.git' and -f 'META.json' and not $self->_plugin_removed('Git::GatherDir'); |
|
467
|
|
|
|
|
|
|
|
|
468
|
39
|
|
50
|
|
|
2098
|
my $server = $self->server // ''; |
|
469
|
39
|
100
|
100
|
|
|
8483
|
warn _msg colored( |
|
470
|
|
|
|
|
|
|
"server = '$server': recommend instead using server = github and GithubMeta.remote = '$server' with a read-only mirror", 'yellow') |
|
471
|
|
|
|
|
|
|
if $server ne 'github' and $server ne 'none'; |
|
472
|
|
|
|
|
|
|
|
|
473
|
39
|
|
|
|
|
267
|
return $self; |
|
474
|
|
|
|
|
|
|
} |
|
475
|
|
|
|
|
|
|
|
|
476
|
|
|
|
|
|
|
sub configure |
|
477
|
|
|
|
|
|
|
{ |
|
478
|
39
|
|
|
39
|
0
|
9200
|
my $self = shift->check(@_); |
|
479
|
|
|
|
|
|
|
|
|
480
|
|
|
|
|
|
|
# some local variables for handier and faster access. |
|
481
|
39
|
|
50
|
|
|
1414
|
my $server = $self->server // ''; |
|
482
|
39
|
|
|
|
|
666
|
my $examples_finder_name = $self->_bundle_ini_section_name . '/Examples'; |
|
483
|
39
|
|
|
|
|
1697
|
my $licence = $self->license; |
|
484
|
39
|
|
|
|
|
13369
|
my $surgical = $self->surgical_podweaver; |
|
485
|
|
|
|
|
|
|
|
|
486
|
39
|
|
|
|
|
9464
|
my @copy_files_from_release = tidy_arrayify ( $self->copy_files_from_release ); |
|
487
|
39
|
|
|
|
|
19473
|
my @installers = tidy_arrayify ( $self->installers ); |
|
488
|
39
|
|
|
|
|
2781
|
my @never_gather = tidy_arrayify ( $self->never_gather ); |
|
489
|
39
|
|
|
|
|
22396
|
my @stopwords = tidy_arrayify ( $self->stopwords ); |
|
490
|
|
|
|
|
|
|
|
|
491
|
39
|
|
50
|
|
|
14346
|
my $static_install_mode = $self->static_install_mode // ''; |
|
492
|
39
|
|
50
|
|
|
8556
|
my $static_install_dry_run = $self->static_install_dry_run // 0; |
|
493
|
39
|
|
|
|
|
240
|
my $v; # used in various places below in order to hold temporary values. |
|
494
|
|
|
|
|
|
|
|
|
495
|
|
|
|
|
|
|
my $d; # $d is for DEBUGGING |
|
496
|
39
|
|
|
|
|
0
|
my @d; |
|
497
|
|
|
|
|
|
|
|
|
498
|
|
|
|
|
|
|
# say STDERR 'Here is my humble self AGAIN (during configure) : ' . np $self; |
|
499
|
|
|
|
|
|
|
# say STDERR 'Stopwords are : ' . np @stopwords; |
|
500
|
|
|
|
|
|
|
# say STDERR 'Installers are : ' . np @installers; |
|
501
|
|
|
|
|
|
|
# say STDERR 'Server is : ' . "'$server'"; |
|
502
|
|
|
|
|
|
|
|
|
503
|
|
|
|
|
|
|
my @plugins = ( |
|
504
|
|
|
|
|
|
|
|
|
505
|
|
|
|
|
|
|
# TAU : Just in case the name is not set in 'dist.ini' |
|
506
|
|
|
|
|
|
|
'NameFromDirectory', |
|
507
|
|
|
|
|
|
|
|
|
508
|
|
|
|
|
|
|
# VersionProvider |
|
509
|
|
|
|
|
|
|
# see [@Git::VersionManager] |
|
510
|
|
|
|
|
|
|
|
|
511
|
|
|
|
|
|
|
# BeforeBuild |
|
512
|
|
|
|
|
|
|
# [ 'EnsurePrereqsInstalled' ], # FIXME: use options to make this less annoying! |
|
513
|
|
|
|
|
|
|
[ 'PromptIfStale' => 'stale modules, build' => { phase => 'build', module => [ $self->meta->name ] } ], |
|
514
|
|
|
|
|
|
|
[ 'PromptIfStale' => 'stale modules, release' => { phase => 'release', check_all_plugins => 1, check_all_prereqs => 1 } ], |
|
515
|
|
|
|
|
|
|
|
|
516
|
|
|
|
|
|
|
# ExecFiles |
|
517
|
179
|
|
|
179
|
|
3812
|
(-d ($self->payload->{'ExecDir.dir'} // 'script') || any { /^ExecDir\./ } keys %{ $self->payload }) |
|
518
|
|
|
|
|
|
|
? [ 'ExecDir' => { dir => 'script' } ] : (), |
|
519
|
|
|
|
|
|
|
|
|
520
|
|
|
|
|
|
|
# Finders |
|
521
|
|
|
|
|
|
|
[ 'FileFinder::ByName' => Examples => { dir => 'examples' } ], |
|
522
|
|
|
|
|
|
|
|
|
523
|
|
|
|
|
|
|
# Gather Files |
|
524
|
|
|
|
|
|
|
|
|
525
|
|
|
|
|
|
|
[ 'Git::GatherDir' => { ':version' => '2.016', |
|
526
|
|
|
|
|
|
|
include_dotfiles => $self->_resolve(qw( Git::GatherDir.include_dot_files include_dot_files) ) // 1 , |
|
527
|
|
|
|
|
|
|
@never_gather ? ( exclude_filename => \@never_gather) : () |
|
528
|
|
|
|
|
|
|
} ], |
|
529
|
|
|
|
|
|
|
|
|
530
|
|
|
|
|
|
|
qw(MetaYAML MetaJSON Readme Manifest), |
|
531
|
|
|
|
|
|
|
[ 'License' => { ':version' => '5.038', filename => $self->licence } ], |
|
532
|
|
|
|
|
|
|
[ 'GenerateFile::FromShareDir' => 'generate CONTRIBUTING' => { -dist => $self->_config('bundle', 'dist_name'), -filename => 'CONTRIBUTING', has_xs => $self->_detected_xs } ], |
|
533
|
|
|
|
|
|
|
[ 'InstallGuide' => { ':version' => '1.200005' } ], |
|
534
|
|
|
|
|
|
|
|
|
535
|
|
|
|
|
|
|
[ 'Test::Compile' => { ':version' => '2.039', bail_out_on_fail => 1, xt_mode => 1, |
|
536
|
|
|
|
|
|
|
script_finder => [qw(:PerlExecFiles ), $examples_finder_name ] } ], |
|
537
|
|
|
|
|
|
|
[ 'Test::NoTabs' => { ':version' => '0.08', finder => [qw(:InstallModules :ExecFiles), $examples_finder_name, qw(:TestFiles :ExtraTestFiles)] } ], |
|
538
|
|
|
|
|
|
|
[ 'Test::EOL' => { ':version' => '0.17', finder => [qw(:InstallModules :ExecFiles), $examples_finder_name, qw(:TestFiles :ExtraTestFiles)] } ], |
|
539
|
|
|
|
|
|
|
'MetaTests', |
|
540
|
|
|
|
|
|
|
[ 'Test::CPAN::Changes' => { ':version' => '0.012' } ], |
|
541
|
|
|
|
|
|
|
'Test::ChangesHasContent', |
|
542
|
|
|
|
|
|
|
[ 'Test::MinimumVersion' => { ':version' => '2.000003', maybe_kv(max_target_perl => $self->max_target_perl) } ], # ETHER had 5.006 |
|
543
|
|
|
|
|
|
|
[ 'PodSyntaxTests' => { ':version' => '5.040' } ], |
|
544
|
|
|
|
|
|
|
[ 'PodCoverageTests' => { ':version' => '5.040' } ], |
|
545
|
|
|
|
|
|
|
[ 'Test::PodSpelling' => { ':version' => '2.006003', |
|
546
|
|
|
|
|
|
|
( @stopwords ? ( stopwords => [ @stopwords ] ) : () ), |
|
547
|
|
|
|
|
|
|
directories => [qw(bin examples lib script t xt)] } |
|
548
|
|
|
|
|
|
|
], |
|
549
|
|
|
|
|
|
|
|
|
550
|
|
|
|
|
|
|
#[Test::Pod::LinkCheck] many outstanding bugs |
|
551
|
|
|
|
|
|
|
($ENV{CONTINUOUS_INTEGRATION} ? () : [ 'Test::Pod::No404s' => { ':version' => '1.003' } ] ), |
|
552
|
|
|
|
|
|
|
[ 'Test::Kwalitee' => { ':version' => '2.10', filename => 'xt/author/kwalitee.t' } ], |
|
553
|
|
|
|
|
|
|
[ 'MojibakeTests' => { ':version' => '0.8' } ], |
|
554
|
|
|
|
|
|
|
[ 'Test::ReportPrereqs' => { ':version' => '0.022', verify_prereqs => 1, |
|
555
|
38
|
|
|
38
|
|
11555
|
version_extractor => ( ( any { $_ ne 'MakeMaker' } @installers) ? 'Module::Metadata' : 'ExtUtils::MakeMaker' ), |
|
556
|
|
|
|
|
|
|
include => [ sort ( qw(autodie JSON::PP Sub::Name YAML), $self->_plugin_removed('PodCoverageTests') ? () : 'Pod::Coverage' ) ] } ], |
|
557
|
|
|
|
|
|
|
|
|
558
|
|
|
|
|
|
|
[ 'Test::Portability' => { ':version' => '2.000007', |
|
559
|
|
|
|
|
|
|
# options => 'test_dos_length = 0, test_one_dot = 0', |
|
560
|
|
|
|
|
|
|
( ($v = ($self->portability_options // '')) |
|
561
|
|
|
|
|
|
|
? (options => $v) |
|
562
|
|
|
|
|
|
|
: () |
|
563
|
|
|
|
|
|
|
) |
|
564
|
|
|
|
|
|
|
}], |
|
565
|
|
|
|
|
|
|
[ 'Test::CleanNamespaces' => { ':version' => '0.006' } ], |
|
566
|
|
|
|
|
|
|
|
|
567
|
|
|
|
|
|
|
|
|
568
|
|
|
|
|
|
|
# Munge Files |
|
569
|
|
|
|
|
|
|
[ 'Git::Describe' => { ':version' => '0.004', on_package_line => 1 } ], |
|
570
|
|
|
|
|
|
|
[ # Weave POD ( possibly in a 'surgical' fashion) |
|
571
|
|
|
|
|
|
|
($surgical ? 'SurgicalPodWeaver' : 'PodWeaver') => { |
|
572
|
|
|
|
|
|
|
$surgical ? () : ( ':version' => '4.005' ), |
|
573
|
|
|
|
|
|
|
-f 'weaver.ini' ? () : ( config_plugin => $self->weaver_config ), |
|
574
|
|
|
|
|
|
|
replacer => $self->_resolve( ( $surgical ? qw( SurgicalPodWeaver.replacer ) : () ), |
|
575
|
|
|
|
|
|
|
qw( PodWeaver.replacer ), # checked in any case. |
|
576
|
|
|
|
|
|
|
) // 'replace_with_comment', |
|
577
|
|
|
|
|
|
|
post_code_replacer => $self->_resolve( ( $surgical ? qw( SurgicalPodWeaver.post_code_replacer ) : () ), |
|
578
|
|
|
|
|
|
|
qw( PodWeaver.post_code_replacer ), # checked in any case. |
|
579
|
|
|
|
|
|
|
) // 'replace_with_nothing', |
|
580
|
|
|
|
|
|
|
} |
|
581
|
|
|
|
|
|
|
], |
|
582
|
|
|
|
|
|
|
|
|
583
|
|
|
|
|
|
|
# Metadata |
|
584
|
|
|
|
|
|
|
( $server =~ /^github$/i ) ? [ 'GithubMeta' => { ':version' => '0.54', homepage => 0, issues => 0 } ] : (), |
|
585
|
|
|
|
|
|
|
[ 'AutoMetaResources' => { 'bugtracker.rt' => 1, |
|
586
|
|
|
|
|
|
|
( $server !~ /^(github|custom|none)$/i ) |
|
587
|
|
|
|
|
|
|
? ( "repository.${server}" => ( $self->_resolve("server_amr_opts_${server}") // 1 ) ) |
|
588
|
|
|
|
|
|
|
: () |
|
589
|
|
|
|
|
|
|
} ], |
|
590
|
|
|
|
|
|
|
|
|
591
|
|
|
|
|
|
|
[ 'Authority' => { ':version' => '1.009', |
|
592
|
|
|
|
|
|
|
authority => $self->authority, |
|
593
|
|
|
|
|
|
|
do_munging => ( $self->_resolve('Authority.do_munging') // 0 ), |
|
594
|
|
|
|
|
|
|
locate_comment => ( $self->_resolve('Authority.locate_comment') // 0 ), |
|
595
|
|
|
|
|
|
|
} |
|
596
|
|
|
|
|
|
|
], |
|
597
|
390
|
|
|
|
|
16746
|
[ 'MetaNoIndex' => { directory => [ uniq ( qw(t xt), grep { -d } @{ $self->_resolve_mv('MetaNoIndex.directory') } ) ], |
|
|
39
|
|
|
|
|
5972
|
|
|
598
|
|
|
|
|
|
|
}, |
|
599
|
|
|
|
|
|
|
], |
|
600
|
|
|
|
|
|
|
[ 'MetaProvides::Package' => { ':version' => '1.15000002', finder => ':InstallModules', meta_noindex => 1, inherit_version => 0, inherit_missing => 0 } ], |
|
601
|
|
|
|
|
|
|
'MetaConfig', |
|
602
|
|
|
|
|
|
|
[ 'Keywords' => { ':version' => '0.004' } ], |
|
603
|
|
|
|
|
|
|
($Config{default_inc_excludes_dot} ? [ 'UseUnsafeInc' => { dot_in_INC => 0 } ] : ()), |
|
604
|
|
|
|
|
|
|
# [Git::Contributors] |
|
605
|
|
|
|
|
|
|
# [StaticInstall] |
|
606
|
|
|
|
|
|
|
|
|
607
|
|
|
|
|
|
|
# Register Prereqs |
|
608
|
|
|
|
|
|
|
# (MakeMaker or other installer) |
|
609
|
|
|
|
|
|
|
[ 'AutoPrereqs' => { ':version' => '5.038' } ], |
|
610
|
|
|
|
|
|
|
[ 'Prereqs::AuthorDeps' => { ':version' => '0.006', relation => 'suggests' } ], |
|
611
|
|
|
|
|
|
|
[ 'MinimumPerl' => { ':version' => '1.006', configure_finder => ':NoFiles' } ], |
|
612
|
|
|
|
|
|
|
[ 'Prereqs' => pluginbundle_version => { |
|
613
|
|
|
|
|
|
|
'-phase' => 'develop', '-relationship' => 'recommends', |
|
614
|
|
|
|
|
|
|
$self->meta->name => $self->VERSION, |
|
615
|
|
|
|
|
|
|
} ], |
|
616
|
|
|
|
|
|
|
($self->surgical_podweaver ? [ 'Prereqs' => pod_weaving => { |
|
617
|
|
|
|
|
|
|
'-phase' => 'develop', '-relationship' => 'suggests', |
|
618
|
|
|
|
|
|
|
'Dist::Zilla::Plugin::SurgicalPodWeaver' => 0 |
|
619
|
|
|
|
|
|
|
} ] : ()), |
|
620
|
|
|
|
|
|
|
|
|
621
|
|
|
|
|
|
|
# Install Tool (some are also Test Runners) |
|
622
|
|
|
|
|
|
|
@installers, # options are set lower down, via %extra_args |
|
623
|
|
|
|
|
|
|
|
|
624
|
|
|
|
|
|
|
# we prefer this to run after other Register Prereqs plugins |
|
625
|
|
|
|
|
|
|
[ 'Git::Contributors' => { ':version' => '0.029', order_by => 'commits' } ], |
|
626
|
|
|
|
|
|
|
|
|
627
|
|
|
|
|
|
|
# must appear after installers; also note that MBT::*'s static tweak is consequently adjusted, later |
|
628
|
|
|
|
|
|
|
[ 'StaticInstall' => { ':version' => '0.005', mode => $static_install_mode, dry_run => $static_install_dry_run } ], |
|
629
|
|
|
|
|
|
|
|
|
630
|
|
|
|
|
|
|
# Test Runners (load after installers to avoid a rebuild) |
|
631
|
|
|
|
|
|
|
[ 'RunExtraTests' => { ':version' => '0.024' } ], |
|
632
|
|
|
|
|
|
|
|
|
633
|
|
|
|
|
|
|
# After Build |
|
634
|
|
|
|
|
|
|
'CheckSelfDependency', |
|
635
|
|
|
|
|
|
|
|
|
636
|
|
|
|
|
|
|
# Update '.ackrc' (TAU: actually, no longer needed since ack v2.16, ... So it defaults to doing nothing) |
|
637
|
|
|
|
|
|
|
( $self->_detected_bash && ( $self->_resolve('update_ackrc_after_build') // 0 ) && ( $v = $self->_resolve('update_ackrc.cmd') ) ? |
|
638
|
|
|
|
|
|
|
[ 'Run::AfterBuild' => '.ackrc' => { ':version' => '0.038', quiet => 1, run => $v, } ] |
|
639
|
|
|
|
|
|
|
: () |
|
640
|
|
|
|
|
|
|
), |
|
641
|
|
|
|
|
|
|
# Update the '.latest' link |
|
642
|
|
|
|
|
|
|
( ( $self->_resolve('update_latest_links_after_build') // 1 ) && ( $v = $self->_resolve('update_latest_links.eval') ) ? |
|
643
|
|
|
|
|
|
|
[ 'Run::AfterBuild' => '.latest' => { ':version' => '0.041', quiet => 1, fatal_errors => 0, eval => $v, } ] |
|
644
|
|
|
|
|
|
|
: () |
|
645
|
|
|
|
|
|
|
), |
|
646
|
|
|
|
|
|
|
|
|
647
|
|
|
|
|
|
|
|
|
648
|
|
|
|
|
|
|
# Before Release |
|
649
|
|
|
|
|
|
|
[ 'CheckStrictVersion' => { decimal_only => ( $self->_resolve('CheckStrictVersion.decimal_only') // 1 ), |
|
650
|
|
|
|
|
|
|
tuple_only => ( $self->_resolve('CheckStrictVersion.tuple_only') // 0 ), |
|
651
|
|
|
|
|
|
|
} |
|
652
|
|
|
|
|
|
|
], |
|
653
|
|
|
|
|
|
|
'CheckMetaResources', |
|
654
|
|
|
|
|
|
|
'EnsureLatestPerl', |
|
655
|
|
|
|
|
|
|
|
|
656
|
|
|
|
|
|
|
# if in airplane mode, allow our uncommitted dist.ini edit which sets 'airplane = 1' |
|
657
|
|
|
|
|
|
|
|
|
658
|
|
|
|
|
|
|
|
|
659
|
|
|
|
|
|
|
( $self->check_vcs_clean_initial ? |
|
660
|
|
|
|
|
|
|
[ 'Git::Check' => 'initial check' => { allow_dirty => [ $self->airplane ? 'dist.ini' : '' ] } ] |
|
661
|
|
|
|
|
|
|
: ()), |
|
662
|
|
|
|
|
|
|
|
|
663
|
|
|
|
|
|
|
|
|
664
|
|
|
|
|
|
|
( $self->check_vcs_merge_conflicts ? |
|
665
|
|
|
|
|
|
|
'Git::CheckFor::MergeConflicts' |
|
666
|
|
|
|
|
|
|
: ()), |
|
667
|
|
|
|
|
|
|
|
|
668
|
|
|
|
|
|
|
( $self->check_vcs_correct_branch ? |
|
669
|
|
|
|
|
|
|
[ 'Git::CheckFor::CorrectBranch' => { ':version' => '0.004', release_branch => $self->git_branch } ] |
|
670
|
|
|
|
|
|
|
: ()), |
|
671
|
|
|
|
|
|
|
|
|
672
|
|
|
|
|
|
|
( $self->check_vcs_remote_branch ? |
|
673
|
|
|
|
|
|
|
[ 'Git::Remote::Check' => { branch => $self->git_branch, remote_branch => $self->git_remote_branch } ] |
|
674
|
|
|
|
|
|
|
: ()), |
|
675
|
|
|
|
|
|
|
|
|
676
|
|
|
|
|
|
|
|
|
677
|
|
|
|
|
|
|
# [ 'Git::CheckFor::CorrectBranch' => { ':version' => '0.004', release_branch => $self->git_branch } ], |
|
678
|
|
|
|
|
|
|
# [ 'Git::Remote::Check' => { branch => $self->git_branch, remote_branch => $self->git_remote_branch } ], |
|
679
|
|
|
|
|
|
|
[ 'CheckPrereqsIndexed' => { ':version' => '0.019' } ], |
|
680
|
|
|
|
|
|
|
|
|
681
|
|
|
|
|
|
|
'TestRelease', |
|
682
|
|
|
|
|
|
|
|
|
683
|
|
|
|
|
|
|
( $self->check_vcs_clean_after_tests ? |
|
684
|
|
|
|
|
|
|
[ 'Git::Check' => 'after tests' => { allow_dirty => [''] } ] |
|
685
|
|
|
|
|
|
|
: ()), |
|
686
|
|
|
|
|
|
|
|
|
687
|
|
|
|
|
|
|
'CheckIssues', |
|
688
|
|
|
|
|
|
|
# (ConfirmRelease) |
|
689
|
|
|
|
|
|
|
|
|
690
|
|
|
|
|
|
|
# Releaser |
|
691
|
|
|
|
|
|
|
$self->fake_release |
|
692
|
39
|
50
|
33
|
|
|
843
|
? do { warn _msg colored('FAKE_RELEASE set - not uploading to CPAN', 'yellow'); 'FakeRelease' } |
|
|
3
|
50
|
50
|
|
|
530
|
|
|
|
3
|
50
|
50
|
|
|
114
|
|
|
|
|
50
|
50
|
|
|
|
|
|
|
|
100
|
50
|
|
|
|
|
|
|
|
50
|
50
|
|
|
|
|
|
|
|
100
|
100
|
|
|
|
|
|
|
|
100
|
100
|
|
|
|
|
|
|
|
100
|
33
|
|
|
|
|
|
|
|
100
|
33
|
|
|
|
|
|
|
|
100
|
50
|
|
|
|
|
|
|
|
100
|
50
|
|
|
|
|
|
|
|
100
|
33
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
693
|
|
|
|
|
|
|
: 'UploadToCPAN', |
|
694
|
|
|
|
|
|
|
|
|
695
|
|
|
|
|
|
|
# After Release |
|
696
|
|
|
|
|
|
|
( ($v=$self->licence) && -e "$v" ? |
|
697
|
|
|
|
|
|
|
[ 'Run::AfterRelease' => "remove old $v" => { ':version' => '0.038', quiet => 1, eval => qq!unlink '$v'! } ] |
|
698
|
|
|
|
|
|
|
: ()), |
|
699
|
|
|
|
|
|
|
|
|
700
|
|
|
|
|
|
|
( -e 'README.md' ? |
|
701
|
|
|
|
|
|
|
[ 'Run::AfterRelease' => 'remove old READMEs' => { ':version' => '0.038', quiet => 1, eval => q!unlink 'README.md'! } ] |
|
702
|
|
|
|
|
|
|
: ()), |
|
703
|
|
|
|
|
|
|
|
|
704
|
|
|
|
|
|
|
( @copy_files_from_release ? |
|
705
|
|
|
|
|
|
|
[ 'CopyFilesFromRelease' => 'copy generated files' => { filename => [ @copy_files_from_release ] } ] |
|
706
|
|
|
|
|
|
|
: ()), |
|
707
|
|
|
|
|
|
|
|
|
708
|
|
|
|
|
|
|
[ 'ReadmeAnyFromPod' => { ':version' => '0.142180', type => 'pod', location => 'root', phase => 'release' } ], |
|
709
|
|
|
|
|
|
|
); |
|
710
|
|
|
|
|
|
|
|
|
711
|
|
|
|
|
|
|
# method modifier will also apply default configs, compile develop prereqs |
|
712
|
39
|
|
|
|
|
11847
|
$self->add_plugins(@plugins); |
|
713
|
|
|
|
|
|
|
|
|
714
|
|
|
|
|
|
|
# plugins to do with calculating, munging, incrementing versions |
|
715
|
39
|
|
|
|
|
69406
|
my $rwt = 'RewriteVersion::Transitional'; # Just to shorten some lines below |
|
716
|
39
|
50
|
|
|
|
1793
|
$self->add_bundle('@Git::VersionManager' => { |
|
|
|
50
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
717
|
|
|
|
|
|
|
$self->rewrite_version_global ? ( "${rwt}.global" => $self->rewrite_version_global ) : (), |
|
718
|
|
|
|
|
|
|
$self->fallback_version_provider ? ( "${rwt}.fallback_version_provider" => $self->fallback_version_provider ) : (), |
|
719
|
|
|
|
|
|
|
$self->version_regexp ? ( "${rwt}.version_regexp" => $self->version_regexp ) : (), |
|
720
|
|
|
|
|
|
|
|
|
721
|
|
|
|
|
|
|
# for first Git::Commit |
|
722
|
|
|
|
|
|
|
commit_files_after_release => [ arrayify($self->commit_files_after_release) ], |
|
723
|
|
|
|
|
|
|
|
|
724
|
|
|
|
|
|
|
# because of [Git::Check], only files copied from the release would be added -- there is nothing else |
|
725
|
|
|
|
|
|
|
# hanging around in the current directory |
|
726
|
|
|
|
|
|
|
'release snapshot.add_files_in' => ['.'], |
|
727
|
|
|
|
|
|
|
$self->release_snapshot_commit_msg ? ( 'release snapshot.commit_msg' => $self->release_snapshot_commit_msg ) : (), |
|
728
|
|
|
|
|
|
|
|
|
729
|
|
|
|
|
|
|
$self->tag_format ? ( 'Git::Tag.tag_format' => $self->tag_format ) : (), |
|
730
|
|
|
|
|
|
|
$self->tag_message ? ( 'Git::Tag.tag_message' => $self->tag_message ) : (), |
|
731
|
|
|
|
|
|
|
|
|
732
|
|
|
|
|
|
|
# if the caller set bump_only_matching_versions, then this global setting falls on the floor automatically |
|
733
|
|
|
|
|
|
|
# because the bundle uses the non-Transitional plugin in that case. |
|
734
|
|
|
|
|
|
|
$self->bump_version_global ? ( 'BumpVersionAfterRelease::Transitional.global' => $self->bump_version_global ) : (), |
|
735
|
|
|
|
|
|
|
|
|
736
|
|
|
|
|
|
|
'NextRelease.:version' => '5.033', |
|
737
|
|
|
|
|
|
|
# 'NextRelease.time_zone' => 'UTC', |
|
738
|
|
|
|
|
|
|
# 'NextRelease.format' => '%-' . ($self->changes_version_columns - 2) . 'v %{yyyy-MM-dd HH:mm:ss\'Z\'}d%{ (TRIAL RELEASE)}T', |
|
739
|
|
|
|
|
|
|
'NextRelease.time_zone' => $self->nextrelease_entry_time_zone(), |
|
740
|
|
|
|
|
|
|
'NextRelease.format' => $self->nextrelease_entry_format(), |
|
741
|
|
|
|
|
|
|
}); |
|
742
|
|
|
|
|
|
|
|
|
743
|
39
|
100
|
|
|
|
593587
|
$self->add_plugins( |
|
744
|
|
|
|
|
|
|
'Git::Push', |
|
745
|
|
|
|
|
|
|
$self->server eq 'github' ? [ 'GitHub::Update' => { ':version' => '0.40', metacpan => 1 } ] : (), |
|
746
|
|
|
|
|
|
|
); |
|
747
|
|
|
|
|
|
|
|
|
748
|
39
|
50
|
33
|
|
|
5950
|
if ($self->allow_insecure_operations && $self->install_release_from_cpan) { |
|
749
|
|
|
|
|
|
|
# TAU : This is protected by an expression checking 'allow_insecure_operations' because what folows is |
|
750
|
|
|
|
|
|
|
# potentially quite insecure, since it would expose the author's PAUSE credentials |
|
751
|
|
|
|
|
|
|
# directly on the request URL (which would travel in cleartext even under 'https'). |
|
752
|
|
|
|
|
|
|
|
|
753
|
|
|
|
|
|
|
# install with an author-specific URL from PAUSE, so cpanm-reporter knows where to submit the report |
|
754
|
|
|
|
|
|
|
# hopefully the file is available at this location soonish after release! |
|
755
|
0
|
|
|
|
|
0
|
my %pause = $self->_pause_config(); |
|
756
|
0
|
|
|
|
|
0
|
say STDERR "PAUSE Config : " . np %pause; |
|
757
|
|
|
|
|
|
|
|
|
758
|
0
|
|
|
|
|
0
|
my ($user, $password) = @pause{qw(user password)}; |
|
759
|
0
|
0
|
0
|
|
|
0
|
$self->add_plugins( |
|
760
|
|
|
|
|
|
|
[ 'Run::AfterRelease' => 'install release' => { ':version' => '0.031', fatal_errors => 0, run => 'cpanm http://' . $user . ':' . $password . '@pause.perl.org/pub/PAUSE/authors/id/' . substr($user, 0, 1).'/'.substr($user,0,2).'/'.$user.'/%a' } ], |
|
761
|
|
|
|
|
|
|
) if $user and $password; |
|
762
|
|
|
|
|
|
|
} |
|
763
|
|
|
|
|
|
|
|
|
764
|
|
|
|
|
|
|
# halt release after pre-release checks, but before ConfirmRelease |
|
765
|
39
|
100
|
|
|
|
9674
|
$self->add_plugins('BlockRelease') if $self->airplane; |
|
766
|
|
|
|
|
|
|
|
|
767
|
39
|
|
|
|
|
1432
|
$self->add_plugins( |
|
768
|
|
|
|
|
|
|
[ 'Run::AfterRelease' => 'release complete' => { ':version' => '0.038', quiet => 1, eval => [ qq{print "release complete!\\xa"} ] } ], |
|
769
|
|
|
|
|
|
|
# listed late, to allow all other plugins which do BeforeRelease checks to run first. |
|
770
|
|
|
|
|
|
|
'ConfirmRelease', |
|
771
|
|
|
|
|
|
|
); |
|
772
|
|
|
|
|
|
|
|
|
773
|
|
|
|
|
|
|
# if ModuleBuildTiny(::*) is being used, disable its static option if |
|
774
|
|
|
|
|
|
|
# [StaticInstall] is being run with mode=off or dry_run=1 |
|
775
|
39
|
100
|
100
|
|
|
7749
|
if (($static_install_mode eq 'off' or $static_install_dry_run) |
|
|
|
|
100
|
|
|
|
|
|
776
|
45
|
|
|
45
|
|
477
|
and any { /^ModuleBuildTiny/ } @installers) |
|
777
|
|
|
|
|
|
|
{ |
|
778
|
11
|
|
|
|
|
133
|
my $mbt = Dist::Zilla::Util->expand_config_package_name('ModuleBuildTiny'); |
|
779
|
11
|
|
|
442
|
|
496
|
my $mbt_spec = first { $_->[1] =~ /^$mbt/ } @{ $self->plugins }; |
|
|
442
|
|
|
|
|
1698
|
|
|
|
11
|
|
|
|
|
449
|
|
|
780
|
|
|
|
|
|
|
|
|
781
|
11
|
|
|
|
|
92
|
$mbt_spec->[-1]{static} = 'no'; |
|
782
|
|
|
|
|
|
|
} |
|
783
|
|
|
|
|
|
|
|
|
784
|
|
|
|
|
|
|
# ensure that additional optional plugins are declared in prereqs |
|
785
|
39
|
|
|
|
|
333
|
my $plugin_name = 'prereqs for ' . $self->_bundle_ini_section_name; |
|
786
|
|
|
|
|
|
|
$self->add_plugins( |
|
787
|
|
|
|
|
|
|
[ 'Prereqs' => $plugin_name => |
|
788
|
|
|
|
|
|
|
{ '-phase' => 'develop', '-relationship' => 'suggests', |
|
789
|
39
|
|
|
|
|
1330
|
%{ $self->_develop_suggests_as_string_hash } } ] |
|
|
39
|
|
|
|
|
497
|
|
|
790
|
|
|
|
|
|
|
); |
|
791
|
|
|
|
|
|
|
|
|
792
|
|
|
|
|
|
|
# listed last, to be sure we run at the very end of each phase |
|
793
|
39
|
50
|
|
|
|
6632
|
$self->add_plugins( |
|
794
|
|
|
|
|
|
|
[ 'VerifyPhases' => 'PHASE VERIFICATION' => { ':version' => '0.016' } ] |
|
795
|
|
|
|
|
|
|
) if $self->verify_phases; |
|
796
|
|
|
|
|
|
|
} |
|
797
|
|
|
|
|
|
|
|
|
798
|
|
|
|
|
|
|
|
|
799
|
|
|
|
|
|
|
|
|
800
|
|
|
|
|
|
|
|
|
801
|
|
|
|
|
|
|
|
|
802
|
|
|
|
|
|
|
# PRIVATE UTILITY FUNCTIONS |
|
803
|
|
|
|
|
|
|
|
|
804
|
|
|
|
|
|
|
# Message text builder to be used in error output (warn, die, ...) |
|
805
|
|
|
|
|
|
|
sub _msg { |
|
806
|
9
|
|
|
9
|
|
684
|
state $pfx = configuration('bundle', 'msg_pfx'); |
|
807
|
9
|
|
|
|
|
427
|
join ('', $pfx, @_, "\n") |
|
808
|
|
|
|
|
|
|
} |
|
809
|
|
|
|
|
|
|
|
|
810
|
|
|
|
|
|
|
|
|
811
|
|
|
|
|
|
|
|
|
812
|
|
|
|
|
|
|
|
|
813
|
|
|
|
|
|
|
__PACKAGE__->meta->make_immutable; |
|
814
|
|
|
|
|
|
|
|
|
815
|
|
|
|
|
|
|
1; |
|
816
|
|
|
|
|
|
|
|
|
817
|
|
|
|
|
|
|
=pod |
|
818
|
|
|
|
|
|
|
|
|
819
|
|
|
|
|
|
|
=encoding UTF-8 |
|
820
|
|
|
|
|
|
|
|
|
821
|
|
|
|
|
|
|
=head1 NAME |
|
822
|
|
|
|
|
|
|
|
|
823
|
|
|
|
|
|
|
Dist::Zilla::PluginBundle::Author::TABULO - A plugin bundle for distributions built by TABULO |
|
824
|
|
|
|
|
|
|
|
|
825
|
|
|
|
|
|
|
=head1 VERSION |
|
826
|
|
|
|
|
|
|
|
|
827
|
|
|
|
|
|
|
version 0.198 |
|
828
|
|
|
|
|
|
|
|
|
829
|
|
|
|
|
|
|
=head1 SYNOPSIS |
|
830
|
|
|
|
|
|
|
|
|
831
|
|
|
|
|
|
|
In your F<dist.ini>: |
|
832
|
|
|
|
|
|
|
|
|
833
|
|
|
|
|
|
|
[@Author::TABULO] |
|
834
|
|
|
|
|
|
|
|
|
835
|
|
|
|
|
|
|
=head1 DESCRIPTION |
|
836
|
|
|
|
|
|
|
|
|
837
|
|
|
|
|
|
|
=for stopwords TABULO DAGOLDEN ETHER KENTNL |
|
838
|
|
|
|
|
|
|
=for stopwords GitHub |
|
839
|
|
|
|
|
|
|
=for stopwords optimizations repo |
|
840
|
|
|
|
|
|
|
|
|
841
|
|
|
|
|
|
|
This is the plug-in bundle that TABULO uses for his distributions whose starting |
|
842
|
|
|
|
|
|
|
point was ETHER's. |
|
843
|
|
|
|
|
|
|
|
|
844
|
|
|
|
|
|
|
It exists mostly because TABULO is very lazy and wants others to be using what |
|
845
|
|
|
|
|
|
|
he's using if they want to be doing work on his modules, just like KENTNL |
|
846
|
|
|
|
|
|
|
and many others, I suppose... |
|
847
|
|
|
|
|
|
|
|
|
848
|
|
|
|
|
|
|
But since TABULO is probably even lazier than most folks; instead of starting his |
|
849
|
|
|
|
|
|
|
bundle from scratch, he just shopped around to find a bundle that had the most |
|
850
|
|
|
|
|
|
|
overlap with his taste or whatever; and then just slurped the whole thing, |
|
851
|
|
|
|
|
|
|
even including its documentation which is what you see here and in the |
|
852
|
|
|
|
|
|
|
related modules.:-) |
|
853
|
|
|
|
|
|
|
|
|
854
|
|
|
|
|
|
|
Admittedly, the fact that TABULO was so late in migrating to dzil worked to his |
|
855
|
|
|
|
|
|
|
advantage for this particular task at least, since by that time |
|
856
|
|
|
|
|
|
|
the bold and the brave had already made delicious stuff! |
|
857
|
|
|
|
|
|
|
|
|
858
|
|
|
|
|
|
|
Thank you ETHER! |
|
859
|
|
|
|
|
|
|
|
|
860
|
|
|
|
|
|
|
Thank you, too, KENTNL and DAGOLDEN, as your plugin-bundles also seem to be quite |
|
861
|
|
|
|
|
|
|
good sources of inspiration! |
|
862
|
|
|
|
|
|
|
|
|
863
|
|
|
|
|
|
|
=head2 WARNING |
|
864
|
|
|
|
|
|
|
|
|
865
|
|
|
|
|
|
|
Please note that, although this module needs to be on CPAN for obvious reasons, |
|
866
|
|
|
|
|
|
|
it is really intended to be a collection of personal preferences, which are |
|
867
|
|
|
|
|
|
|
expected to be in great flux, at least for the time being. |
|
868
|
|
|
|
|
|
|
|
|
869
|
|
|
|
|
|
|
Therefore, please do NOT base your own distributions on this one, since anything |
|
870
|
|
|
|
|
|
|
can change at any moment without prior notice, while I get accustomed to dzil |
|
871
|
|
|
|
|
|
|
myself and form those preferences in the first place... |
|
872
|
|
|
|
|
|
|
Absolutely nothing in this distribution is guaranteed to remain constant or |
|
873
|
|
|
|
|
|
|
be maintained at this point. Who knows, I may even give up on dzil altogether... |
|
874
|
|
|
|
|
|
|
|
|
875
|
|
|
|
|
|
|
You have been warned. |
|
876
|
|
|
|
|
|
|
|
|
877
|
|
|
|
|
|
|
And now comes the rest of the documentation slurped right in from ETHER's GitHub |
|
878
|
|
|
|
|
|
|
repo ... :-) |
|
879
|
|
|
|
|
|
|
|
|
880
|
|
|
|
|
|
|
=head2 DESCRIPTION (at last) |
|
881
|
|
|
|
|
|
|
|
|
882
|
|
|
|
|
|
|
This L<Dist::Zilla> plugin bundle is I<very approximately> equal to the |
|
883
|
|
|
|
|
|
|
following F<dist.ini> (following the preamble), minus some optimizations: |
|
884
|
|
|
|
|
|
|
|
|
885
|
|
|
|
|
|
|
;;; BeforeBuild |
|
886
|
|
|
|
|
|
|
[PromptIfStale / stale modules, build] |
|
887
|
|
|
|
|
|
|
phase = build |
|
888
|
|
|
|
|
|
|
module = Dist::Zilla::Plugin::Author::TABULO |
|
889
|
|
|
|
|
|
|
[PromptIfStale / stale modules, release] |
|
890
|
|
|
|
|
|
|
phase = release |
|
891
|
|
|
|
|
|
|
check_all_plugins = 1 |
|
892
|
|
|
|
|
|
|
check_all_prereqs = 1 |
|
893
|
|
|
|
|
|
|
|
|
894
|
|
|
|
|
|
|
|
|
895
|
|
|
|
|
|
|
;;; ExecFiles |
|
896
|
|
|
|
|
|
|
[ExecDir] |
|
897
|
|
|
|
|
|
|
dir = script ; only if script dir exists |
|
898
|
|
|
|
|
|
|
|
|
899
|
|
|
|
|
|
|
|
|
900
|
|
|
|
|
|
|
;;; Finders |
|
901
|
|
|
|
|
|
|
[FileFinder::ByName / Examples] |
|
902
|
|
|
|
|
|
|
dir = examples |
|
903
|
|
|
|
|
|
|
|
|
904
|
|
|
|
|
|
|
|
|
905
|
|
|
|
|
|
|
;;; Gather Files |
|
906
|
|
|
|
|
|
|
[Git::GatherDir] |
|
907
|
|
|
|
|
|
|
:version = 2.016 |
|
908
|
|
|
|
|
|
|
exclude_filename = CONTRIBUTING |
|
909
|
|
|
|
|
|
|
exclude_filename = INSTALL |
|
910
|
|
|
|
|
|
|
exclude_filename = LICENCE |
|
911
|
|
|
|
|
|
|
exclude_filename = LICENSE |
|
912
|
|
|
|
|
|
|
exclude_filename = META.json |
|
913
|
|
|
|
|
|
|
exclude_filename = Makefile.PL |
|
914
|
|
|
|
|
|
|
exclude_filename = README.md |
|
915
|
|
|
|
|
|
|
exclude_filename = README.pod |
|
916
|
|
|
|
|
|
|
exclude_filename = TODO |
|
917
|
|
|
|
|
|
|
exclude_filename = cpanfile |
|
918
|
|
|
|
|
|
|
exclude_filename = inc/ExtUtils/MakeMaker/Dist/Zilla/Develop.pm |
|
919
|
|
|
|
|
|
|
exclude_filename = ppport.h |
|
920
|
|
|
|
|
|
|
|
|
921
|
|
|
|
|
|
|
[MetaYAML] |
|
922
|
|
|
|
|
|
|
[MetaJSON] |
|
923
|
|
|
|
|
|
|
[Readme] |
|
924
|
|
|
|
|
|
|
[Manifest] |
|
925
|
|
|
|
|
|
|
[License] |
|
926
|
|
|
|
|
|
|
:version = 5.038 |
|
927
|
|
|
|
|
|
|
filename = LICENCE ; for distributions where I have authority |
|
928
|
|
|
|
|
|
|
|
|
929
|
|
|
|
|
|
|
[GenerateFile::FromShareDir / generate CONTRIBUTING] |
|
930
|
|
|
|
|
|
|
-dist = Dist-Zilla-PluginBundle-Author-TABULO |
|
931
|
|
|
|
|
|
|
-filename = CONTRIBUTING |
|
932
|
|
|
|
|
|
|
has_xs = <dynamically-determined flag> |
|
933
|
|
|
|
|
|
|
[InstallGuide] |
|
934
|
|
|
|
|
|
|
:version = 1.200005 |
|
935
|
|
|
|
|
|
|
|
|
936
|
|
|
|
|
|
|
[Test::Compile] |
|
937
|
|
|
|
|
|
|
:version = 2.039 |
|
938
|
|
|
|
|
|
|
bail_out_on_fail = 1 |
|
939
|
|
|
|
|
|
|
xt_mode = 1 |
|
940
|
|
|
|
|
|
|
script_finder = :PerlExecFiles |
|
941
|
|
|
|
|
|
|
script_finder = Examples |
|
942
|
|
|
|
|
|
|
|
|
943
|
|
|
|
|
|
|
[Test::NoTabs] |
|
944
|
|
|
|
|
|
|
:version = 0.08 |
|
945
|
|
|
|
|
|
|
finder = :InstallModules |
|
946
|
|
|
|
|
|
|
finder = :ExecFiles |
|
947
|
|
|
|
|
|
|
finder = Examples |
|
948
|
|
|
|
|
|
|
finder = :TestFiles |
|
949
|
|
|
|
|
|
|
finder = :ExtraTestFiles |
|
950
|
|
|
|
|
|
|
|
|
951
|
|
|
|
|
|
|
[Test::EOL] |
|
952
|
|
|
|
|
|
|
:version = 0.17 |
|
953
|
|
|
|
|
|
|
finder = :InstallModules |
|
954
|
|
|
|
|
|
|
finder = :ExecFiles |
|
955
|
|
|
|
|
|
|
finder = Examples |
|
956
|
|
|
|
|
|
|
finder = :TestFiles |
|
957
|
|
|
|
|
|
|
finder = :ExtraTestFiles |
|
958
|
|
|
|
|
|
|
|
|
959
|
|
|
|
|
|
|
[MetaTests] |
|
960
|
|
|
|
|
|
|
[Test::CPAN::Changes] |
|
961
|
|
|
|
|
|
|
:version = 0.012 |
|
962
|
|
|
|
|
|
|
[Test::ChangesHasContent] |
|
963
|
|
|
|
|
|
|
[Test::MinimumVersion] |
|
964
|
|
|
|
|
|
|
:version = 2.000003 |
|
965
|
|
|
|
|
|
|
max_target_perl = 5.006 |
|
966
|
|
|
|
|
|
|
[PodSyntaxTests] |
|
967
|
|
|
|
|
|
|
:version = 5.040 |
|
968
|
|
|
|
|
|
|
[PodCoverageTests] |
|
969
|
|
|
|
|
|
|
:version = 5.040 |
|
970
|
|
|
|
|
|
|
[Test::PodSpelling] |
|
971
|
|
|
|
|
|
|
:version = 2.006003 |
|
972
|
|
|
|
|
|
|
stopwords = irc |
|
973
|
|
|
|
|
|
|
directory = examples |
|
974
|
|
|
|
|
|
|
directory = lib |
|
975
|
|
|
|
|
|
|
directory = script |
|
976
|
|
|
|
|
|
|
directory = t |
|
977
|
|
|
|
|
|
|
directory = xt |
|
978
|
|
|
|
|
|
|
|
|
979
|
|
|
|
|
|
|
;[Test::Pod::LinkCheck] many outstanding bugs |
|
980
|
|
|
|
|
|
|
[Test::Pod::No404s] |
|
981
|
|
|
|
|
|
|
:version = 1.003 |
|
982
|
|
|
|
|
|
|
[Test::Kwalitee] |
|
983
|
|
|
|
|
|
|
:version = 2.10 |
|
984
|
|
|
|
|
|
|
filename = xt/author/kwalitee.t |
|
985
|
|
|
|
|
|
|
[MojibakeTests] |
|
986
|
|
|
|
|
|
|
:version = 0.8 |
|
987
|
|
|
|
|
|
|
[Test::ReportPrereqs] |
|
988
|
|
|
|
|
|
|
:version = 0.022 |
|
989
|
|
|
|
|
|
|
verify_prereqs = 1 |
|
990
|
|
|
|
|
|
|
version_extractor = Module::Metadata |
|
991
|
|
|
|
|
|
|
include = JSON::PP |
|
992
|
|
|
|
|
|
|
include = Pod::Coverage |
|
993
|
|
|
|
|
|
|
include = Sub::Name |
|
994
|
|
|
|
|
|
|
include = YAML |
|
995
|
|
|
|
|
|
|
include = autodie |
|
996
|
|
|
|
|
|
|
[Test::Portability] |
|
997
|
|
|
|
|
|
|
:version = 2.000007 |
|
998
|
|
|
|
|
|
|
[Test::CleanNamespaces] |
|
999
|
|
|
|
|
|
|
:version = 0.006 |
|
1000
|
|
|
|
|
|
|
|
|
1001
|
|
|
|
|
|
|
|
|
1002
|
|
|
|
|
|
|
;;; Munge Files |
|
1003
|
|
|
|
|
|
|
[Git::Describe] |
|
1004
|
|
|
|
|
|
|
:version = 0.004 |
|
1005
|
|
|
|
|
|
|
on_package_line = 1 |
|
1006
|
|
|
|
|
|
|
|
|
1007
|
|
|
|
|
|
|
[PodWeaver] (or [SurgicalPodWeaver]) |
|
1008
|
|
|
|
|
|
|
:version = 4.005 |
|
1009
|
|
|
|
|
|
|
config_plugin = @Author::TABULO ; unless weaver.ini is present |
|
1010
|
|
|
|
|
|
|
replacer = replace_with_comment |
|
1011
|
|
|
|
|
|
|
post_code_replacer = replace_with_nothing |
|
1012
|
|
|
|
|
|
|
|
|
1013
|
|
|
|
|
|
|
|
|
1014
|
|
|
|
|
|
|
;;; Metadata |
|
1015
|
|
|
|
|
|
|
[GithubMeta] ; (if server = 'github' or omitted) |
|
1016
|
|
|
|
|
|
|
:version = 0.54 |
|
1017
|
|
|
|
|
|
|
homepage = 0 |
|
1018
|
|
|
|
|
|
|
issues = 0 |
|
1019
|
|
|
|
|
|
|
|
|
1020
|
|
|
|
|
|
|
[AutoMetaResources] |
|
1021
|
|
|
|
|
|
|
bugtracker.rt = 1 |
|
1022
|
|
|
|
|
|
|
; (plus repository.* = 1 if server = 'gitmo' or 'p5sagit') |
|
1023
|
|
|
|
|
|
|
|
|
1024
|
|
|
|
|
|
|
[Authority] |
|
1025
|
|
|
|
|
|
|
:version = 1.009 |
|
1026
|
|
|
|
|
|
|
authority = cpan:TABULO |
|
1027
|
|
|
|
|
|
|
do_munging = 0 |
|
1028
|
|
|
|
|
|
|
|
|
1029
|
|
|
|
|
|
|
[MetaNoIndex] |
|
1030
|
|
|
|
|
|
|
directory = corpus |
|
1031
|
|
|
|
|
|
|
directory = demo |
|
1032
|
|
|
|
|
|
|
directory = examples |
|
1033
|
|
|
|
|
|
|
directory = fatlib |
|
1034
|
|
|
|
|
|
|
directory = inc |
|
1035
|
|
|
|
|
|
|
directory = local |
|
1036
|
|
|
|
|
|
|
directory = perl5 |
|
1037
|
|
|
|
|
|
|
directory = share |
|
1038
|
|
|
|
|
|
|
directory = t |
|
1039
|
|
|
|
|
|
|
directory = xt |
|
1040
|
|
|
|
|
|
|
|
|
1041
|
|
|
|
|
|
|
[MetaProvides::Package] |
|
1042
|
|
|
|
|
|
|
:version = 1.15000002 |
|
1043
|
|
|
|
|
|
|
finder = :InstallModules |
|
1044
|
|
|
|
|
|
|
meta_noindex = 1 |
|
1045
|
|
|
|
|
|
|
inherit_version = 0 |
|
1046
|
|
|
|
|
|
|
inherit_missing = 0 |
|
1047
|
|
|
|
|
|
|
|
|
1048
|
|
|
|
|
|
|
[MetaConfig] |
|
1049
|
|
|
|
|
|
|
[Keywords] |
|
1050
|
|
|
|
|
|
|
:version = 0.004 |
|
1051
|
|
|
|
|
|
|
|
|
1052
|
|
|
|
|
|
|
; if we are releasing with a new perl with -DDEFAULT_INC_EXCLUDES_DOT set |
|
1053
|
|
|
|
|
|
|
[UseUnsafeInc] |
|
1054
|
|
|
|
|
|
|
dot_in_INC = 0 |
|
1055
|
|
|
|
|
|
|
|
|
1056
|
|
|
|
|
|
|
;[Git::Contributors] ; below |
|
1057
|
|
|
|
|
|
|
;[StaticInstall] ; below |
|
1058
|
|
|
|
|
|
|
|
|
1059
|
|
|
|
|
|
|
|
|
1060
|
|
|
|
|
|
|
;;; Register Prereqs |
|
1061
|
|
|
|
|
|
|
[AutoPrereqs] |
|
1062
|
|
|
|
|
|
|
:version = 5.038 |
|
1063
|
|
|
|
|
|
|
[Prereqs::AuthorDeps] |
|
1064
|
|
|
|
|
|
|
relation = suggests |
|
1065
|
|
|
|
|
|
|
[MinimumPerl] |
|
1066
|
|
|
|
|
|
|
:version = 1.006 |
|
1067
|
|
|
|
|
|
|
configure_finder = :NoFiles |
|
1068
|
|
|
|
|
|
|
|
|
1069
|
|
|
|
|
|
|
[Prereqs / prereqs for @Author::TABULO] |
|
1070
|
|
|
|
|
|
|
-phase = develop |
|
1071
|
|
|
|
|
|
|
-relationship = suggests |
|
1072
|
|
|
|
|
|
|
...all the plugins this bundle uses... |
|
1073
|
|
|
|
|
|
|
|
|
1074
|
|
|
|
|
|
|
[Prereqs / pluginbundle_version] |
|
1075
|
|
|
|
|
|
|
-phase = develop |
|
1076
|
|
|
|
|
|
|
-relationship = recommends |
|
1077
|
|
|
|
|
|
|
Dist::Zilla::PluginBundle::Author::TABULO = <current installed version> |
|
1078
|
|
|
|
|
|
|
|
|
1079
|
|
|
|
|
|
|
|
|
1080
|
|
|
|
|
|
|
;;; Install Tool |
|
1081
|
|
|
|
|
|
|
; <specified installer(s)> |
|
1082
|
|
|
|
|
|
|
|
|
1083
|
|
|
|
|
|
|
[Git::Contributors] |
|
1084
|
|
|
|
|
|
|
:version = 0.029 |
|
1085
|
|
|
|
|
|
|
order_by = commits |
|
1086
|
|
|
|
|
|
|
|
|
1087
|
|
|
|
|
|
|
[StaticInstall] |
|
1088
|
|
|
|
|
|
|
:version = 0.005 |
|
1089
|
|
|
|
|
|
|
mode = auto |
|
1090
|
|
|
|
|
|
|
dry_run = 1 ; only if authority is not ETHER |
|
1091
|
|
|
|
|
|
|
|
|
1092
|
|
|
|
|
|
|
|
|
1093
|
|
|
|
|
|
|
;;; Test Runner |
|
1094
|
|
|
|
|
|
|
; <specified installer(s)> |
|
1095
|
|
|
|
|
|
|
[RunExtraTests] |
|
1096
|
|
|
|
|
|
|
:version = 0.024 |
|
1097
|
|
|
|
|
|
|
default_jobs = 9 |
|
1098
|
|
|
|
|
|
|
|
|
1099
|
|
|
|
|
|
|
|
|
1100
|
|
|
|
|
|
|
;;; After Build |
|
1101
|
|
|
|
|
|
|
[CheckSelfDependency] |
|
1102
|
|
|
|
|
|
|
|
|
1103
|
|
|
|
|
|
|
[Run::AfterBuild / .ackrc] |
|
1104
|
|
|
|
|
|
|
:version = 0.038 |
|
1105
|
|
|
|
|
|
|
quiet = 1 |
|
1106
|
|
|
|
|
|
|
run = bash -c "test -e .ackrc && grep -q -- '--ignore-dir=.latest' .ackrc || echo '--ignore-dir=.latest' >> .ackrc; if [[ `dirname '%d'` != .build ]]; then test -e .ackrc && grep -q -- '--ignore-dir=%d' .ackrc || echo '--ignore-dir=%d' >> .ackrc; fi" |
|
1107
|
|
|
|
|
|
|
[Run::AfterBuild / .latest] |
|
1108
|
|
|
|
|
|
|
:version = 0.041 |
|
1109
|
|
|
|
|
|
|
quiet = 1 |
|
1110
|
|
|
|
|
|
|
fatal_errors = 0 |
|
1111
|
|
|
|
|
|
|
eval = if ('%d' =~ /^%n-[.[:xdigit:]]+$/) { unlink '.latest'; symlink '%d', '.latest'; } |
|
1112
|
|
|
|
|
|
|
|
|
1113
|
|
|
|
|
|
|
|
|
1114
|
|
|
|
|
|
|
;;; Before Release |
|
1115
|
|
|
|
|
|
|
[CheckStrictVersion] |
|
1116
|
|
|
|
|
|
|
decimal_only = 1 |
|
1117
|
|
|
|
|
|
|
|
|
1118
|
|
|
|
|
|
|
[CheckMetaResources] |
|
1119
|
|
|
|
|
|
|
[EnsureLatestPerl] |
|
1120
|
|
|
|
|
|
|
|
|
1121
|
|
|
|
|
|
|
[Git::Check / initial check] |
|
1122
|
|
|
|
|
|
|
allow_dirty = |
|
1123
|
|
|
|
|
|
|
|
|
1124
|
|
|
|
|
|
|
[Git::CheckFor::MergeConflicts] |
|
1125
|
|
|
|
|
|
|
|
|
1126
|
|
|
|
|
|
|
[Git::CheckFor::CorrectBranch] |
|
1127
|
|
|
|
|
|
|
:version = 0.004 |
|
1128
|
|
|
|
|
|
|
release_branch = master |
|
1129
|
|
|
|
|
|
|
|
|
1130
|
|
|
|
|
|
|
[Git::Remote::Check] |
|
1131
|
|
|
|
|
|
|
branch = master |
|
1132
|
|
|
|
|
|
|
remote_branch = master |
|
1133
|
|
|
|
|
|
|
|
|
1134
|
|
|
|
|
|
|
[CheckPrereqsIndexed] |
|
1135
|
|
|
|
|
|
|
:version = 0.019 |
|
1136
|
|
|
|
|
|
|
[TestRelease] |
|
1137
|
|
|
|
|
|
|
[Git::Check / after tests] |
|
1138
|
|
|
|
|
|
|
allow_dirty = |
|
1139
|
|
|
|
|
|
|
[CheckIssues] |
|
1140
|
|
|
|
|
|
|
;(ConfirmRelease) |
|
1141
|
|
|
|
|
|
|
|
|
1142
|
|
|
|
|
|
|
|
|
1143
|
|
|
|
|
|
|
;;; Releaser |
|
1144
|
|
|
|
|
|
|
[UploadToCPAN] |
|
1145
|
|
|
|
|
|
|
|
|
1146
|
|
|
|
|
|
|
|
|
1147
|
|
|
|
|
|
|
;;; AfterRelease |
|
1148
|
|
|
|
|
|
|
[Run::AfterRelease / remove old LICENCE] ; if switching from LICENCE -> LICENSE |
|
1149
|
|
|
|
|
|
|
:version = 0.038 |
|
1150
|
|
|
|
|
|
|
quiet = 1 |
|
1151
|
|
|
|
|
|
|
eval = unlink 'LICENCE' |
|
1152
|
|
|
|
|
|
|
|
|
1153
|
|
|
|
|
|
|
[Run::AfterRelease / remove old LICENSE] ; if switching from LICENSE -> LICENCE |
|
1154
|
|
|
|
|
|
|
:version = 0.038 |
|
1155
|
|
|
|
|
|
|
quiet = 1 |
|
1156
|
|
|
|
|
|
|
eval = unlink 'LICENSE' |
|
1157
|
|
|
|
|
|
|
|
|
1158
|
|
|
|
|
|
|
[Run::AfterRelease / remove old READMEs] |
|
1159
|
|
|
|
|
|
|
:version = 0.038 |
|
1160
|
|
|
|
|
|
|
quiet = 1 |
|
1161
|
|
|
|
|
|
|
eval = unlink 'README.md' |
|
1162
|
|
|
|
|
|
|
|
|
1163
|
|
|
|
|
|
|
[CopyFilesFromRelease / copy generated files] |
|
1164
|
|
|
|
|
|
|
filename = CONTRIBUTING |
|
1165
|
|
|
|
|
|
|
filename = INSTALL |
|
1166
|
|
|
|
|
|
|
filename = LICENCE |
|
1167
|
|
|
|
|
|
|
filename = LICENSE |
|
1168
|
|
|
|
|
|
|
filename = ppport.h |
|
1169
|
|
|
|
|
|
|
|
|
1170
|
|
|
|
|
|
|
[ReadmeAnyFromPod] |
|
1171
|
|
|
|
|
|
|
:version = 0.142180 |
|
1172
|
|
|
|
|
|
|
type = pod |
|
1173
|
|
|
|
|
|
|
location = root |
|
1174
|
|
|
|
|
|
|
phase = release |
|
1175
|
|
|
|
|
|
|
|
|
1176
|
|
|
|
|
|
|
;;;;;; begin [@Git::VersionManager] |
|
1177
|
|
|
|
|
|
|
|
|
1178
|
|
|
|
|
|
|
; this is actually a VersionProvider and FileMunger |
|
1179
|
|
|
|
|
|
|
[RewriteVersion::Transitional] |
|
1180
|
|
|
|
|
|
|
:version = 0.004 |
|
1181
|
|
|
|
|
|
|
global = 1 |
|
1182
|
|
|
|
|
|
|
fallback_version_provider = Git::NextVersion |
|
1183
|
|
|
|
|
|
|
version_regexp = ^v([\d._]+)(-TRIAL)?$ |
|
1184
|
|
|
|
|
|
|
|
|
1185
|
|
|
|
|
|
|
[CopyFilesFromRelease / copy Changes] |
|
1186
|
|
|
|
|
|
|
filename = Changes |
|
1187
|
|
|
|
|
|
|
|
|
1188
|
|
|
|
|
|
|
[Git::Commit / release snapshot] |
|
1189
|
|
|
|
|
|
|
:version = 2.020 |
|
1190
|
|
|
|
|
|
|
add_files_in = . |
|
1191
|
|
|
|
|
|
|
allow_dirty = CONTRIBUTING |
|
1192
|
|
|
|
|
|
|
allow_dirty = Changes |
|
1193
|
|
|
|
|
|
|
allow_dirty = INSTALL |
|
1194
|
|
|
|
|
|
|
allow_dirty = LICENCE |
|
1195
|
|
|
|
|
|
|
allow_dirty = LICENSE |
|
1196
|
|
|
|
|
|
|
allow_dirty = README.md |
|
1197
|
|
|
|
|
|
|
allow_dirty = README.pod |
|
1198
|
|
|
|
|
|
|
allow_dirty = ppport.h |
|
1199
|
|
|
|
|
|
|
commit_msg = %N-%v%t%n%n%c |
|
1200
|
|
|
|
|
|
|
|
|
1201
|
|
|
|
|
|
|
[Git::Tag] |
|
1202
|
|
|
|
|
|
|
tag_message = v%v%t |
|
1203
|
|
|
|
|
|
|
|
|
1204
|
|
|
|
|
|
|
[BumpVersionAfterRelease::Transitional] |
|
1205
|
|
|
|
|
|
|
:version = 0.004 |
|
1206
|
|
|
|
|
|
|
global = 1 |
|
1207
|
|
|
|
|
|
|
|
|
1208
|
|
|
|
|
|
|
[NextRelease] |
|
1209
|
|
|
|
|
|
|
:version = 5.033 |
|
1210
|
|
|
|
|
|
|
time_zone = UTC |
|
1211
|
|
|
|
|
|
|
format = %-8v %{yyyy-MM-dd HH:mm:ss'Z'}d%{ (TRIAL RELEASE)}T |
|
1212
|
|
|
|
|
|
|
|
|
1213
|
|
|
|
|
|
|
[Git::Commit / post-release commit] |
|
1214
|
|
|
|
|
|
|
:version = 2.020 |
|
1215
|
|
|
|
|
|
|
allow_dirty = Changes |
|
1216
|
|
|
|
|
|
|
allow_dirty_match = ^lib/.*\.pm$ |
|
1217
|
|
|
|
|
|
|
commit_msg = increment $VERSION after %v release |
|
1218
|
|
|
|
|
|
|
|
|
1219
|
|
|
|
|
|
|
;;;;;; end [@Git::VersionManager] |
|
1220
|
|
|
|
|
|
|
|
|
1221
|
|
|
|
|
|
|
[Git::Push] |
|
1222
|
|
|
|
|
|
|
|
|
1223
|
|
|
|
|
|
|
[GitHub::Update] ; (if server = 'github' or omitted) |
|
1224
|
|
|
|
|
|
|
:version = 0.40 |
|
1225
|
|
|
|
|
|
|
metacpan = 1 |
|
1226
|
|
|
|
|
|
|
|
|
1227
|
|
|
|
|
|
|
[Run::AfterRelease / install release] |
|
1228
|
|
|
|
|
|
|
:version = 0.031 |
|
1229
|
|
|
|
|
|
|
fatal_errors = 0 |
|
1230
|
|
|
|
|
|
|
run = cpanm http://URMOM:mysekritpassword@pause.perl.org/pub/PAUSE/authors/id/U/UR/URMOM/%a |
|
1231
|
|
|
|
|
|
|
|
|
1232
|
|
|
|
|
|
|
[Run::AfterRelease / release complete] |
|
1233
|
|
|
|
|
|
|
:version = 0.038 |
|
1234
|
|
|
|
|
|
|
quiet = 1 |
|
1235
|
|
|
|
|
|
|
eval = print "release complete!\xa" |
|
1236
|
|
|
|
|
|
|
|
|
1237
|
|
|
|
|
|
|
; listed late, to allow all other plugins which do BeforeRelease checks to run first. |
|
1238
|
|
|
|
|
|
|
[ConfirmRelease] |
|
1239
|
|
|
|
|
|
|
|
|
1240
|
|
|
|
|
|
|
; listed last, to be sure we run at the very end of each phase |
|
1241
|
|
|
|
|
|
|
; only performed if $ENV{USER} matches /^tabulo$/ |
|
1242
|
|
|
|
|
|
|
[VerifyPhases / PHASE VERIFICATION] |
|
1243
|
|
|
|
|
|
|
:version = 0.015 |
|
1244
|
|
|
|
|
|
|
|
|
1245
|
|
|
|
|
|
|
=for Pod::Coverage configure mvp_multivalue_args |
|
1246
|
|
|
|
|
|
|
|
|
1247
|
|
|
|
|
|
|
=for stopwords metacpan |
|
1248
|
|
|
|
|
|
|
|
|
1249
|
|
|
|
|
|
|
The distribution's code is assumed to be hosted at L<github|http://github.com>; |
|
1250
|
|
|
|
|
|
|
L<RT|http://rt.cpan.org> is used as the issue tracker. |
|
1251
|
|
|
|
|
|
|
The home page in the metadata points to L<github|http://github.com>, |
|
1252
|
|
|
|
|
|
|
while the home page on L<github|http://github.com> is updated on release to |
|
1253
|
|
|
|
|
|
|
point to L<metacpan|http://metacpan.org>. |
|
1254
|
|
|
|
|
|
|
The version and other metadata is derived directly from the local git repository. |
|
1255
|
|
|
|
|
|
|
|
|
1256
|
|
|
|
|
|
|
=head1 OPTIONS / OVERRIDES |
|
1257
|
|
|
|
|
|
|
|
|
1258
|
|
|
|
|
|
|
=head2 version |
|
1259
|
|
|
|
|
|
|
|
|
1260
|
|
|
|
|
|
|
Use C<< V=<version> >> in the shell to override the version of the distribution being built; |
|
1261
|
|
|
|
|
|
|
otherwise the version is incremented after each release, in the F<*.pm> files. |
|
1262
|
|
|
|
|
|
|
|
|
1263
|
|
|
|
|
|
|
=head2 pod coverage |
|
1264
|
|
|
|
|
|
|
|
|
1265
|
|
|
|
|
|
|
Subroutines can be considered "covered" for pod coverage tests by adding a |
|
1266
|
|
|
|
|
|
|
directive to pod (as many as you'd like), |
|
1267
|
|
|
|
|
|
|
as described in L<Pod::Coverage::TrustPod>: |
|
1268
|
|
|
|
|
|
|
|
|
1269
|
|
|
|
|
|
|
=for Pod::Coverage foo bar baz |
|
1270
|
|
|
|
|
|
|
|
|
1271
|
|
|
|
|
|
|
=head2 spelling stopwords |
|
1272
|
|
|
|
|
|
|
|
|
1273
|
|
|
|
|
|
|
=for stopwords Stopwords foo bar baz |
|
1274
|
|
|
|
|
|
|
|
|
1275
|
|
|
|
|
|
|
Stopwords for spelling tests can be added by adding a directive to pod (as |
|
1276
|
|
|
|
|
|
|
many as you'd like), as described in L<Pod::Spell/ADDING STOPWORDS>: |
|
1277
|
|
|
|
|
|
|
|
|
1278
|
|
|
|
|
|
|
=for stopwords foo bar baz |
|
1279
|
|
|
|
|
|
|
|
|
1280
|
|
|
|
|
|
|
It is also possible to use the [%PodWeaver] stash in 'dist.ini' to add stopwords, like so : |
|
1281
|
|
|
|
|
|
|
[%PodWeaver] |
|
1282
|
|
|
|
|
|
|
-StopWords.include = foo bar baz |
|
1283
|
|
|
|
|
|
|
|
|
1284
|
|
|
|
|
|
|
Such words will be recognized by the C<[StopWords]|Pod::Weaver::Plugin::StopWords> plugin for C<Pod::Weaver>, |
|
1285
|
|
|
|
|
|
|
which will gather them at the top of your POD (since we set its 'gather' parameter). |
|
1286
|
|
|
|
|
|
|
|
|
1287
|
|
|
|
|
|
|
See also L<[Test::PodSpelling]|Dist::Zilla::Plugin::Test::PodSpelling/stopwords>. |
|
1288
|
|
|
|
|
|
|
|
|
1289
|
|
|
|
|
|
|
=head2 installer |
|
1290
|
|
|
|
|
|
|
|
|
1291
|
|
|
|
|
|
|
=for stopwords ModuleBuildTiny |
|
1292
|
|
|
|
|
|
|
|
|
1293
|
|
|
|
|
|
|
Available since 0.007. |
|
1294
|
|
|
|
|
|
|
|
|
1295
|
|
|
|
|
|
|
The installer back-end(s) to use (can be specified more than once); defaults |
|
1296
|
|
|
|
|
|
|
to L<C<ModuleBuildTiny::Fallback>|Dist::Zilla::Plugin::ModuleBuildTiny::Fallback> |
|
1297
|
|
|
|
|
|
|
and L<C<MakeMaker::Fallback>|Dist::Zilla::Plugin::MakeMaker::Fallback> |
|
1298
|
|
|
|
|
|
|
(which generates a F<Build.PL> for normal use with no-configure-requires |
|
1299
|
|
|
|
|
|
|
protection, and F<Makefile.PL> as a fallback, containing an upgrade warning). |
|
1300
|
|
|
|
|
|
|
For toolchain-grade modules, you should only use F<Makefile.PL>-generating installers. |
|
1301
|
|
|
|
|
|
|
|
|
1302
|
|
|
|
|
|
|
You can select other backends (by plugin name, without the C<[]>), with the |
|
1303
|
|
|
|
|
|
|
C<installer> option, or C<none> if you are supplying your own, as a separate |
|
1304
|
|
|
|
|
|
|
plugin(s). |
|
1305
|
|
|
|
|
|
|
|
|
1306
|
|
|
|
|
|
|
Encouraged choices are: |
|
1307
|
|
|
|
|
|
|
|
|
1308
|
|
|
|
|
|
|
=over 4 |
|
1309
|
|
|
|
|
|
|
|
|
1310
|
|
|
|
|
|
|
=item * |
|
1311
|
|
|
|
|
|
|
|
|
1312
|
|
|
|
|
|
|
C<< installer = ModuleBuildTiny >> |
|
1313
|
|
|
|
|
|
|
|
|
1314
|
|
|
|
|
|
|
=item * |
|
1315
|
|
|
|
|
|
|
|
|
1316
|
|
|
|
|
|
|
C<< installer = MakeMaker >> |
|
1317
|
|
|
|
|
|
|
|
|
1318
|
|
|
|
|
|
|
=item * |
|
1319
|
|
|
|
|
|
|
|
|
1320
|
|
|
|
|
|
|
C<< installer = MakeMaker::Fallback >> (when used in combination with ModuleBuildTiny) |
|
1321
|
|
|
|
|
|
|
|
|
1322
|
|
|
|
|
|
|
=item * |
|
1323
|
|
|
|
|
|
|
|
|
1324
|
|
|
|
|
|
|
C<< installer = =inc::Foo >> (if no configs are needed for this plugin; e.g. subclassed from L<[MakeMaker::Awesome]|Dist::Zilla::Plugin::MakeMaker::Awesome>) |
|
1325
|
|
|
|
|
|
|
|
|
1326
|
|
|
|
|
|
|
=item * |
|
1327
|
|
|
|
|
|
|
|
|
1328
|
|
|
|
|
|
|
C<< installer = none >> (if you are providing your own elsewhere in the file, with configs) |
|
1329
|
|
|
|
|
|
|
|
|
1330
|
|
|
|
|
|
|
=back |
|
1331
|
|
|
|
|
|
|
|
|
1332
|
|
|
|
|
|
|
=head2 server |
|
1333
|
|
|
|
|
|
|
|
|
1334
|
|
|
|
|
|
|
Available since 0.019. |
|
1335
|
|
|
|
|
|
|
|
|
1336
|
|
|
|
|
|
|
If provided, must be one of: |
|
1337
|
|
|
|
|
|
|
|
|
1338
|
|
|
|
|
|
|
=over 4 |
|
1339
|
|
|
|
|
|
|
|
|
1340
|
|
|
|
|
|
|
=item * |
|
1341
|
|
|
|
|
|
|
|
|
1342
|
|
|
|
|
|
|
C<github> |
|
1343
|
|
|
|
|
|
|
|
|
1344
|
|
|
|
|
|
|
(default) |
|
1345
|
|
|
|
|
|
|
metadata and release plugins are tailored to L<github|http://github.com>. |
|
1346
|
|
|
|
|
|
|
|
|
1347
|
|
|
|
|
|
|
=item * |
|
1348
|
|
|
|
|
|
|
|
|
1349
|
|
|
|
|
|
|
C<gitmo> |
|
1350
|
|
|
|
|
|
|
|
|
1351
|
|
|
|
|
|
|
metadata and release plugins are tailored to |
|
1352
|
|
|
|
|
|
|
L<gitmo@git.moose.perl.org|http://git.moose.perl.org>. |
|
1353
|
|
|
|
|
|
|
|
|
1354
|
|
|
|
|
|
|
=item * |
|
1355
|
|
|
|
|
|
|
|
|
1356
|
|
|
|
|
|
|
C<p5sagit> |
|
1357
|
|
|
|
|
|
|
|
|
1358
|
|
|
|
|
|
|
metadata and release plugins are tailored to |
|
1359
|
|
|
|
|
|
|
L<p5sagit@git.shadowcat.co.uk|http://git.shadowcat.co.uk>. |
|
1360
|
|
|
|
|
|
|
|
|
1361
|
|
|
|
|
|
|
=item * |
|
1362
|
|
|
|
|
|
|
|
|
1363
|
|
|
|
|
|
|
C<catagits> |
|
1364
|
|
|
|
|
|
|
|
|
1365
|
|
|
|
|
|
|
metadata and release plugins are tailored to |
|
1366
|
|
|
|
|
|
|
L<catagits@git.shadowcat.co.uk|http://git.shadowcat.co.uk>. |
|
1367
|
|
|
|
|
|
|
|
|
1368
|
|
|
|
|
|
|
=item * |
|
1369
|
|
|
|
|
|
|
|
|
1370
|
|
|
|
|
|
|
C<none> |
|
1371
|
|
|
|
|
|
|
|
|
1372
|
|
|
|
|
|
|
no special configuration of metadata (relating to repositories etc) is done -- |
|
1373
|
|
|
|
|
|
|
you'll need to provide this yourself. |
|
1374
|
|
|
|
|
|
|
|
|
1375
|
|
|
|
|
|
|
=back |
|
1376
|
|
|
|
|
|
|
|
|
1377
|
|
|
|
|
|
|
=head2 airplane |
|
1378
|
|
|
|
|
|
|
|
|
1379
|
|
|
|
|
|
|
Available since 0.053. |
|
1380
|
|
|
|
|
|
|
|
|
1381
|
|
|
|
|
|
|
A boolean option that, when set, removes the use of all plugins that use the |
|
1382
|
|
|
|
|
|
|
network (generally for comparing metadata against PAUSE, and querying the |
|
1383
|
|
|
|
|
|
|
remote git server), as well as blocking the use of the C<release> command. |
|
1384
|
|
|
|
|
|
|
Defaults to false; can also be set with the environment variable C<DZIL_AIRPLANE>. |
|
1385
|
|
|
|
|
|
|
|
|
1386
|
|
|
|
|
|
|
=head2 copy_file_from_release |
|
1387
|
|
|
|
|
|
|
|
|
1388
|
|
|
|
|
|
|
Available in this form since 0.076. |
|
1389
|
|
|
|
|
|
|
|
|
1390
|
|
|
|
|
|
|
A file, to be present in the build, which is copied back to the source |
|
1391
|
|
|
|
|
|
|
repository at release time and committed to git. Can be used more than |
|
1392
|
|
|
|
|
|
|
once. Defaults to: |
|
1393
|
|
|
|
|
|
|
F<LICENCE>, F<LICENSE>, F<CONTRIBUTING>, F<Changes>, F<ppport.h>, F<INSTALL>; |
|
1394
|
|
|
|
|
|
|
defaults are appended to, rather than overwritten. |
|
1395
|
|
|
|
|
|
|
|
|
1396
|
|
|
|
|
|
|
=head2 surgical_podweaver |
|
1397
|
|
|
|
|
|
|
|
|
1398
|
|
|
|
|
|
|
=for stopwords PodWeaver SurgicalPodWeaver |
|
1399
|
|
|
|
|
|
|
|
|
1400
|
|
|
|
|
|
|
Available since 0.051. |
|
1401
|
|
|
|
|
|
|
|
|
1402
|
|
|
|
|
|
|
A boolean option that, when set, uses |
|
1403
|
|
|
|
|
|
|
L<[SurgicalPodWeaver]|Dist::Zilla::Plugin::SurgicalPodWeaver> instead of |
|
1404
|
|
|
|
|
|
|
L<[PodWeaver]|Dist::Zilla::Plugin::SurgicalPodWeaver>, but with all the same |
|
1405
|
|
|
|
|
|
|
options. Defaults to false. |
|
1406
|
|
|
|
|
|
|
|
|
1407
|
|
|
|
|
|
|
=head2 changes_version_columns |
|
1408
|
|
|
|
|
|
|
|
|
1409
|
|
|
|
|
|
|
Available since 0.076. |
|
1410
|
|
|
|
|
|
|
|
|
1411
|
|
|
|
|
|
|
An integer that specifies how many columns (right-padded with whitespace) are |
|
1412
|
|
|
|
|
|
|
allocated in F<Changes> entries to the version string. Defaults to 10 in general (and 12 for TABULO). |
|
1413
|
|
|
|
|
|
|
|
|
1414
|
|
|
|
|
|
|
=head2 licence (or license) |
|
1415
|
|
|
|
|
|
|
|
|
1416
|
|
|
|
|
|
|
Available since 0.101. |
|
1417
|
|
|
|
|
|
|
|
|
1418
|
|
|
|
|
|
|
A string that specifies the name to use for the license file. Defaults to |
|
1419
|
|
|
|
|
|
|
C<LICENCE> for distributions where ETHER or any other known authors who prefer |
|
1420
|
|
|
|
|
|
|
C<LICENCE> have first-come permissions, or C<LICENSE> otherwise. |
|
1421
|
|
|
|
|
|
|
(The pod section for legal information is also adjusted appropriately.) |
|
1422
|
|
|
|
|
|
|
|
|
1423
|
|
|
|
|
|
|
=head2 authority |
|
1424
|
|
|
|
|
|
|
|
|
1425
|
|
|
|
|
|
|
Available since 0.117. |
|
1426
|
|
|
|
|
|
|
|
|
1427
|
|
|
|
|
|
|
A string of the form C<cpan:PAUSEID> that references the PAUSE ID of the user who has primary ("first-come") |
|
1428
|
|
|
|
|
|
|
authority over the distribution and main module namespace. If not provided, it is extracted from the configuration |
|
1429
|
|
|
|
|
|
|
passed through to the L<[Authority]|Dist::Zilla::Plugin::Authority> plugin, and finally defaults to C<cpan:TABULO>. |
|
1430
|
|
|
|
|
|
|
It is presently used for setting C<x_authority> metadata and deciding which spelling is used for the F<LICENCE> |
|
1431
|
|
|
|
|
|
|
file (if the C<licence> configuration is not provided). |
|
1432
|
|
|
|
|
|
|
|
|
1433
|
|
|
|
|
|
|
=head2 fake_release |
|
1434
|
|
|
|
|
|
|
|
|
1435
|
|
|
|
|
|
|
=for stopwords UploadToCPAN FakeRelease |
|
1436
|
|
|
|
|
|
|
|
|
1437
|
|
|
|
|
|
|
Available since 0.122. |
|
1438
|
|
|
|
|
|
|
|
|
1439
|
|
|
|
|
|
|
A boolean option that, when set, removes L<[UploadToCPAN]|Dist::Zilla::Plugin::UploadToCPAN> from the plugin list |
|
1440
|
|
|
|
|
|
|
and replaces it with L<[FakeRelease]|Dist::Zilla::Plugin::FakeRelease>. |
|
1441
|
|
|
|
|
|
|
Defaults to false; can also be set with the environment variable C<FAKE_RELEASE>. |
|
1442
|
|
|
|
|
|
|
|
|
1443
|
|
|
|
|
|
|
=for stopwords customization |
|
1444
|
|
|
|
|
|
|
|
|
1445
|
|
|
|
|
|
|
=head2 other customization options |
|
1446
|
|
|
|
|
|
|
|
|
1447
|
|
|
|
|
|
|
This bundle makes use of L<Dist::Zilla::Role::PluginBundle::PluginRemover> and |
|
1448
|
|
|
|
|
|
|
L<Dist::Zilla::Role::PluginBundle::Config::Slicer> to allow further customization. |
|
1449
|
|
|
|
|
|
|
(Note that even though some overridden values are inspected in this class, |
|
1450
|
|
|
|
|
|
|
they are still overlaid on top of whatever this bundle eventually decides to |
|
1451
|
|
|
|
|
|
|
pass - so what is in the F<dist.ini> always trumps everything else.) |
|
1452
|
|
|
|
|
|
|
|
|
1453
|
|
|
|
|
|
|
Plugins are not loaded until they are actually needed, so it is possible to |
|
1454
|
|
|
|
|
|
|
C<--force>-install this plugin bundle and C<-remove> some plugins that do not |
|
1455
|
|
|
|
|
|
|
install or are otherwise problematic. |
|
1456
|
|
|
|
|
|
|
|
|
1457
|
|
|
|
|
|
|
If a F<weaver.ini> is present in the distribution, pod is woven using it; |
|
1458
|
|
|
|
|
|
|
otherwise, the behaviour is as with a F<weaver.ini> containing the single line |
|
1459
|
|
|
|
|
|
|
C<[@Author::TABULO]> (see L<Pod::Weaver::PluginBundle::Author::TABULO>). |
|
1460
|
|
|
|
|
|
|
|
|
1461
|
|
|
|
|
|
|
=head1 NAMING SCHEME |
|
1462
|
|
|
|
|
|
|
|
|
1463
|
|
|
|
|
|
|
=for stopwords KENTNL |
|
1464
|
|
|
|
|
|
|
|
|
1465
|
|
|
|
|
|
|
This distribution follows best practices for author-oriented plugin bundles; for more information, |
|
1466
|
|
|
|
|
|
|
see L<KENTNL's distribution|Dist::Zilla::PluginBundle::Author::KENTNL/NAMING-SCHEME>. |
|
1467
|
|
|
|
|
|
|
|
|
1468
|
|
|
|
|
|
|
=head1 ORIGINAL AUTHOR |
|
1469
|
|
|
|
|
|
|
|
|
1470
|
|
|
|
|
|
|
This distribution is based on L<Dist::Zilla::PluginBundle::Author::ETHER> by : |
|
1471
|
|
|
|
|
|
|
|
|
1472
|
|
|
|
|
|
|
Karen Etheridge L<cpan:ETHER> |
|
1473
|
|
|
|
|
|
|
|
|
1474
|
|
|
|
|
|
|
Thank you ETHER! |
|
1475
|
|
|
|
|
|
|
|
|
1476
|
|
|
|
|
|
|
=head1 SEE ALSO |
|
1477
|
|
|
|
|
|
|
|
|
1478
|
|
|
|
|
|
|
=over 4 |
|
1479
|
|
|
|
|
|
|
|
|
1480
|
|
|
|
|
|
|
=item * |
|
1481
|
|
|
|
|
|
|
|
|
1482
|
|
|
|
|
|
|
L<Pod::Weaver::PluginBundle::Author::TABULO> |
|
1483
|
|
|
|
|
|
|
|
|
1484
|
|
|
|
|
|
|
=item * |
|
1485
|
|
|
|
|
|
|
|
|
1486
|
|
|
|
|
|
|
L<Dist::Zilla::MintingProfile::Author::TABULO> |
|
1487
|
|
|
|
|
|
|
|
|
1488
|
|
|
|
|
|
|
=item * |
|
1489
|
|
|
|
|
|
|
|
|
1490
|
|
|
|
|
|
|
L<Dist::Zilla::PluginBundle::Git::VersionManager> |
|
1491
|
|
|
|
|
|
|
|
|
1492
|
|
|
|
|
|
|
=item * |
|
1493
|
|
|
|
|
|
|
|
|
1494
|
|
|
|
|
|
|
L<Dist::Zilla::PluginBundle::Author::ETHER> (original bundle by ETHER) |
|
1495
|
|
|
|
|
|
|
|
|
1496
|
|
|
|
|
|
|
=back |
|
1497
|
|
|
|
|
|
|
|
|
1498
|
|
|
|
|
|
|
=head1 SUPPORT |
|
1499
|
|
|
|
|
|
|
|
|
1500
|
|
|
|
|
|
|
Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Dist-Zilla-PluginBundle-Author-TABULO> |
|
1501
|
|
|
|
|
|
|
(or L<bug-Dist-Zilla-PluginBundle-Author-TABULO@rt.cpan.org|mailto:bug-Dist-Zilla-PluginBundle-Author-TABULO@rt.cpan.org>). |
|
1502
|
|
|
|
|
|
|
|
|
1503
|
|
|
|
|
|
|
=head1 AUTHOR |
|
1504
|
|
|
|
|
|
|
|
|
1505
|
|
|
|
|
|
|
Tabulo <tabulo@cpan.org> |
|
1506
|
|
|
|
|
|
|
|
|
1507
|
|
|
|
|
|
|
=head1 CONTRIBUTORS |
|
1508
|
|
|
|
|
|
|
|
|
1509
|
|
|
|
|
|
|
=for stopwords Karen Etheridge Edward Betts Graham Knop Randy Stauner Roy Ivy III СеÑгей Романов Dave Rolsky |
|
1510
|
|
|
|
|
|
|
|
|
1511
|
|
|
|
|
|
|
=over 4 |
|
1512
|
|
|
|
|
|
|
|
|
1513
|
|
|
|
|
|
|
=item * |
|
1514
|
|
|
|
|
|
|
|
|
1515
|
|
|
|
|
|
|
Karen Etheridge <ether@cpan.org> |
|
1516
|
|
|
|
|
|
|
|
|
1517
|
|
|
|
|
|
|
=item * |
|
1518
|
|
|
|
|
|
|
|
|
1519
|
|
|
|
|
|
|
Edward Betts <edward@4angle.com> |
|
1520
|
|
|
|
|
|
|
|
|
1521
|
|
|
|
|
|
|
=item * |
|
1522
|
|
|
|
|
|
|
|
|
1523
|
|
|
|
|
|
|
Graham Knop <haarg@haarg.org> |
|
1524
|
|
|
|
|
|
|
|
|
1525
|
|
|
|
|
|
|
=item * |
|
1526
|
|
|
|
|
|
|
|
|
1527
|
|
|
|
|
|
|
Randy Stauner <rwstauner@cpan.org> |
|
1528
|
|
|
|
|
|
|
|
|
1529
|
|
|
|
|
|
|
=item * |
|
1530
|
|
|
|
|
|
|
|
|
1531
|
|
|
|
|
|
|
Roy Ivy III <rivy@cpan.org> |
|
1532
|
|
|
|
|
|
|
|
|
1533
|
|
|
|
|
|
|
=item * |
|
1534
|
|
|
|
|
|
|
|
|
1535
|
|
|
|
|
|
|
СеÑгей Романов <sromanov@cpan.org> |
|
1536
|
|
|
|
|
|
|
|
|
1537
|
|
|
|
|
|
|
=item * |
|
1538
|
|
|
|
|
|
|
|
|
1539
|
|
|
|
|
|
|
Dave Rolsky <autarch@urth.org> |
|
1540
|
|
|
|
|
|
|
|
|
1541
|
|
|
|
|
|
|
=back |
|
1542
|
|
|
|
|
|
|
|
|
1543
|
|
|
|
|
|
|
=head1 COPYRIGHT AND LICENSE |
|
1544
|
|
|
|
|
|
|
|
|
1545
|
|
|
|
|
|
|
This software is copyright (c) 2018 by Tabulo. |
|
1546
|
|
|
|
|
|
|
|
|
1547
|
|
|
|
|
|
|
This is free software; you can redistribute it and/or modify it under |
|
1548
|
|
|
|
|
|
|
the same terms as the Perl 5 programming language system itself. |
|
1549
|
|
|
|
|
|
|
|
|
1550
|
|
|
|
|
|
|
=cut |
|
1551
|
|
|
|
|
|
|
|
|
1552
|
|
|
|
|
|
|
__END__ |
|
1553
|
|
|
|
|
|
|
|
|
1554
|
|
|
|
|
|
|
#region pod |
|
1555
|
|
|
|
|
|
|
|
|
1556
|
|
|
|
|
|
|
|
|
1557
|
|
|
|
|
|
|
#endregion pod |