line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
21
|
|
|
21
|
|
16767259
|
use strict; |
|
21
|
|
|
|
|
201
|
|
|
21
|
|
|
|
|
705
|
|
2
|
21
|
|
|
21
|
|
119
|
use warnings; |
|
21
|
|
|
|
|
45
|
|
|
21
|
|
|
|
|
1664
|
|
3
|
|
|
|
|
|
|
package Dist::Zilla::PluginBundle::Author::ETHER; # git description: v0.161-6-g8e9216b |
4
|
|
|
|
|
|
|
# vim: set ts=8 sts=2 sw=2 tw=100 et : |
5
|
|
|
|
|
|
|
# ABSTRACT: A plugin bundle for distributions built by ETHER |
6
|
|
|
|
|
|
|
# KEYWORDS: author bundle distribution tool |
7
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
our $VERSION = '0.162'; |
9
|
|
|
|
|
|
|
|
10
|
21
|
|
|
21
|
|
1384
|
use if "$]" >= 5.022, experimental => 're_strict'; |
|
21
|
|
|
|
|
72
|
|
|
21
|
|
|
|
|
258
|
|
11
|
21
|
|
|
21
|
|
2709
|
no if "$]" >= 5.031009, feature => 'indirect'; |
|
21
|
|
|
|
|
65
|
|
|
21
|
|
|
|
|
188
|
|
12
|
21
|
|
|
21
|
|
967
|
no if "$]" >= 5.033001, feature => 'multidimensional'; |
|
21
|
|
|
|
|
57
|
|
|
21
|
|
|
|
|
142
|
|
13
|
21
|
|
|
21
|
|
963
|
no if "$]" >= 5.033006, feature => 'bareword_filehandles'; |
|
21
|
|
|
|
|
55
|
|
|
21
|
|
|
|
|
121
|
|
14
|
21
|
|
|
21
|
|
8978
|
use Moose; |
|
21
|
|
|
|
|
5088451
|
|
|
21
|
|
|
|
|
173
|
|
15
|
|
|
|
|
|
|
with |
16
|
|
|
|
|
|
|
'Dist::Zilla::Role::PluginBundle::Easy', |
17
|
|
|
|
|
|
|
'Dist::Zilla::Role::PluginBundle::PluginRemover' => { -version => '0.103' }, |
18
|
|
|
|
|
|
|
'Dist::Zilla::Role::PluginBundle::Config::Slicer'; |
19
|
|
|
|
|
|
|
|
20
|
21
|
|
|
21
|
|
171896
|
use Dist::Zilla::Util; |
|
21
|
|
|
|
|
344551
|
|
|
21
|
|
|
|
|
976
|
|
21
|
21
|
|
|
21
|
|
192
|
use Moose::Util::TypeConstraints qw(enum subtype where class_type); |
|
21
|
|
|
|
|
64
|
|
|
21
|
|
|
|
|
254
|
|
22
|
21
|
|
|
21
|
|
17690
|
use List::Util 1.45 qw(first any uniq none); |
|
21
|
|
|
|
|
514
|
|
|
21
|
|
|
|
|
1878
|
|
23
|
21
|
|
|
21
|
|
159
|
use Module::Runtime qw(require_module use_module); |
|
21
|
|
|
|
|
66
|
|
|
21
|
|
|
|
|
193
|
|
24
|
21
|
|
|
21
|
|
11842
|
use Devel::CheckBin 'can_run'; |
|
21
|
|
|
|
|
2078367
|
|
|
21
|
|
|
|
|
1644
|
|
25
|
21
|
|
|
21
|
|
197
|
use Path::Tiny; |
|
21
|
|
|
|
|
96
|
|
|
21
|
|
|
|
|
1064
|
|
26
|
21
|
|
|
21
|
|
11979
|
use CPAN::Meta 2.150006; # for x_* preservation |
|
21
|
|
|
|
|
603700
|
|
|
21
|
|
|
|
|
758
|
|
27
|
21
|
|
|
21
|
|
204
|
use CPAN::Meta::Requirements; |
|
21
|
|
|
|
|
64
|
|
|
21
|
|
|
|
|
501
|
|
28
|
21
|
|
|
21
|
|
12611
|
use Term::ANSIColor 'colored'; |
|
21
|
|
|
|
|
161481
|
|
|
21
|
|
|
|
|
17193
|
|
29
|
|
|
|
|
|
|
eval { +require Win32::Console::ANSI } if $^O eq 'MSWin32'; |
30
|
21
|
|
|
21
|
|
216
|
use Config; |
|
21
|
|
|
|
|
53
|
|
|
21
|
|
|
|
|
891
|
|
31
|
21
|
|
|
21
|
|
142
|
use Try::Tiny; |
|
21
|
|
|
|
|
65
|
|
|
21
|
|
|
|
|
1647
|
|
32
|
21
|
|
|
21
|
|
8599
|
use URI::Escape 'uri_escape'; |
|
21
|
|
|
|
|
25793
|
|
|
21
|
|
|
|
|
1424
|
|
33
|
21
|
|
|
21
|
|
213
|
use namespace::autoclean; |
|
21
|
|
|
|
|
83
|
|
|
21
|
|
|
|
|
468
|
|
34
|
|
|
|
|
|
|
|
35
|
|
|
|
|
|
|
sub mvp_multivalue_args { qw(installer copy_file_from_release) } |
36
|
|
|
|
|
|
|
|
37
|
|
|
|
|
|
|
# Note: no support yet for depending on a specific version of the plugin -- |
38
|
|
|
|
|
|
|
# but [PromptIfStale] generally makes that unnecessary |
39
|
|
|
|
|
|
|
has installer => ( |
40
|
|
|
|
|
|
|
isa => 'ArrayRef[Str]', |
41
|
|
|
|
|
|
|
init_arg => undef, |
42
|
|
|
|
|
|
|
lazy => 1, |
43
|
|
|
|
|
|
|
default => sub { |
44
|
|
|
|
|
|
|
my $self = shift; |
45
|
|
|
|
|
|
|
|
46
|
|
|
|
|
|
|
return [ 'MakeMaker::Fallback', 'ModuleBuildTiny::Fallback' ] |
47
|
|
|
|
|
|
|
if not exists $self->payload->{installer}; |
48
|
|
|
|
|
|
|
|
49
|
|
|
|
|
|
|
# remove 'none' from installer list |
50
|
|
|
|
|
|
|
return [ grep $_ ne 'none', @{ $self->payload->{installer} } ]; |
51
|
|
|
|
|
|
|
}, |
52
|
|
|
|
|
|
|
traits => ['Array'], |
53
|
|
|
|
|
|
|
handles => { installer => 'elements' }, |
54
|
|
|
|
|
|
|
); |
55
|
|
|
|
|
|
|
|
56
|
|
|
|
|
|
|
has server => ( |
57
|
|
|
|
|
|
|
is => 'ro', isa => enum([qw(github gitmo p5sagit catagits none)]), |
58
|
|
|
|
|
|
|
init_arg => undef, |
59
|
|
|
|
|
|
|
lazy => 1, |
60
|
|
|
|
|
|
|
default => sub { $_[0]->payload->{server} // 'github' }, |
61
|
|
|
|
|
|
|
); |
62
|
|
|
|
|
|
|
|
63
|
|
|
|
|
|
|
has bugtracker => ( |
64
|
|
|
|
|
|
|
is => 'ro', isa => enum([qw(rt github)]), |
65
|
|
|
|
|
|
|
init_arg => undef, |
66
|
|
|
|
|
|
|
lazy => 1, |
67
|
|
|
|
|
|
|
default => sub { |
68
|
|
|
|
|
|
|
my $bugtracker = $_[0]->payload->{bugtracker} // 'rt'; |
69
|
|
|
|
|
|
|
die 'bugtracker cannot be github unless server = github' |
70
|
|
|
|
|
|
|
if $bugtracker eq 'github' and $_[0]->server ne 'github'; |
71
|
|
|
|
|
|
|
$bugtracker; |
72
|
|
|
|
|
|
|
}, |
73
|
|
|
|
|
|
|
); |
74
|
|
|
|
|
|
|
|
75
|
|
|
|
|
|
|
has surgical_podweaver => ( |
76
|
|
|
|
|
|
|
is => 'ro', isa => 'Bool', |
77
|
|
|
|
|
|
|
init_arg => undef, |
78
|
|
|
|
|
|
|
lazy => 1, |
79
|
|
|
|
|
|
|
default => sub { $_[0]->payload->{surgical_podweaver} // 0 }, |
80
|
|
|
|
|
|
|
); |
81
|
|
|
|
|
|
|
|
82
|
|
|
|
|
|
|
has airplane => ( |
83
|
|
|
|
|
|
|
is => 'ro', isa => 'Bool', |
84
|
|
|
|
|
|
|
init_arg => undef, |
85
|
|
|
|
|
|
|
lazy => 1, |
86
|
|
|
|
|
|
|
default => sub { $ENV{DZIL_AIRPLANE} || $_[0]->payload->{airplane} // 0 }, |
87
|
|
|
|
|
|
|
); |
88
|
|
|
|
|
|
|
|
89
|
|
|
|
|
|
|
has copy_file_from_release => ( |
90
|
|
|
|
|
|
|
isa => 'ArrayRef[Str]', |
91
|
|
|
|
|
|
|
init_arg => undef, |
92
|
|
|
|
|
|
|
lazy => 1, |
93
|
|
|
|
|
|
|
default => sub { $_[0]->payload->{copy_file_from_release} // [] }, |
94
|
|
|
|
|
|
|
traits => ['Array'], |
95
|
|
|
|
|
|
|
handles => { copy_files_from_release => 'elements' }, |
96
|
|
|
|
|
|
|
); |
97
|
|
|
|
|
|
|
|
98
|
|
|
|
|
|
|
around copy_files_from_release => sub { |
99
|
|
|
|
|
|
|
my $orig = shift; my $self = shift; |
100
|
|
|
|
|
|
|
sort(uniq($self->$orig(@_), |
101
|
|
|
|
|
|
|
qw(LICENCE LICENSE CONTRIBUTING ppport.h INSTALL), |
102
|
|
|
|
|
|
|
$self->cpanfile ? 'cpanfile' : (), |
103
|
|
|
|
|
|
|
)); |
104
|
|
|
|
|
|
|
}; |
105
|
|
|
|
|
|
|
|
106
|
|
|
|
|
|
|
sub commit_files_after_release { |
107
|
40
|
|
|
40
|
0
|
369
|
grep -e, sort(uniq('README.md', 'README.pod', 'Changes', shift->copy_files_from_release)); |
108
|
|
|
|
|
|
|
} |
109
|
|
|
|
|
|
|
|
110
|
|
|
|
|
|
|
has changes_version_columns => ( |
111
|
|
|
|
|
|
|
is => 'ro', isa => subtype('Int', where { $_ > 0 && $_ < 20 }), |
112
|
|
|
|
|
|
|
init_arg => undef, |
113
|
|
|
|
|
|
|
lazy => 1, |
114
|
|
|
|
|
|
|
default => sub { $_[0]->payload->{changes_version_columns} // 10 }, |
115
|
|
|
|
|
|
|
); |
116
|
|
|
|
|
|
|
|
117
|
|
|
|
|
|
|
has licence => ( |
118
|
|
|
|
|
|
|
is => 'ro', isa => 'Str', |
119
|
|
|
|
|
|
|
init_arg => undef, |
120
|
|
|
|
|
|
|
lazy => 1, |
121
|
|
|
|
|
|
|
default => sub { |
122
|
|
|
|
|
|
|
my $self = shift; |
123
|
|
|
|
|
|
|
my $authority = $self->authority; |
124
|
|
|
|
|
|
|
$self->payload->{licence} |
125
|
|
|
|
|
|
|
// $self->payload->{license} |
126
|
|
|
|
|
|
|
# licenSe is US-only; known non-American authors will be treated appropriately. |
127
|
|
|
|
|
|
|
// ((any { $authority eq "cpan:$_" } |
128
|
|
|
|
|
|
|
qw(ETHER ABERGMAN AVAR BINGOS BOBTFISH CHANSEN CHOLET DOHERTY FLORA GAAS GETTY GSAR ILMARI JAWNSY JQUELIN LBROCARD LEONT LLAP MANWAR MSTROUT NEILB NUFFIN OALDERS PERIGRIN PHAYLON RELEQUEST SALVA)) |
129
|
|
|
|
|
|
|
? 'LICENCE' : 'LICENSE'); |
130
|
|
|
|
|
|
|
}, |
131
|
|
|
|
|
|
|
); |
132
|
|
|
|
|
|
|
|
133
|
|
|
|
|
|
|
has authority => ( |
134
|
|
|
|
|
|
|
is => 'ro', isa => 'Str', |
135
|
|
|
|
|
|
|
init_arg => undef, |
136
|
|
|
|
|
|
|
lazy => 1, |
137
|
|
|
|
|
|
|
default => sub { |
138
|
|
|
|
|
|
|
my $self = shift; |
139
|
|
|
|
|
|
|
|
140
|
|
|
|
|
|
|
# we could warn about this, but then we'd have to change configs (and bump prereqs) for an awful lot of |
141
|
|
|
|
|
|
|
# distributions. |
142
|
|
|
|
|
|
|
return $self->payload->{'Authority.authority'} |
143
|
|
|
|
|
|
|
if exists $self->payload->{'Authority.authority'}; |
144
|
|
|
|
|
|
|
|
145
|
|
|
|
|
|
|
$self->payload->{authority} // 'cpan:ETHER'; |
146
|
|
|
|
|
|
|
}, |
147
|
|
|
|
|
|
|
); |
148
|
|
|
|
|
|
|
|
149
|
|
|
|
|
|
|
has fake_release => ( |
150
|
|
|
|
|
|
|
is => 'ro', isa => 'Bool', |
151
|
|
|
|
|
|
|
init_arg => undef, |
152
|
|
|
|
|
|
|
lazy => 1, |
153
|
|
|
|
|
|
|
default => sub { $ENV{FAKE_RELEASE} || $_[0]->payload->{fake_release} // 0 }, |
154
|
|
|
|
|
|
|
); |
155
|
|
|
|
|
|
|
|
156
|
|
|
|
|
|
|
has plugin_prereq_phase => ( |
157
|
|
|
|
|
|
|
is => 'ro', |
158
|
|
|
|
|
|
|
isa => 'Str', |
159
|
|
|
|
|
|
|
lazy => 1, |
160
|
|
|
|
|
|
|
default => sub { $_[0]->payload->{plugin_prereq_phase} // 'x_Dist_Zilla' }, |
161
|
|
|
|
|
|
|
); |
162
|
|
|
|
|
|
|
|
163
|
|
|
|
|
|
|
has plugin_prereq_relationship => ( |
164
|
|
|
|
|
|
|
is => 'ro', |
165
|
|
|
|
|
|
|
isa => 'Str', |
166
|
|
|
|
|
|
|
lazy => 1, |
167
|
|
|
|
|
|
|
default => sub { $_[0]->payload->{plugin_prereq_relationship} // 'requires' }, |
168
|
|
|
|
|
|
|
); |
169
|
|
|
|
|
|
|
|
170
|
|
|
|
|
|
|
has cpanfile => ( |
171
|
|
|
|
|
|
|
is => 'ro', isa => 'Bool', |
172
|
|
|
|
|
|
|
init_arg => undef, |
173
|
|
|
|
|
|
|
lazy => 1, |
174
|
|
|
|
|
|
|
default => sub { $_[0]->payload->{cpanfile} // 0 }, |
175
|
|
|
|
|
|
|
); |
176
|
|
|
|
|
|
|
|
177
|
|
|
|
|
|
|
sub pause_cfg_file () { '.pause' } |
178
|
0
|
0
|
0
|
0
|
0
|
0
|
sub pause_cfg_dir () { $^O eq 'MSWin32' && "$]" < 5.016 ? $ENV{HOME} || $ENV{USERPROFILE} : (<~>)[0] } |
|
|
|
0
|
|
|
|
|
179
|
|
|
|
|
|
|
|
180
|
|
|
|
|
|
|
my $_pause_config; |
181
|
|
|
|
|
|
|
sub _pause_config { |
182
|
|
|
|
|
|
|
return $_pause_config if $_pause_config; |
183
|
|
|
|
|
|
|
|
184
|
|
|
|
|
|
|
# stolen shamelessly from Dist::Zilla::Plugin::UploadToCPAN |
185
|
|
|
|
|
|
|
my $self = shift; |
186
|
|
|
|
|
|
|
require CPAN::Uploader; |
187
|
|
|
|
|
|
|
my $file = $self->pause_cfg_file; |
188
|
|
|
|
|
|
|
$file = File::Spec->catfile($self->pause_cfg_dir, $file) |
189
|
|
|
|
|
|
|
unless File::Spec->file_name_is_absolute($file); |
190
|
|
|
|
|
|
|
return {} unless -e $file && -r _; |
191
|
|
|
|
|
|
|
my $cfg = try { |
192
|
|
|
|
|
|
|
CPAN::Uploader->read_config_file($file) |
193
|
|
|
|
|
|
|
} catch { |
194
|
|
|
|
|
|
|
warn "[\@Author::ETHER] Couldn't load credentials from '$file': $_"; |
195
|
|
|
|
|
|
|
{}; |
196
|
|
|
|
|
|
|
}; |
197
|
|
|
|
|
|
|
return $cfg; |
198
|
|
|
|
|
|
|
} |
199
|
|
|
|
|
|
|
|
200
|
|
|
|
|
|
|
sub _pause_download_url { |
201
|
40
|
|
|
40
|
|
137
|
my $self = shift; |
202
|
40
|
|
|
|
|
129
|
my ($username, $password) = @{$self->_pause_config}{qw(user password)}; |
|
40
|
|
|
|
|
560
|
|
203
|
40
|
50
|
33
|
|
|
1545
|
return if not $username or not $password; |
204
|
40
|
|
|
|
|
583
|
$password = uri_escape($password) =~ s/%/%%/gr; |
205
|
40
|
|
|
|
|
2793
|
'http://'.$username.':'.$password.'@pause.perl.org/pub/PAUSE/authors/id/'.substr($username, 0, 1).'/'.substr($username,0,2).'/'.$username.'/%a'; |
206
|
|
|
|
|
|
|
} |
207
|
|
|
|
|
|
|
|
208
|
|
|
|
|
|
|
# configs are applied when plugins match ->isa($key) or ->does($key) |
209
|
|
|
|
|
|
|
my %extra_args = ( |
210
|
|
|
|
|
|
|
'Dist::Zilla::Plugin::MakeMaker' => { 'eumm_version' => '0' }, |
211
|
|
|
|
|
|
|
'Dist::Zilla::Plugin::ModuleBuildTiny' => { ':version' => '0.012', version_method => 'conservative', static => 'auto' }, |
212
|
|
|
|
|
|
|
'Dist::Zilla::Plugin::MakeMaker::Fallback' => { ':version' => '0.029' }, |
213
|
|
|
|
|
|
|
# default_jobs is no-op until Dist::Zilla 5.014 |
214
|
|
|
|
|
|
|
'Dist::Zilla::Role::TestRunner' => { default_jobs => 9 }, |
215
|
|
|
|
|
|
|
'Dist::Zilla::Plugin::ModuleBuild' => { mb_version => '0.28' }, |
216
|
|
|
|
|
|
|
'Dist::Zilla::Plugin::ModuleBuildTiny::Fallback' => { ':version' => '0.018', version_method => 'conservative', static => 'auto' }, |
217
|
|
|
|
|
|
|
); |
218
|
|
|
|
|
|
|
|
219
|
|
|
|
|
|
|
# plugins that use the network when they run |
220
|
|
|
|
|
|
|
sub _network_plugins { |
221
|
5
|
|
|
5
|
|
3438663
|
qw( |
222
|
|
|
|
|
|
|
PromptIfStale |
223
|
|
|
|
|
|
|
Test::Pod::LinkCheck |
224
|
|
|
|
|
|
|
Test::Pod::No404s |
225
|
|
|
|
|
|
|
Git::Remote::Check |
226
|
|
|
|
|
|
|
CheckPrereqsIndexed |
227
|
|
|
|
|
|
|
CheckIssues |
228
|
|
|
|
|
|
|
UploadToCPAN |
229
|
|
|
|
|
|
|
Git::Push |
230
|
|
|
|
|
|
|
); |
231
|
|
|
|
|
|
|
} |
232
|
|
|
|
|
|
|
|
233
|
|
|
|
|
|
|
has _has_bash => ( |
234
|
|
|
|
|
|
|
is => 'ro', |
235
|
|
|
|
|
|
|
isa => 'Bool', |
236
|
|
|
|
|
|
|
lazy => 1, |
237
|
|
|
|
|
|
|
default => sub { !!can_run('bash') }, |
238
|
|
|
|
|
|
|
); |
239
|
|
|
|
|
|
|
|
240
|
|
|
|
|
|
|
# note this is applied to the plugin list in Dist::Zilla::Role::PluginBundle::PluginRemover, |
241
|
|
|
|
|
|
|
# but we also need to use it here to be sure we are not adding configs that are only needed |
242
|
|
|
|
|
|
|
# by plugins that will be subsequently removed. |
243
|
|
|
|
|
|
|
has _removed_plugins => ( |
244
|
|
|
|
|
|
|
isa => 'HashRef[Str]', |
245
|
|
|
|
|
|
|
init_arg => undef, |
246
|
|
|
|
|
|
|
lazy => 1, |
247
|
|
|
|
|
|
|
default => sub { |
248
|
|
|
|
|
|
|
my $self = shift; |
249
|
|
|
|
|
|
|
my $remove = $self->payload->{ $self->plugin_remover_attribute } // []; |
250
|
|
|
|
|
|
|
my %removed; @removed{@$remove} = (!!1) x @$remove; |
251
|
|
|
|
|
|
|
\%removed; |
252
|
|
|
|
|
|
|
}, |
253
|
|
|
|
|
|
|
traits => ['Hash'], |
254
|
|
|
|
|
|
|
handles => { _plugin_removed => 'exists', _removed_plugins => 'keys' }, |
255
|
|
|
|
|
|
|
); |
256
|
|
|
|
|
|
|
|
257
|
|
|
|
|
|
|
# this attribute and its supporting code is a candidate to be extracted out into its own role, |
258
|
|
|
|
|
|
|
# for re-use in other bundles |
259
|
|
|
|
|
|
|
has _plugin_requirements => ( |
260
|
|
|
|
|
|
|
isa => class_type('CPAN::Meta::Requirements'), |
261
|
|
|
|
|
|
|
lazy => 1, |
262
|
|
|
|
|
|
|
default => sub { CPAN::Meta::Requirements->new }, |
263
|
|
|
|
|
|
|
handles => { |
264
|
|
|
|
|
|
|
_add_minimum_plugin_requirement => 'add_minimum', |
265
|
|
|
|
|
|
|
_plugin_requirements_as_string_hash => 'as_string_hash', |
266
|
|
|
|
|
|
|
}, |
267
|
|
|
|
|
|
|
); |
268
|
|
|
|
|
|
|
|
269
|
|
|
|
|
|
|
# files that might be in the repository that should never be gathered |
270
|
|
|
|
|
|
|
my @never_gather = grep -e, qw( |
271
|
|
|
|
|
|
|
Makefile.PL ppport.h README.md README.pod META.json |
272
|
|
|
|
|
|
|
cpanfile TODO CONTRIBUTING LICENCE LICENSE INSTALL |
273
|
|
|
|
|
|
|
inc/ExtUtils/MakeMaker/Dist/Zilla/Develop.pm |
274
|
|
|
|
|
|
|
); |
275
|
|
|
|
|
|
|
|
276
|
|
|
|
|
|
|
sub BUILD { |
277
|
43
|
|
|
43
|
0
|
472687
|
my $self = shift; |
278
|
|
|
|
|
|
|
|
279
|
43
|
100
|
|
|
|
2270
|
if ($self->airplane) { |
280
|
3
|
|
|
|
|
34
|
warn '[@Author::ETHER] ' . colored('building in airplane mode - plugins requiring the network are skipped, and releases are not permitted', 'yellow') . "\n"; |
281
|
|
|
|
|
|
|
|
282
|
|
|
|
|
|
|
# doing this before running configure means we can be sure we update the removal list before |
283
|
|
|
|
|
|
|
# our _removed_plugins attribute is built. |
284
|
3
|
|
|
|
|
257
|
push @{ $self->payload->{ $self->plugin_remover_attribute } }, $self->_network_plugins; |
|
3
|
|
|
|
|
114
|
|
285
|
|
|
|
|
|
|
} |
286
|
|
|
|
|
|
|
} |
287
|
|
|
|
|
|
|
|
288
|
|
|
|
|
|
|
sub configure { |
289
|
|
|
|
|
|
|
my $self = shift; |
290
|
|
|
|
|
|
|
|
291
|
|
|
|
|
|
|
warn '[DZ] Building with ', blessed($self), ' ', $VERSION, "...\n" |
292
|
|
|
|
|
|
|
if not $INC{'Test/More.pm'}; |
293
|
|
|
|
|
|
|
|
294
|
|
|
|
|
|
|
warn '[@Author::ETHER] no "bash" executable found; skipping Run::AfterBuild command to update .ackrc', "\n" |
295
|
|
|
|
|
|
|
if not $INC{'Test/More.pm'} and not $self->_has_bash; |
296
|
|
|
|
|
|
|
|
297
|
|
|
|
|
|
|
# NOTE! since the working directory has not changed to $zilla->root yet |
298
|
|
|
|
|
|
|
# (and in future versions of Dist::Zilla, it may never change...) |
299
|
|
|
|
|
|
|
# if running this code via a different mechanism than dzil <command>, file |
300
|
|
|
|
|
|
|
# operations may be looking at the wrong directory! Take this into |
301
|
|
|
|
|
|
|
# consideration when running tests! |
302
|
|
|
|
|
|
|
|
303
|
|
|
|
|
|
|
my $has_xs = glob('*.xs') ? 1 : 0; |
304
|
|
|
|
|
|
|
warn '[@Author::ETHER] XS-based distribution detected.', "\n" if $has_xs; |
305
|
|
|
|
|
|
|
die '[@Author::ETHER] no Makefile.PL found in the repository root: this is not very nice for contributors!', "\n" |
306
|
|
|
|
|
|
|
if $has_xs and not -e 'Makefile.PL'; |
307
|
|
|
|
|
|
|
|
308
|
|
|
|
|
|
|
# check for a bin/ that should probably be renamed to script/ |
309
|
|
|
|
|
|
|
warn '[@Author::ETHER] ', colored('bin/ detected - should this be moved to script/, so its contents can be installed into $PATH?', 'bright_red'), "\n" |
310
|
|
|
|
|
|
|
if -d 'bin' and any { $_ eq 'ModuleBuildTiny' } $self->installer; |
311
|
|
|
|
|
|
|
|
312
|
|
|
|
|
|
|
warn '[@Author::ETHER] ', colored('You are using [ModuleBuild] as an installer, WTF?!', 'bright_red'), "\n" |
313
|
|
|
|
|
|
|
if any { $_->isa('Dist::Zilla::Plugin::ModuleBuild') } |
314
|
|
|
|
|
|
|
map Dist::Zilla::Util->expand_config_package_name($_), $self->installer; |
315
|
|
|
|
|
|
|
|
316
|
|
|
|
|
|
|
# this is better than injecting a perl prereq for 5.008, to allow MBT to |
317
|
|
|
|
|
|
|
# become more 5.006-compatible in the future without forcing the distribution to be re-released. |
318
|
|
|
|
|
|
|
die 'Module::Build::Tiny should not be used in distributions that are targeting perl 5.006!' |
319
|
|
|
|
|
|
|
if any { /ModuleBuildTiny/ } $self->installer |
320
|
|
|
|
|
|
|
and (not exists $self->payload->{'Test::MinimumVersion.max_target_perl'} |
321
|
|
|
|
|
|
|
or $self->payload->{'Test::MinimumVersion.max_target_perl'} < '5.008'); |
322
|
|
|
|
|
|
|
|
323
|
|
|
|
|
|
|
warn '[@Author::ETHER] ', colored('.git is missing and META.json is present -- this looks like a CPAN download rather than a git repository. You should probably run ' |
324
|
|
|
|
|
|
|
. (-f 'Build.PL' ? 'perl Build.PL; ./Build' : 'perl Makefile.PL; make') . ' instead of using dzil commands!', 'yellow'), "\n" |
325
|
|
|
|
|
|
|
if not -d '.git' and -f 'META.json' and not $self->_plugin_removed('Git::GatherDir'); |
326
|
|
|
|
|
|
|
|
327
|
|
|
|
|
|
|
# only set x_static_install using auto mode for my own distributions |
328
|
|
|
|
|
|
|
# (for all other distributions, set explicitly to on or off) |
329
|
|
|
|
|
|
|
# Note that this is just the default; if a dist.ini changed these values, ConfigSlicer will apply it later |
330
|
|
|
|
|
|
|
my $static_install_mode = $self->payload->{'StaticInstall.mode'} // 'auto'; |
331
|
|
|
|
|
|
|
my $static_install_dry_run = ($static_install_mode eq 'auto' |
332
|
|
|
|
|
|
|
and $self->authority ne 'cpan:ETHER') ? 1 : 0; |
333
|
|
|
|
|
|
|
|
334
|
|
|
|
|
|
|
warn '[@Author::ETHER] ', colored('server = ' . $self->server |
335
|
|
|
|
|
|
|
. ': recommend instead using server = github and GithubMeta.remote = ' |
336
|
|
|
|
|
|
|
. $self->server . ' with a read-only mirror', 'yellow'), "\n" |
337
|
|
|
|
|
|
|
if $self->server ne 'github' and $self->server ne 'none'; |
338
|
|
|
|
|
|
|
|
339
|
|
|
|
|
|
|
# method modifier will also apply default configs, compile plugin prereqs |
340
|
|
|
|
|
|
|
$self->add_plugins( |
341
|
|
|
|
|
|
|
# adding this first indicates the start of the bundle in x_Dist_Zilla metadata |
342
|
|
|
|
|
|
|
[ 'Prereqs' => 'pluginbundle version' => { |
343
|
|
|
|
|
|
|
'-phase' => 'develop', '-relationship' => 'recommends', |
344
|
|
|
|
|
|
|
$self->meta->name => $self->VERSION, |
345
|
|
|
|
|
|
|
} ], |
346
|
|
|
|
|
|
|
|
347
|
|
|
|
|
|
|
# VersionProvider |
348
|
|
|
|
|
|
|
# see [@Git::VersionManager] |
349
|
|
|
|
|
|
|
|
350
|
|
|
|
|
|
|
# Before Build |
351
|
|
|
|
|
|
|
# [ 'EnsurePrereqsInstalled' ], # FIXME: use options to make this less annoying! |
352
|
|
|
|
|
|
|
[ 'PromptIfStale' => 'stale modules, build' => { phase => 'build', module => [ $self->meta->name ] } ], |
353
|
|
|
|
|
|
|
|
354
|
|
|
|
|
|
|
# ExecFiles |
355
|
|
|
|
|
|
|
(-d ($self->payload->{'ExecDir.dir'} // 'script') || any { /^ExecDir\./ } keys %{ $self->payload }) |
356
|
|
|
|
|
|
|
? [ 'ExecDir' => { dir => 'script' } ] : (), |
357
|
|
|
|
|
|
|
|
358
|
|
|
|
|
|
|
# Finders |
359
|
|
|
|
|
|
|
[ 'FileFinder::ByName' => Examples => { dir => 'examples' } ], |
360
|
|
|
|
|
|
|
|
361
|
|
|
|
|
|
|
# Gather Files |
362
|
|
|
|
|
|
|
[ 'Git::GatherDir' => { ':version' => '2.016', @never_gather ? ( exclude_filename => \@never_gather) : () } ], |
363
|
|
|
|
|
|
|
|
364
|
|
|
|
|
|
|
qw(MetaYAML MetaJSON Readme Manifest), |
365
|
|
|
|
|
|
|
|
366
|
|
|
|
|
|
|
$self->cpanfile ? [ 'CPANFile' ] : (), |
367
|
|
|
|
|
|
|
|
368
|
|
|
|
|
|
|
[ 'License' => { ':version' => '5.038', filename => $self->licence } ], |
369
|
|
|
|
|
|
|
[ 'GenerateFile::FromShareDir' => 'generate CONTRIBUTING' => { -dist => 'Dist-Zilla-PluginBundle-Author-ETHER', -filename => 'CONTRIBUTING', has_xs => $has_xs } ], |
370
|
|
|
|
|
|
|
[ 'InstallGuide' => { ':version' => '1.200005' } ], |
371
|
|
|
|
|
|
|
|
372
|
|
|
|
|
|
|
[ 'Test::Compile' => { ':version' => '2.039', bail_out_on_fail => 1, xt_mode => 1, |
373
|
|
|
|
|
|
|
script_finder => [qw(:PerlExecFiles @Author::ETHER/Examples)] } ], |
374
|
|
|
|
|
|
|
[ 'Test::NoTabs' => { ':version' => '0.08', finder => [qw(:InstallModules :ExecFiles @Author::ETHER/Examples :TestFiles :ExtraTestFiles)] } ], |
375
|
|
|
|
|
|
|
[ 'Test::EOL' => { ':version' => '0.17', finder => [qw(:InstallModules :ExecFiles @Author::ETHER/Examples :TestFiles :ExtraTestFiles)] } ], |
376
|
|
|
|
|
|
|
'MetaTests', |
377
|
|
|
|
|
|
|
[ 'Test::CPAN::Changes' => { ':version' => '0.012' } ], |
378
|
|
|
|
|
|
|
'Test::ChangesHasContent', |
379
|
|
|
|
|
|
|
[ 'Test::MinimumVersion' => { ':version' => '2.000010', max_target_perl => '5.006' } ], |
380
|
|
|
|
|
|
|
[ 'PodSyntaxTests' => { ':version' => '5.040' } ], |
381
|
|
|
|
|
|
|
[ 'PodCoverageTests' => { ':version' => '5.040' } ], |
382
|
|
|
|
|
|
|
[ 'Test::PodSpelling' => { ':version' => '2.006003', stopwords => ['irc'], directories => [qw(examples lib script t xt)] } ], |
383
|
|
|
|
|
|
|
#[Test::Pod::LinkCheck] many outstanding bugs |
384
|
|
|
|
|
|
|
($ENV{CONTINUOUS_INTEGRATION} ? () : [ 'Test::Pod::No404s' => { ':version' => '1.003' } ] ), |
385
|
|
|
|
|
|
|
[ 'Test::Kwalitee' => { ':version' => '2.10', filename => 'xt/author/kwalitee.t' } ], |
386
|
|
|
|
|
|
|
[ 'MojibakeTests' => { ':version' => '0.8' } ], |
387
|
|
|
|
|
|
|
[ 'Test::ReportPrereqs' => { ':version' => '0.022', verify_prereqs => 1, |
388
|
|
|
|
|
|
|
version_extractor => ( ( any { $_ ne 'MakeMaker' } $self->installer ) ? 'Module::Metadata' : 'ExtUtils::MakeMaker' ), |
389
|
|
|
|
|
|
|
include => [ sort qw(autodie Encode File::Temp JSON::PP Module::Runtime Sub::Name YAML), |
390
|
|
|
|
|
|
|
$self->_plugin_removed('PodCoverageTests') ? () : 'Pod::Coverage' ] } ], |
391
|
|
|
|
|
|
|
[ 'Test::Portability' => { ':version' => '2.000007' } ], |
392
|
|
|
|
|
|
|
[ 'Test::CleanNamespaces' => { ':version' => '0.006' } ], |
393
|
|
|
|
|
|
|
|
394
|
|
|
|
|
|
|
|
395
|
|
|
|
|
|
|
# Munge Files |
396
|
|
|
|
|
|
|
[ 'Git::Describe' => { ':version' => '0.004', on_package_line => 1 } ], |
397
|
|
|
|
|
|
|
[ |
398
|
|
|
|
|
|
|
($self->surgical_podweaver ? 'SurgicalPodWeaver' : 'PodWeaver') => { |
399
|
|
|
|
|
|
|
$self->surgical_podweaver ? () : ( ':version' => '4.008' ), |
400
|
|
|
|
|
|
|
-f 'weaver.ini' ? () : ( config_plugin => '@Author::ETHER' ), |
401
|
|
|
|
|
|
|
replacer => 'replace_with_comment', |
402
|
|
|
|
|
|
|
post_code_replacer => 'replace_with_nothing', |
403
|
|
|
|
|
|
|
} |
404
|
|
|
|
|
|
|
], |
405
|
|
|
|
|
|
|
|
406
|
|
|
|
|
|
|
# Metadata |
407
|
|
|
|
|
|
|
$self->server eq 'github' ? [ 'GithubMeta' => { |
408
|
|
|
|
|
|
|
':version' => '0.54', |
409
|
|
|
|
|
|
|
homepage => 0, |
410
|
|
|
|
|
|
|
issues => ($self->bugtracker eq 'github' ? 1 : 0), |
411
|
|
|
|
|
|
|
} ] : (), |
412
|
|
|
|
|
|
|
[ 'AutoMetaResources' => { |
413
|
|
|
|
|
|
|
$self->bugtracker eq 'rt' ? ( 'bugtracker.rt' => 1 ) : (), |
414
|
|
|
|
|
|
|
$self->server eq 'gitmo' ? ( 'repository.gitmo' => 1 ) |
415
|
|
|
|
|
|
|
: $self->server eq 'p5sagit' ? ( 'repository.p5sagit' => 1 ) |
416
|
|
|
|
|
|
|
: $self->server eq 'catagits' ? ( 'repository.catagits' => 1 ) |
417
|
|
|
|
|
|
|
: () |
418
|
|
|
|
|
|
|
} ], |
419
|
|
|
|
|
|
|
[ 'Authority' => { ':version' => '1.009', authority => $self->authority, do_munging => 0 } ], |
420
|
|
|
|
|
|
|
[ 'MetaNoIndex' => { directory => [ qw(t xt), grep -d, qw(inc local perl5 fatlib examples share corpus demo) ] } ], |
421
|
|
|
|
|
|
|
[ 'MetaProvides::Package' => { ':version' => '1.15000002', finder => ':InstallModules', meta_noindex => 1, inherit_version => 0, inherit_missing => 0 } ], |
422
|
|
|
|
|
|
|
'MetaConfig', |
423
|
|
|
|
|
|
|
[ 'Keywords' => { ':version' => '0.004' } ], |
424
|
|
|
|
|
|
|
($Config{default_inc_excludes_dot} ? [ 'UseUnsafeInc' => { dot_in_INC => 0 } ] : ()), |
425
|
|
|
|
|
|
|
# [Git::Contributors] |
426
|
|
|
|
|
|
|
# [StaticInstall] |
427
|
|
|
|
|
|
|
|
428
|
|
|
|
|
|
|
# Register Prereqs |
429
|
|
|
|
|
|
|
# (MakeMaker or other installer) |
430
|
|
|
|
|
|
|
[ 'AutoPrereqs' => { ':version' => '5.038' } ], |
431
|
|
|
|
|
|
|
[ 'Prereqs::AuthorDeps' => { ':version' => '0.006', phase => $self->plugin_prereq_phase, relation => $self->plugin_prereq_relationship } ], |
432
|
|
|
|
|
|
|
[ 'MinimumPerl' => { ':version' => '1.006', configure_finder => ':NoFiles' } ], |
433
|
|
|
|
|
|
|
($self->surgical_podweaver ? [ 'Prereqs' => pod_weaving => { |
434
|
|
|
|
|
|
|
'-phase' => $self->plugin_prereq_phase, |
435
|
|
|
|
|
|
|
'-relationship' => $self->plugin_prereq_relationship, |
436
|
|
|
|
|
|
|
'Dist::Zilla::Plugin::SurgicalPodWeaver' => 0 |
437
|
|
|
|
|
|
|
} ] : ()), |
438
|
|
|
|
|
|
|
|
439
|
|
|
|
|
|
|
# Install Tool (some are also Test Runners) |
440
|
|
|
|
|
|
|
$self->installer, # options are set lower down, via %extra_args |
441
|
|
|
|
|
|
|
|
442
|
|
|
|
|
|
|
# we prefer this to run after other Register Prereqs plugins |
443
|
|
|
|
|
|
|
[ 'Git::Contributors' => { ':version' => '0.029', order_by => 'commits' } ], |
444
|
|
|
|
|
|
|
|
445
|
|
|
|
|
|
|
# must appear after installers; also note that MBT::*'s static tweak is consequently adjusted, later |
446
|
|
|
|
|
|
|
[ 'StaticInstall' => { ':version' => '0.005', mode => $static_install_mode, dry_run => $static_install_dry_run } ], |
447
|
|
|
|
|
|
|
|
448
|
|
|
|
|
|
|
# Test Runners (load after installers to avoid a rebuild) |
449
|
|
|
|
|
|
|
[ 'RunExtraTests' => { ':version' => '0.024' } ], |
450
|
|
|
|
|
|
|
|
451
|
|
|
|
|
|
|
# After Build |
452
|
|
|
|
|
|
|
'CheckSelfDependency', |
453
|
|
|
|
|
|
|
|
454
|
|
|
|
|
|
|
( $self->_has_bash ? |
455
|
|
|
|
|
|
|
[ 'Run::AfterBuild' => '.ackrc' => { ':version' => '0.038', quiet => 1, run => q{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"} } ] |
456
|
|
|
|
|
|
|
: ()), |
457
|
|
|
|
|
|
|
[ 'Run::AfterBuild' => '.latest' => { ':version' => '0.041', quiet => 1, fatal_errors => 0, eval => q!if ('%d' =~ /^%n-[.[:xdigit:]]+$/) { unlink '.latest'; symlink '%d', '.latest'; }! } ], |
458
|
|
|
|
|
|
|
|
459
|
|
|
|
|
|
|
|
460
|
|
|
|
|
|
|
# Before Release |
461
|
|
|
|
|
|
|
[ 'CheckStrictVersion' => { decimal_only => 1 } ], |
462
|
|
|
|
|
|
|
'CheckMetaResources', |
463
|
|
|
|
|
|
|
'EnsureLatestPerl', |
464
|
|
|
|
|
|
|
[ 'PromptIfStale' => 'stale modules, release' => { phase => 'release', check_all_plugins => 1, check_all_prereqs => 1 } ], |
465
|
|
|
|
|
|
|
|
466
|
|
|
|
|
|
|
# if in airplane mode, allow our uncommitted dist.ini edit which sets 'airplane = 1' |
467
|
|
|
|
|
|
|
[ 'Git::Check' => 'initial check' => { allow_dirty => [ $self->airplane ? 'dist.ini' : '' ] } ], |
468
|
|
|
|
|
|
|
|
469
|
|
|
|
|
|
|
'Git::CheckFor::MergeConflicts', |
470
|
|
|
|
|
|
|
[ 'Git::CheckFor::CorrectBranch' => { ':version' => '0.004', release_branch => 'master' } ], |
471
|
|
|
|
|
|
|
[ 'Git::Remote::Check' => { branch => 'master', remote_branch => 'master' } ], |
472
|
|
|
|
|
|
|
[ 'CheckPrereqsIndexed' => { ':version' => '0.019' } ], |
473
|
|
|
|
|
|
|
'TestRelease', |
474
|
|
|
|
|
|
|
[ 'Git::Check' => 'after tests' => { allow_dirty => [''] } ], |
475
|
|
|
|
|
|
|
'CheckIssues', |
476
|
|
|
|
|
|
|
# (ConfirmRelease) |
477
|
|
|
|
|
|
|
|
478
|
|
|
|
|
|
|
# Releaser |
479
|
|
|
|
|
|
|
$self->fake_release |
480
|
|
|
|
|
|
|
? do { warn '[@Author::ETHER] ', colored('FAKE_RELEASE set - not uploading to CPAN', 'yellow'), "\n"; 'FakeRelease' } |
481
|
|
|
|
|
|
|
: 'UploadToCPAN', |
482
|
|
|
|
|
|
|
|
483
|
|
|
|
|
|
|
# After Release |
484
|
|
|
|
|
|
|
( $self->licence eq 'LICENSE' && -e 'LICENCE' ? |
485
|
|
|
|
|
|
|
[ 'Run::AfterRelease' => 'remove old LICENCE' => { ':version' => '0.038', quiet => 1, eval => q!unlink 'LICENCE'! } ] |
486
|
|
|
|
|
|
|
: ()), |
487
|
|
|
|
|
|
|
( $self->licence eq 'LICENCE' && -e 'LICENSE' ? |
488
|
|
|
|
|
|
|
[ 'Run::AfterRelease' => 'remove old LICENSE' => { ':version' => '0.038', quiet => 1, eval => q!unlink 'LICENSE'! } ] |
489
|
|
|
|
|
|
|
: ()), |
490
|
|
|
|
|
|
|
( -e 'README.md' ? |
491
|
|
|
|
|
|
|
[ 'Run::AfterRelease' => 'remove old READMEs' => { ':version' => '0.038', quiet => 1, eval => q!unlink 'README.md'! } ] |
492
|
|
|
|
|
|
|
: ()), |
493
|
|
|
|
|
|
|
|
494
|
|
|
|
|
|
|
[ 'CopyFilesFromRelease' => 'copy generated files' => { filename => [ $self->copy_files_from_release ] } ], |
495
|
|
|
|
|
|
|
[ 'ReadmeAnyFromPod' => { ':version' => '0.142180', type => 'pod', location => 'root', phase => 'release' } ], |
496
|
|
|
|
|
|
|
); |
497
|
|
|
|
|
|
|
|
498
|
|
|
|
|
|
|
# plugins to do with calculating, munging, incrementing versions |
499
|
|
|
|
|
|
|
$self->add_bundle('@Git::VersionManager' => { |
500
|
|
|
|
|
|
|
# Take care! runtime-requires prereqs needs to be updated in dist.ini when this is changed. |
501
|
|
|
|
|
|
|
':version' => '0.007', |
502
|
|
|
|
|
|
|
|
503
|
|
|
|
|
|
|
'RewriteVersion::Transitional.:version' => 0.006, |
504
|
|
|
|
|
|
|
'RewriteVersion::Transitional.global' => 1, |
505
|
|
|
|
|
|
|
'RewriteVersion::Transitional.fallback_version_provider' => 'Git::NextVersion', |
506
|
|
|
|
|
|
|
'RewriteVersion::Transitional.version_regexp' => '^v([\d._]+)(-TRIAL)?$', |
507
|
|
|
|
|
|
|
|
508
|
|
|
|
|
|
|
# for first Git::Commit |
509
|
|
|
|
|
|
|
commit_files_after_release => [ $self->commit_files_after_release ], |
510
|
|
|
|
|
|
|
# because of [Git::Check], only files copied from the release would be added -- there is nothing else |
511
|
|
|
|
|
|
|
# hanging around in the current directory |
512
|
|
|
|
|
|
|
'release snapshot.add_files_in' => ['.'], |
513
|
|
|
|
|
|
|
'release snapshot.commit_msg' => '%N-%v%t%n%n%c', |
514
|
|
|
|
|
|
|
|
515
|
|
|
|
|
|
|
'Git::Tag.tag_message' => 'v%v%t', |
516
|
|
|
|
|
|
|
|
517
|
|
|
|
|
|
|
# if the caller set bump_only_matching_versions, then this global setting falls on the floor automatically |
518
|
|
|
|
|
|
|
# because the bundle uses the non-Transitional plugin in that case. |
519
|
|
|
|
|
|
|
'BumpVersionAfterRelease::Transitional.global' => 1, |
520
|
|
|
|
|
|
|
'BumpVersionAfterRelease::Transitional.finder' => [ ':InstallModules' ], # removed :ExecFiles |
521
|
|
|
|
|
|
|
|
522
|
|
|
|
|
|
|
'NextRelease.:version' => '5.033', |
523
|
|
|
|
|
|
|
'NextRelease.time_zone' => 'UTC', |
524
|
|
|
|
|
|
|
'NextRelease.format' => '%-' . ($self->changes_version_columns - 2) . 'v %{yyyy-MM-dd HH:mm:ss\'Z\'}d%{ (TRIAL RELEASE)}T', |
525
|
|
|
|
|
|
|
|
526
|
|
|
|
|
|
|
# 0.003 and earlier uses develop-suggests unconditionally, so we need not specify a minimum version |
527
|
|
|
|
|
|
|
# for the default case here. |
528
|
|
|
|
|
|
|
plugin_prereq_phase => $self->plugin_prereq_phase, |
529
|
|
|
|
|
|
|
plugin_prereq_relationship => $self->plugin_prereq_relationship, |
530
|
|
|
|
|
|
|
}); |
531
|
|
|
|
|
|
|
|
532
|
|
|
|
|
|
|
$self->add_plugins( |
533
|
|
|
|
|
|
|
'Git::Push', |
534
|
|
|
|
|
|
|
$self->server eq 'github' ? [ 'GitHub::Update' => { ':version' => '0.40', metacpan => 1 } ] : (), |
535
|
|
|
|
|
|
|
); |
536
|
|
|
|
|
|
|
|
537
|
|
|
|
|
|
|
# install with an author-specific URL from PAUSE, so cpanm-reporter knows where to submit the report |
538
|
|
|
|
|
|
|
# hopefully the file is available at this location soonish after release! |
539
|
|
|
|
|
|
|
my $pause_download_url = $self->_pause_download_url;; |
540
|
|
|
|
|
|
|
$self->add_plugins( |
541
|
|
|
|
|
|
|
[ 'Run::AfterRelease' => 'install release' => { |
542
|
|
|
|
|
|
|
':version' => '0.031', fatal_errors => 0, run => 'cpanm '.$pause_download_url } ], |
543
|
|
|
|
|
|
|
) if $pause_download_url; |
544
|
|
|
|
|
|
|
|
545
|
|
|
|
|
|
|
# halt release after pre-release checks, but before ConfirmRelease |
546
|
|
|
|
|
|
|
$self->add_plugins('BlockRelease') if $self->airplane; |
547
|
|
|
|
|
|
|
|
548
|
|
|
|
|
|
|
$self->add_plugins( |
549
|
|
|
|
|
|
|
[ 'Run::AfterRelease' => 'release complete' => { ':version' => '0.038', quiet => 1, eval => [ qq{print "release complete!\\xa"} ] } ], |
550
|
|
|
|
|
|
|
# listed late, to allow all other plugins which do BeforeRelease checks to run first. |
551
|
|
|
|
|
|
|
'ConfirmRelease', |
552
|
|
|
|
|
|
|
); |
553
|
|
|
|
|
|
|
|
554
|
|
|
|
|
|
|
# if ModuleBuildTiny(::*) is being used, disable its static option if |
555
|
|
|
|
|
|
|
# [StaticInstall] is being run with mode=off or dry_run=1 |
556
|
|
|
|
|
|
|
if (($static_install_mode eq 'off' or $static_install_dry_run) |
557
|
|
|
|
|
|
|
and any { /^ModuleBuildTiny/ } $self->installer) { |
558
|
|
|
|
|
|
|
my $mbt = Dist::Zilla::Util->expand_config_package_name('ModuleBuildTiny'); |
559
|
|
|
|
|
|
|
my $mbt_spec = first { $_->[1] =~ /^$mbt/ } @{ $self->plugins }; |
560
|
|
|
|
|
|
|
|
561
|
|
|
|
|
|
|
$mbt_spec->[-1]{static} = 'no'; |
562
|
|
|
|
|
|
|
} |
563
|
|
|
|
|
|
|
|
564
|
|
|
|
|
|
|
# add used plugins to desired prereq section |
565
|
|
|
|
|
|
|
$self->add_plugins( |
566
|
|
|
|
|
|
|
[ 'Prereqs' => 'prereqs for @Author::ETHER' => { |
567
|
|
|
|
|
|
|
'-phase' => $self->plugin_prereq_phase, |
568
|
|
|
|
|
|
|
'-relationship' => $self->plugin_prereq_relationship, |
569
|
|
|
|
|
|
|
%{ $self->_plugin_requirements_as_string_hash } } ] |
570
|
|
|
|
|
|
|
) if $self->plugin_prereq_phase and $self->plugin_prereq_relationship; |
571
|
|
|
|
|
|
|
|
572
|
|
|
|
|
|
|
# listed last, to be sure we run at the very end of each phase |
573
|
|
|
|
|
|
|
$self->add_plugins( |
574
|
|
|
|
|
|
|
[ 'VerifyPhases' => 'PHASE VERIFICATION' => { ':version' => '0.015' } ] |
575
|
|
|
|
|
|
|
) if ($ENV{USER} // '') eq 'ether'; |
576
|
|
|
|
|
|
|
} |
577
|
|
|
|
|
|
|
|
578
|
|
|
|
|
|
|
# determine plugin prereqs, and apply default configs (respecting superclasses, roles) |
579
|
|
|
|
|
|
|
around add_plugins => sub { |
580
|
|
|
|
|
|
|
my ($orig, $self, @plugins) = @_; |
581
|
|
|
|
|
|
|
|
582
|
|
|
|
|
|
|
@plugins = grep { |
583
|
|
|
|
|
|
|
my $plugin = $_; |
584
|
|
|
|
|
|
|
my $plugin_package = Dist::Zilla::Util->expand_config_package_name($plugin->[0]); |
585
|
|
|
|
|
|
|
none { |
586
|
|
|
|
|
|
|
$plugin_package eq Dist::Zilla::Util->expand_config_package_name($_) # match by package name |
587
|
|
|
|
|
|
|
or ($plugin->[1] and not ref $plugin->[1] and $plugin->[1] eq $_) # match by moniker |
588
|
|
|
|
|
|
|
} $self->_removed_plugins |
589
|
|
|
|
|
|
|
} map +(ref $_ ? $_ : [ $_ ]), @plugins; |
590
|
|
|
|
|
|
|
|
591
|
|
|
|
|
|
|
foreach my $plugin_spec (@plugins) { |
592
|
|
|
|
|
|
|
# these should never be added as plugin prereqs |
593
|
|
|
|
|
|
|
next if $plugin_spec->[0] eq 'BlockRelease' # temporary use during development |
594
|
|
|
|
|
|
|
or $plugin_spec->[0] eq 'VerifyPhases'; # only used by ether, not others |
595
|
|
|
|
|
|
|
|
596
|
|
|
|
|
|
|
my $plugin = Dist::Zilla::Util->expand_config_package_name($plugin_spec->[0]); |
597
|
|
|
|
|
|
|
require_module($plugin); |
598
|
|
|
|
|
|
|
|
599
|
|
|
|
|
|
|
push @$plugin_spec, {} if not ref $plugin_spec->[-1]; |
600
|
|
|
|
|
|
|
my $payload = $plugin_spec->[-1]; |
601
|
|
|
|
|
|
|
|
602
|
|
|
|
|
|
|
foreach my $module (grep +($plugin->isa($_) or $plugin->does($_)), keys %extra_args) { |
603
|
|
|
|
|
|
|
my %configs = %{ $extra_args{$module} }; # copy, not reference! |
604
|
|
|
|
|
|
|
|
605
|
|
|
|
|
|
|
# don't keep :version unless it matches the package exactly, but still respect the prereq |
606
|
|
|
|
|
|
|
$self->_add_minimum_plugin_requirement($module => delete $configs{':version'}) |
607
|
|
|
|
|
|
|
if exists $configs{':version'} and $module ne $plugin; |
608
|
|
|
|
|
|
|
|
609
|
|
|
|
|
|
|
# we don't need to worry about overwriting the payload with defaults, as |
610
|
|
|
|
|
|
|
# ConfigSlicer will copy them back over later on. |
611
|
|
|
|
|
|
|
@{$payload}{keys %configs} = values %configs; |
612
|
|
|
|
|
|
|
} |
613
|
|
|
|
|
|
|
|
614
|
|
|
|
|
|
|
# record prereq (and version) for later possible injection |
615
|
|
|
|
|
|
|
# (Note: this depends on $CWD being equal to $zilla->root) |
616
|
|
|
|
|
|
|
$self->_add_minimum_plugin_requirement($plugin => $payload->{':version'} // 0) |
617
|
|
|
|
|
|
|
if not -f do { (my $filename = $plugin) =~ s{::}{/}g; $filename .= '.pm' }; |
618
|
|
|
|
|
|
|
} |
619
|
|
|
|
|
|
|
|
620
|
|
|
|
|
|
|
return $self->$orig(@plugins); |
621
|
|
|
|
|
|
|
}; |
622
|
|
|
|
|
|
|
|
623
|
|
|
|
|
|
|
around add_bundle => sub { |
624
|
|
|
|
|
|
|
my ($orig, $self, $bundle, $payload) = @_; |
625
|
|
|
|
|
|
|
|
626
|
|
|
|
|
|
|
return if $self->_plugin_removed($bundle); |
627
|
|
|
|
|
|
|
|
628
|
|
|
|
|
|
|
my $package = Dist::Zilla::Util->expand_config_package_name($bundle); |
629
|
|
|
|
|
|
|
&use_module( |
630
|
|
|
|
|
|
|
$package, |
631
|
|
|
|
|
|
|
$payload && $payload->{':version'} ? $payload->{':version'} : (), |
632
|
|
|
|
|
|
|
); |
633
|
|
|
|
|
|
|
|
634
|
|
|
|
|
|
|
# default configs can be passed in directly - no need to consult %extra_args |
635
|
|
|
|
|
|
|
|
636
|
|
|
|
|
|
|
# record plugin prereq of bundle only, not its components (it should do that itself) |
637
|
|
|
|
|
|
|
$self->_add_minimum_plugin_requirement($package => $payload->{':version'} // 0); |
638
|
|
|
|
|
|
|
|
639
|
|
|
|
|
|
|
# allow config slices to propagate down from the user |
640
|
|
|
|
|
|
|
$payload = { |
641
|
|
|
|
|
|
|
%$payload, # caller bundle's default settings for this bundle, passed to this sub |
642
|
|
|
|
|
|
|
# custom configs from the user, which may override defaults |
643
|
|
|
|
|
|
|
(map +($_ => $self->payload->{$_}), grep /^(.+?)\.(.+?)/, keys %{ $self->payload }), |
644
|
|
|
|
|
|
|
}; |
645
|
|
|
|
|
|
|
|
646
|
|
|
|
|
|
|
# allow the user to say -remove = <plugin added in subbundle>, but also do not override |
647
|
|
|
|
|
|
|
# any removals that were passed into this sub directly. |
648
|
|
|
|
|
|
|
push @{$payload->{-remove}}, @{ $self->payload->{ $self->plugin_remover_attribute } } |
649
|
|
|
|
|
|
|
if $self->payload->{ $self->plugin_remover_attribute }; |
650
|
|
|
|
|
|
|
|
651
|
|
|
|
|
|
|
return $self->$orig($bundle, $payload); |
652
|
|
|
|
|
|
|
}; |
653
|
|
|
|
|
|
|
|
654
|
|
|
|
|
|
|
__PACKAGE__->meta->make_immutable; |
655
|
|
|
|
|
|
|
|
656
|
|
|
|
|
|
|
__END__ |
657
|
|
|
|
|
|
|
|
658
|
|
|
|
|
|
|
=pod |
659
|
|
|
|
|
|
|
|
660
|
|
|
|
|
|
|
=encoding UTF-8 |
661
|
|
|
|
|
|
|
|
662
|
|
|
|
|
|
|
=head1 NAME |
663
|
|
|
|
|
|
|
|
664
|
|
|
|
|
|
|
Dist::Zilla::PluginBundle::Author::ETHER - A plugin bundle for distributions built by ETHER |
665
|
|
|
|
|
|
|
|
666
|
|
|
|
|
|
|
=head1 VERSION |
667
|
|
|
|
|
|
|
|
668
|
|
|
|
|
|
|
version 0.162 |
669
|
|
|
|
|
|
|
|
670
|
|
|
|
|
|
|
=head1 SYNOPSIS |
671
|
|
|
|
|
|
|
|
672
|
|
|
|
|
|
|
In your F<dist.ini>: |
673
|
|
|
|
|
|
|
|
674
|
|
|
|
|
|
|
[@Author::ETHER] |
675
|
|
|
|
|
|
|
|
676
|
|
|
|
|
|
|
=head1 DESCRIPTION |
677
|
|
|
|
|
|
|
|
678
|
|
|
|
|
|
|
=for stopwords optimizations |
679
|
|
|
|
|
|
|
|
680
|
|
|
|
|
|
|
This is a L<Dist::Zilla> plugin bundle. It is I<very approximately> equal to the |
681
|
|
|
|
|
|
|
following F<dist.ini> (following the preamble), minus some optimizations: |
682
|
|
|
|
|
|
|
|
683
|
|
|
|
|
|
|
[Prereqs / pluginbundle version] |
684
|
|
|
|
|
|
|
-phase = develop |
685
|
|
|
|
|
|
|
-relationship = recommends |
686
|
|
|
|
|
|
|
Dist::Zilla::PluginBundle::Author::ETHER = <current installed version> |
687
|
|
|
|
|
|
|
|
688
|
|
|
|
|
|
|
;;; Before Build |
689
|
|
|
|
|
|
|
[PromptIfStale / stale modules, build] |
690
|
|
|
|
|
|
|
phase = build |
691
|
|
|
|
|
|
|
module = Dist::Zilla::Plugin::Author::ETHER |
692
|
|
|
|
|
|
|
|
693
|
|
|
|
|
|
|
|
694
|
|
|
|
|
|
|
;;; ExecFiles |
695
|
|
|
|
|
|
|
[ExecDir] |
696
|
|
|
|
|
|
|
dir = script ; only if script dir exists |
697
|
|
|
|
|
|
|
|
698
|
|
|
|
|
|
|
|
699
|
|
|
|
|
|
|
;;; Finders |
700
|
|
|
|
|
|
|
[FileFinder::ByName / Examples] |
701
|
|
|
|
|
|
|
dir = examples |
702
|
|
|
|
|
|
|
|
703
|
|
|
|
|
|
|
|
704
|
|
|
|
|
|
|
;;; Gather Files |
705
|
|
|
|
|
|
|
[Git::GatherDir] |
706
|
|
|
|
|
|
|
:version = 2.016 |
707
|
|
|
|
|
|
|
exclude_filename = CONTRIBUTING |
708
|
|
|
|
|
|
|
exclude_filename = INSTALL |
709
|
|
|
|
|
|
|
exclude_filename = LICENCE |
710
|
|
|
|
|
|
|
exclude_filename = LICENSE |
711
|
|
|
|
|
|
|
exclude_filename = META.json |
712
|
|
|
|
|
|
|
exclude_filename = Makefile.PL |
713
|
|
|
|
|
|
|
exclude_filename = README.md |
714
|
|
|
|
|
|
|
exclude_filename = README.pod |
715
|
|
|
|
|
|
|
exclude_filename = TODO |
716
|
|
|
|
|
|
|
exclude_filename = cpanfile |
717
|
|
|
|
|
|
|
exclude_filename = inc/ExtUtils/MakeMaker/Dist/Zilla/Develop.pm |
718
|
|
|
|
|
|
|
exclude_filename = ppport.h |
719
|
|
|
|
|
|
|
|
720
|
|
|
|
|
|
|
[MetaYAML] |
721
|
|
|
|
|
|
|
[MetaJSON] |
722
|
|
|
|
|
|
|
[Readme] |
723
|
|
|
|
|
|
|
[Manifest] |
724
|
|
|
|
|
|
|
[License] |
725
|
|
|
|
|
|
|
:version = 5.038 |
726
|
|
|
|
|
|
|
filename = LICENCE ; for distributions where I have authority |
727
|
|
|
|
|
|
|
|
728
|
|
|
|
|
|
|
[CPANFile] ; iff cpanfile = 1 |
729
|
|
|
|
|
|
|
|
730
|
|
|
|
|
|
|
[GenerateFile::FromShareDir / generate CONTRIBUTING] |
731
|
|
|
|
|
|
|
-dist = Dist-Zilla-PluginBundle-Author-ETHER |
732
|
|
|
|
|
|
|
-filename = CONTRIBUTING |
733
|
|
|
|
|
|
|
has_xs = <dynamically-determined flag> |
734
|
|
|
|
|
|
|
[InstallGuide] |
735
|
|
|
|
|
|
|
:version = 1.200005 |
736
|
|
|
|
|
|
|
|
737
|
|
|
|
|
|
|
[Test::Compile] |
738
|
|
|
|
|
|
|
:version = 2.039 |
739
|
|
|
|
|
|
|
bail_out_on_fail = 1 |
740
|
|
|
|
|
|
|
xt_mode = 1 |
741
|
|
|
|
|
|
|
script_finder = :PerlExecFiles |
742
|
|
|
|
|
|
|
script_finder = Examples |
743
|
|
|
|
|
|
|
|
744
|
|
|
|
|
|
|
[Test::NoTabs] |
745
|
|
|
|
|
|
|
:version = 0.08 |
746
|
|
|
|
|
|
|
finder = :InstallModules |
747
|
|
|
|
|
|
|
finder = :ExecFiles |
748
|
|
|
|
|
|
|
finder = Examples |
749
|
|
|
|
|
|
|
finder = :TestFiles |
750
|
|
|
|
|
|
|
finder = :ExtraTestFiles |
751
|
|
|
|
|
|
|
|
752
|
|
|
|
|
|
|
[Test::EOL] |
753
|
|
|
|
|
|
|
:version = 0.17 |
754
|
|
|
|
|
|
|
finder = :InstallModules |
755
|
|
|
|
|
|
|
finder = :ExecFiles |
756
|
|
|
|
|
|
|
finder = Examples |
757
|
|
|
|
|
|
|
finder = :TestFiles |
758
|
|
|
|
|
|
|
finder = :ExtraTestFiles |
759
|
|
|
|
|
|
|
|
760
|
|
|
|
|
|
|
[MetaTests] |
761
|
|
|
|
|
|
|
[Test::CPAN::Changes] |
762
|
|
|
|
|
|
|
:version = 0.012 |
763
|
|
|
|
|
|
|
[Test::ChangesHasContent] |
764
|
|
|
|
|
|
|
[Test::MinimumVersion] |
765
|
|
|
|
|
|
|
:version = 2.000010 |
766
|
|
|
|
|
|
|
max_target_perl = 5.006 |
767
|
|
|
|
|
|
|
[PodSyntaxTests] |
768
|
|
|
|
|
|
|
:version = 5.040 |
769
|
|
|
|
|
|
|
[PodCoverageTests] |
770
|
|
|
|
|
|
|
:version = 5.040 |
771
|
|
|
|
|
|
|
[Test::PodSpelling] |
772
|
|
|
|
|
|
|
:version = 2.006003 |
773
|
|
|
|
|
|
|
stopwords = irc |
774
|
|
|
|
|
|
|
directory = examples |
775
|
|
|
|
|
|
|
directory = lib |
776
|
|
|
|
|
|
|
directory = script |
777
|
|
|
|
|
|
|
directory = t |
778
|
|
|
|
|
|
|
directory = xt |
779
|
|
|
|
|
|
|
|
780
|
|
|
|
|
|
|
;[Test::Pod::LinkCheck] many outstanding bugs |
781
|
|
|
|
|
|
|
[Test::Pod::No404s] |
782
|
|
|
|
|
|
|
:version = 1.003 |
783
|
|
|
|
|
|
|
[Test::Kwalitee] |
784
|
|
|
|
|
|
|
:version = 2.10 |
785
|
|
|
|
|
|
|
filename = xt/author/kwalitee.t |
786
|
|
|
|
|
|
|
[MojibakeTests] |
787
|
|
|
|
|
|
|
:version = 0.8 |
788
|
|
|
|
|
|
|
[Test::ReportPrereqs] |
789
|
|
|
|
|
|
|
:version = 0.022 |
790
|
|
|
|
|
|
|
verify_prereqs = 1 |
791
|
|
|
|
|
|
|
version_extractor = Module::Metadata |
792
|
|
|
|
|
|
|
include = Encode |
793
|
|
|
|
|
|
|
include = File::Temp |
794
|
|
|
|
|
|
|
include = JSON::PP |
795
|
|
|
|
|
|
|
include = Module::Runtime |
796
|
|
|
|
|
|
|
include = Pod::Coverage |
797
|
|
|
|
|
|
|
include = Sub::Name |
798
|
|
|
|
|
|
|
include = YAML |
799
|
|
|
|
|
|
|
include = autodie |
800
|
|
|
|
|
|
|
[Test::Portability] |
801
|
|
|
|
|
|
|
:version = 2.000007 |
802
|
|
|
|
|
|
|
[Test::CleanNamespaces] |
803
|
|
|
|
|
|
|
:version = 0.006 |
804
|
|
|
|
|
|
|
|
805
|
|
|
|
|
|
|
|
806
|
|
|
|
|
|
|
;;; Munge Files |
807
|
|
|
|
|
|
|
[Git::Describe] |
808
|
|
|
|
|
|
|
:version = 0.004 |
809
|
|
|
|
|
|
|
on_package_line = 1 |
810
|
|
|
|
|
|
|
|
811
|
|
|
|
|
|
|
[PodWeaver] (or [SurgicalPodWeaver]) |
812
|
|
|
|
|
|
|
:version = 4.008 |
813
|
|
|
|
|
|
|
config_plugin = @Author::ETHER ; unless weaver.ini is present |
814
|
|
|
|
|
|
|
replacer = replace_with_comment |
815
|
|
|
|
|
|
|
post_code_replacer = replace_with_nothing |
816
|
|
|
|
|
|
|
|
817
|
|
|
|
|
|
|
|
818
|
|
|
|
|
|
|
;;; Metadata |
819
|
|
|
|
|
|
|
[GithubMeta] ; (if server = 'github' or omitted) |
820
|
|
|
|
|
|
|
:version = 0.54 |
821
|
|
|
|
|
|
|
homepage = 0 |
822
|
|
|
|
|
|
|
issues = 0 |
823
|
|
|
|
|
|
|
|
824
|
|
|
|
|
|
|
[AutoMetaResources] |
825
|
|
|
|
|
|
|
bugtracker.rt = 1 ; (if issues = 'rt' or omitted) |
826
|
|
|
|
|
|
|
; (plus repository.* = 1 if server = 'gitmo' or 'p5sagit') |
827
|
|
|
|
|
|
|
|
828
|
|
|
|
|
|
|
[Authority] |
829
|
|
|
|
|
|
|
:version = 1.009 |
830
|
|
|
|
|
|
|
authority = cpan:ETHER |
831
|
|
|
|
|
|
|
do_munging = 0 |
832
|
|
|
|
|
|
|
|
833
|
|
|
|
|
|
|
[MetaNoIndex] |
834
|
|
|
|
|
|
|
directory = corpus |
835
|
|
|
|
|
|
|
directory = demo |
836
|
|
|
|
|
|
|
directory = examples |
837
|
|
|
|
|
|
|
directory = fatlib |
838
|
|
|
|
|
|
|
directory = inc |
839
|
|
|
|
|
|
|
directory = local |
840
|
|
|
|
|
|
|
directory = perl5 |
841
|
|
|
|
|
|
|
directory = share |
842
|
|
|
|
|
|
|
directory = t |
843
|
|
|
|
|
|
|
directory = xt |
844
|
|
|
|
|
|
|
|
845
|
|
|
|
|
|
|
[MetaProvides::Package] |
846
|
|
|
|
|
|
|
:version = 1.15000002 |
847
|
|
|
|
|
|
|
finder = :InstallModules |
848
|
|
|
|
|
|
|
meta_noindex = 1 |
849
|
|
|
|
|
|
|
inherit_version = 0 |
850
|
|
|
|
|
|
|
inherit_missing = 0 |
851
|
|
|
|
|
|
|
|
852
|
|
|
|
|
|
|
[MetaConfig] |
853
|
|
|
|
|
|
|
[Keywords] |
854
|
|
|
|
|
|
|
:version = 0.004 |
855
|
|
|
|
|
|
|
|
856
|
|
|
|
|
|
|
; if we are releasing with a new perl with -DDEFAULT_INC_EXCLUDES_DOT set |
857
|
|
|
|
|
|
|
[UseUnsafeInc] |
858
|
|
|
|
|
|
|
dot_in_INC = 0 |
859
|
|
|
|
|
|
|
|
860
|
|
|
|
|
|
|
;[Git::Contributors] ; below |
861
|
|
|
|
|
|
|
;[StaticInstall] ; below |
862
|
|
|
|
|
|
|
|
863
|
|
|
|
|
|
|
|
864
|
|
|
|
|
|
|
;;; Register Prereqs |
865
|
|
|
|
|
|
|
[AutoPrereqs] |
866
|
|
|
|
|
|
|
:version = 5.038 |
867
|
|
|
|
|
|
|
[Prereqs::AuthorDeps] |
868
|
|
|
|
|
|
|
phase = x_Dist_Zilla ; (or whatever 'plugin_prereq_phase' is set to) |
869
|
|
|
|
|
|
|
relation = requires ; (or whatever 'plugin_prereq_relationship' is set to) |
870
|
|
|
|
|
|
|
[MinimumPerl] |
871
|
|
|
|
|
|
|
:version = 1.006 |
872
|
|
|
|
|
|
|
configure_finder = :NoFiles |
873
|
|
|
|
|
|
|
|
874
|
|
|
|
|
|
|
[Prereqs / prereqs for @Author::ETHER] |
875
|
|
|
|
|
|
|
-phase = x_Dist_Zilla ; (or whatever 'plugin_prereq_phase' is set to) |
876
|
|
|
|
|
|
|
-relationship = requires ; (or whatever 'plugin_prereq_relationship' is set to) |
877
|
|
|
|
|
|
|
...all the plugins this bundle uses... |
878
|
|
|
|
|
|
|
|
879
|
|
|
|
|
|
|
|
880
|
|
|
|
|
|
|
;;; Install Tool |
881
|
|
|
|
|
|
|
; <specified installer(s)> |
882
|
|
|
|
|
|
|
|
883
|
|
|
|
|
|
|
[Git::Contributors] |
884
|
|
|
|
|
|
|
:version = 0.029 |
885
|
|
|
|
|
|
|
order_by = commits |
886
|
|
|
|
|
|
|
|
887
|
|
|
|
|
|
|
[StaticInstall] |
888
|
|
|
|
|
|
|
:version = 0.005 |
889
|
|
|
|
|
|
|
mode = auto |
890
|
|
|
|
|
|
|
dry_run = 1 ; only if authority is not ETHER |
891
|
|
|
|
|
|
|
|
892
|
|
|
|
|
|
|
|
893
|
|
|
|
|
|
|
;;; Test Runner |
894
|
|
|
|
|
|
|
; <specified installer(s)> |
895
|
|
|
|
|
|
|
[RunExtraTests] |
896
|
|
|
|
|
|
|
:version = 0.024 |
897
|
|
|
|
|
|
|
default_jobs = 9 |
898
|
|
|
|
|
|
|
|
899
|
|
|
|
|
|
|
|
900
|
|
|
|
|
|
|
;;; After Build |
901
|
|
|
|
|
|
|
[CheckSelfDependency] |
902
|
|
|
|
|
|
|
|
903
|
|
|
|
|
|
|
[Run::AfterBuild / .ackrc] |
904
|
|
|
|
|
|
|
:version = 0.038 |
905
|
|
|
|
|
|
|
quiet = 1 |
906
|
|
|
|
|
|
|
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" |
907
|
|
|
|
|
|
|
[Run::AfterBuild / .latest] |
908
|
|
|
|
|
|
|
:version = 0.041 |
909
|
|
|
|
|
|
|
quiet = 1 |
910
|
|
|
|
|
|
|
fatal_errors = 0 |
911
|
|
|
|
|
|
|
eval = if ('%d' =~ /^%n-[.[:xdigit:]]+$/) { unlink '.latest'; symlink '%d', '.latest'; } |
912
|
|
|
|
|
|
|
|
913
|
|
|
|
|
|
|
|
914
|
|
|
|
|
|
|
;;; Before Release |
915
|
|
|
|
|
|
|
[CheckStrictVersion] |
916
|
|
|
|
|
|
|
decimal_only = 1 |
917
|
|
|
|
|
|
|
|
918
|
|
|
|
|
|
|
[CheckMetaResources] |
919
|
|
|
|
|
|
|
[EnsureLatestPerl] |
920
|
|
|
|
|
|
|
[PromptIfStale / stale modules, release] |
921
|
|
|
|
|
|
|
phase = release |
922
|
|
|
|
|
|
|
check_all_plugins = 1 |
923
|
|
|
|
|
|
|
check_all_prereqs = 1 |
924
|
|
|
|
|
|
|
|
925
|
|
|
|
|
|
|
[Git::Check / initial check] |
926
|
|
|
|
|
|
|
allow_dirty = |
927
|
|
|
|
|
|
|
|
928
|
|
|
|
|
|
|
[Git::CheckFor::MergeConflicts] |
929
|
|
|
|
|
|
|
|
930
|
|
|
|
|
|
|
[Git::CheckFor::CorrectBranch] |
931
|
|
|
|
|
|
|
:version = 0.004 |
932
|
|
|
|
|
|
|
release_branch = master |
933
|
|
|
|
|
|
|
|
934
|
|
|
|
|
|
|
[Git::Remote::Check] |
935
|
|
|
|
|
|
|
branch = master |
936
|
|
|
|
|
|
|
remote_branch = master |
937
|
|
|
|
|
|
|
|
938
|
|
|
|
|
|
|
[CheckPrereqsIndexed] |
939
|
|
|
|
|
|
|
:version = 0.019 |
940
|
|
|
|
|
|
|
[TestRelease] |
941
|
|
|
|
|
|
|
[Git::Check / after tests] |
942
|
|
|
|
|
|
|
allow_dirty = |
943
|
|
|
|
|
|
|
[CheckIssues] |
944
|
|
|
|
|
|
|
;(ConfirmRelease) |
945
|
|
|
|
|
|
|
|
946
|
|
|
|
|
|
|
|
947
|
|
|
|
|
|
|
;;; Releaser |
948
|
|
|
|
|
|
|
[UploadToCPAN] |
949
|
|
|
|
|
|
|
|
950
|
|
|
|
|
|
|
|
951
|
|
|
|
|
|
|
;;; After Release |
952
|
|
|
|
|
|
|
[Run::AfterRelease / remove old LICENCE] ; if switching from LICENCE -> LICENSE |
953
|
|
|
|
|
|
|
:version = 0.038 |
954
|
|
|
|
|
|
|
quiet = 1 |
955
|
|
|
|
|
|
|
eval = unlink 'LICENCE' |
956
|
|
|
|
|
|
|
|
957
|
|
|
|
|
|
|
[Run::AfterRelease / remove old LICENSE] ; if switching from LICENSE -> LICENCE |
958
|
|
|
|
|
|
|
:version = 0.038 |
959
|
|
|
|
|
|
|
quiet = 1 |
960
|
|
|
|
|
|
|
eval = unlink 'LICENSE' |
961
|
|
|
|
|
|
|
|
962
|
|
|
|
|
|
|
[Run::AfterRelease / remove old READMEs] |
963
|
|
|
|
|
|
|
:version = 0.038 |
964
|
|
|
|
|
|
|
quiet = 1 |
965
|
|
|
|
|
|
|
eval = unlink 'README.md' |
966
|
|
|
|
|
|
|
|
967
|
|
|
|
|
|
|
[CopyFilesFromRelease / copy generated files] |
968
|
|
|
|
|
|
|
filename = CONTRIBUTING |
969
|
|
|
|
|
|
|
filename = INSTALL |
970
|
|
|
|
|
|
|
filename = LICENCE |
971
|
|
|
|
|
|
|
filename = LICENSE |
972
|
|
|
|
|
|
|
filename = ppport.h |
973
|
|
|
|
|
|
|
filename = cpanfile ; iff cpanfile = 1 |
974
|
|
|
|
|
|
|
|
975
|
|
|
|
|
|
|
[ReadmeAnyFromPod] |
976
|
|
|
|
|
|
|
:version = 0.142180 |
977
|
|
|
|
|
|
|
type = pod |
978
|
|
|
|
|
|
|
location = root |
979
|
|
|
|
|
|
|
phase = release |
980
|
|
|
|
|
|
|
|
981
|
|
|
|
|
|
|
;;;;;; begin [@Git::VersionManager] |
982
|
|
|
|
|
|
|
|
983
|
|
|
|
|
|
|
; this is actually a VersionProvider and FileMunger |
984
|
|
|
|
|
|
|
[RewriteVersion::Transitional] |
985
|
|
|
|
|
|
|
:version = 0.004 |
986
|
|
|
|
|
|
|
global = 1 |
987
|
|
|
|
|
|
|
fallback_version_provider = Git::NextVersion |
988
|
|
|
|
|
|
|
version_regexp = ^v([\d._]+)(-TRIAL)?$ |
989
|
|
|
|
|
|
|
|
990
|
|
|
|
|
|
|
[CopyFilesFromRelease / copy Changes] |
991
|
|
|
|
|
|
|
filename = Changes |
992
|
|
|
|
|
|
|
|
993
|
|
|
|
|
|
|
[Git::Commit / release snapshot] |
994
|
|
|
|
|
|
|
:version = 2.020 |
995
|
|
|
|
|
|
|
add_files_in = . |
996
|
|
|
|
|
|
|
allow_dirty = CONTRIBUTING |
997
|
|
|
|
|
|
|
allow_dirty = Changes |
998
|
|
|
|
|
|
|
allow_dirty = INSTALL |
999
|
|
|
|
|
|
|
allow_dirty = LICENCE |
1000
|
|
|
|
|
|
|
allow_dirty = LICENSE |
1001
|
|
|
|
|
|
|
allow_dirty = README.md |
1002
|
|
|
|
|
|
|
allow_dirty = README.pod |
1003
|
|
|
|
|
|
|
allow_dirty = cpanfile ; iff cpanfile = 1 |
1004
|
|
|
|
|
|
|
allow_dirty = ppport.h |
1005
|
|
|
|
|
|
|
commit_msg = %N-%v%t%n%n%c |
1006
|
|
|
|
|
|
|
|
1007
|
|
|
|
|
|
|
[Git::Tag] |
1008
|
|
|
|
|
|
|
tag_message = v%v%t |
1009
|
|
|
|
|
|
|
|
1010
|
|
|
|
|
|
|
[BumpVersionAfterRelease::Transitional] |
1011
|
|
|
|
|
|
|
:version = 0.004 |
1012
|
|
|
|
|
|
|
global = 1 |
1013
|
|
|
|
|
|
|
finder = :InstallModules ; removed :ExecFiles |
1014
|
|
|
|
|
|
|
|
1015
|
|
|
|
|
|
|
[NextRelease] |
1016
|
|
|
|
|
|
|
:version = 5.033 |
1017
|
|
|
|
|
|
|
time_zone = UTC |
1018
|
|
|
|
|
|
|
format = %-8v %{yyyy-MM-dd HH:mm:ss'Z'}d%{ (TRIAL RELEASE)}T |
1019
|
|
|
|
|
|
|
|
1020
|
|
|
|
|
|
|
[Git::Commit / post-release commit] |
1021
|
|
|
|
|
|
|
:version = 2.020 |
1022
|
|
|
|
|
|
|
allow_dirty = Changes |
1023
|
|
|
|
|
|
|
allow_dirty_match = ^lib/.*\.pm$ |
1024
|
|
|
|
|
|
|
commit_msg = increment $VERSION after %v release |
1025
|
|
|
|
|
|
|
|
1026
|
|
|
|
|
|
|
;;;;;; end [@Git::VersionManager] |
1027
|
|
|
|
|
|
|
|
1028
|
|
|
|
|
|
|
[Git::Push] |
1029
|
|
|
|
|
|
|
|
1030
|
|
|
|
|
|
|
[GitHub::Update] ; (if server = 'github' or omitted) |
1031
|
|
|
|
|
|
|
:version = 0.40 |
1032
|
|
|
|
|
|
|
metacpan = 1 |
1033
|
|
|
|
|
|
|
|
1034
|
|
|
|
|
|
|
[Run::AfterRelease / install release] |
1035
|
|
|
|
|
|
|
:version = 0.031 |
1036
|
|
|
|
|
|
|
fatal_errors = 0 |
1037
|
|
|
|
|
|
|
run = cpanm http://URMOM:mysekritpassword@pause.perl.org/pub/PAUSE/authors/id/U/UR/URMOM/%a |
1038
|
|
|
|
|
|
|
|
1039
|
|
|
|
|
|
|
[Run::AfterRelease / release complete] |
1040
|
|
|
|
|
|
|
:version = 0.038 |
1041
|
|
|
|
|
|
|
quiet = 1 |
1042
|
|
|
|
|
|
|
eval = print "release complete!\xa" |
1043
|
|
|
|
|
|
|
|
1044
|
|
|
|
|
|
|
; listed late, to allow all other plugins which do BeforeRelease checks to run first. |
1045
|
|
|
|
|
|
|
[ConfirmRelease] |
1046
|
|
|
|
|
|
|
|
1047
|
|
|
|
|
|
|
; listed last, to be sure we run at the very end of each phase |
1048
|
|
|
|
|
|
|
; only performed if $ENV{USER} eq 'ether' |
1049
|
|
|
|
|
|
|
[VerifyPhases / PHASE VERIFICATION] |
1050
|
|
|
|
|
|
|
:version = 0.015 |
1051
|
|
|
|
|
|
|
|
1052
|
|
|
|
|
|
|
=for Pod::Coverage configure mvp_multivalue_args |
1053
|
|
|
|
|
|
|
|
1054
|
|
|
|
|
|
|
=for stopwords metacpan |
1055
|
|
|
|
|
|
|
|
1056
|
|
|
|
|
|
|
The distribution's code is assumed to be hosted at L<github|http://github.com>; |
1057
|
|
|
|
|
|
|
L<RT|http://rt.cpan.org> is used as the issue tracker (see option L</rt> below). |
1058
|
|
|
|
|
|
|
The home page in the metadata points to L<github|http://github.com>, |
1059
|
|
|
|
|
|
|
while the home page on L<github|http://github.com> is updated on release to |
1060
|
|
|
|
|
|
|
point to L<metacpan|http://metacpan.org>. |
1061
|
|
|
|
|
|
|
The version and other metadata is derived directly from the local git repository. |
1062
|
|
|
|
|
|
|
|
1063
|
|
|
|
|
|
|
=head1 OPTIONS / OVERRIDES |
1064
|
|
|
|
|
|
|
|
1065
|
|
|
|
|
|
|
=head2 version |
1066
|
|
|
|
|
|
|
|
1067
|
|
|
|
|
|
|
Use C<< V=<version> >> in the shell to override the version of the distribution being built; |
1068
|
|
|
|
|
|
|
otherwise the version is incremented after each release, in the F<*.pm> files. |
1069
|
|
|
|
|
|
|
|
1070
|
|
|
|
|
|
|
=head2 pod coverage |
1071
|
|
|
|
|
|
|
|
1072
|
|
|
|
|
|
|
Subroutines can be considered "covered" for pod coverage tests by adding a |
1073
|
|
|
|
|
|
|
directive to pod (as many as you'd like), |
1074
|
|
|
|
|
|
|
as described in L<Pod::Coverage::TrustPod>: |
1075
|
|
|
|
|
|
|
|
1076
|
|
|
|
|
|
|
=for Pod::Coverage foo bar baz |
1077
|
|
|
|
|
|
|
|
1078
|
|
|
|
|
|
|
=head2 spelling stopwords |
1079
|
|
|
|
|
|
|
|
1080
|
|
|
|
|
|
|
=for stopwords Stopwords |
1081
|
|
|
|
|
|
|
|
1082
|
|
|
|
|
|
|
Stopwords for spelling tests can be added by adding a directive to pod (as |
1083
|
|
|
|
|
|
|
many as you'd like), as described in L<Pod::Spell/ADDING STOPWORDS>: |
1084
|
|
|
|
|
|
|
|
1085
|
|
|
|
|
|
|
=for stopwords foo bar baz |
1086
|
|
|
|
|
|
|
|
1087
|
|
|
|
|
|
|
See also L<[Test::PodSpelling]|Dist::Zilla::Plugin::Test::PodSpelling/stopwords>. |
1088
|
|
|
|
|
|
|
|
1089
|
|
|
|
|
|
|
=head2 installer |
1090
|
|
|
|
|
|
|
|
1091
|
|
|
|
|
|
|
=for stopwords ModuleBuildTiny |
1092
|
|
|
|
|
|
|
|
1093
|
|
|
|
|
|
|
Available since version 0.007. |
1094
|
|
|
|
|
|
|
|
1095
|
|
|
|
|
|
|
The installer back-end(s) to use (can be specified more than once); defaults |
1096
|
|
|
|
|
|
|
to L<C<ModuleBuildTiny::Fallback>|Dist::Zilla::Plugin::ModuleBuildTiny::Fallback> |
1097
|
|
|
|
|
|
|
and L<C<MakeMaker::Fallback>|Dist::Zilla::Plugin::MakeMaker::Fallback> |
1098
|
|
|
|
|
|
|
(which generates a F<Build.PL> for normal use with no-configure-requires |
1099
|
|
|
|
|
|
|
protection, and F<Makefile.PL> as a fallback, containing an upgrade warning). |
1100
|
|
|
|
|
|
|
For toolchain-grade modules, you should only use F<Makefile.PL>-generating installers. |
1101
|
|
|
|
|
|
|
|
1102
|
|
|
|
|
|
|
You can select other backends (by plugin name, without the C<[]>), with the |
1103
|
|
|
|
|
|
|
C<installer> option, or C<none> if you are supplying your own, as a separate |
1104
|
|
|
|
|
|
|
plugin(s). |
1105
|
|
|
|
|
|
|
|
1106
|
|
|
|
|
|
|
Encouraged choices are: |
1107
|
|
|
|
|
|
|
|
1108
|
|
|
|
|
|
|
=over 4 |
1109
|
|
|
|
|
|
|
|
1110
|
|
|
|
|
|
|
=item * |
1111
|
|
|
|
|
|
|
|
1112
|
|
|
|
|
|
|
C<< installer = ModuleBuildTiny >> |
1113
|
|
|
|
|
|
|
|
1114
|
|
|
|
|
|
|
=item * |
1115
|
|
|
|
|
|
|
|
1116
|
|
|
|
|
|
|
C<< installer = MakeMaker >> |
1117
|
|
|
|
|
|
|
|
1118
|
|
|
|
|
|
|
=item * |
1119
|
|
|
|
|
|
|
|
1120
|
|
|
|
|
|
|
C<< installer = MakeMaker::Fallback >> (when used in combination with ModuleBuildTiny) |
1121
|
|
|
|
|
|
|
|
1122
|
|
|
|
|
|
|
=item * |
1123
|
|
|
|
|
|
|
|
1124
|
|
|
|
|
|
|
C<< installer = =inc::Foo >> (if no configs are needed for this plugin; e.g. subclassed from L<[MakeMaker::Awesome]|Dist::Zilla::Plugin::MakeMaker::Awesome>) |
1125
|
|
|
|
|
|
|
|
1126
|
|
|
|
|
|
|
=item * |
1127
|
|
|
|
|
|
|
|
1128
|
|
|
|
|
|
|
C<< installer = none >> (if you are providing your own elsewhere in the file, with configs) |
1129
|
|
|
|
|
|
|
|
1130
|
|
|
|
|
|
|
=back |
1131
|
|
|
|
|
|
|
|
1132
|
|
|
|
|
|
|
=head2 server |
1133
|
|
|
|
|
|
|
|
1134
|
|
|
|
|
|
|
Available since version 0.019. |
1135
|
|
|
|
|
|
|
|
1136
|
|
|
|
|
|
|
If provided, must be one of: |
1137
|
|
|
|
|
|
|
|
1138
|
|
|
|
|
|
|
=over 4 |
1139
|
|
|
|
|
|
|
|
1140
|
|
|
|
|
|
|
=item * |
1141
|
|
|
|
|
|
|
|
1142
|
|
|
|
|
|
|
C<github> |
1143
|
|
|
|
|
|
|
|
1144
|
|
|
|
|
|
|
(default) |
1145
|
|
|
|
|
|
|
metadata and release plugins are tailored to L<github|http://github.com>. |
1146
|
|
|
|
|
|
|
|
1147
|
|
|
|
|
|
|
=item * |
1148
|
|
|
|
|
|
|
|
1149
|
|
|
|
|
|
|
C<gitmo> |
1150
|
|
|
|
|
|
|
|
1151
|
|
|
|
|
|
|
metadata and release plugins are tailored to |
1152
|
|
|
|
|
|
|
L<gitmo@git.moose.perl.org|http://git.moose.perl.org>. |
1153
|
|
|
|
|
|
|
|
1154
|
|
|
|
|
|
|
=item * |
1155
|
|
|
|
|
|
|
|
1156
|
|
|
|
|
|
|
C<p5sagit> |
1157
|
|
|
|
|
|
|
|
1158
|
|
|
|
|
|
|
metadata and release plugins are tailored to |
1159
|
|
|
|
|
|
|
L<p5sagit@git.shadowcat.co.uk|http://git.shadowcat.co.uk>. |
1160
|
|
|
|
|
|
|
|
1161
|
|
|
|
|
|
|
=item * |
1162
|
|
|
|
|
|
|
|
1163
|
|
|
|
|
|
|
C<catagits> |
1164
|
|
|
|
|
|
|
|
1165
|
|
|
|
|
|
|
metadata and release plugins are tailored to |
1166
|
|
|
|
|
|
|
L<catagits@git.shadowcat.co.uk|http://git.shadowcat.co.uk>. |
1167
|
|
|
|
|
|
|
|
1168
|
|
|
|
|
|
|
=item * |
1169
|
|
|
|
|
|
|
|
1170
|
|
|
|
|
|
|
C<none> |
1171
|
|
|
|
|
|
|
|
1172
|
|
|
|
|
|
|
no special configuration of metadata (relating to repositories etc) is done -- |
1173
|
|
|
|
|
|
|
you'll need to provide this yourself. |
1174
|
|
|
|
|
|
|
|
1175
|
|
|
|
|
|
|
=back |
1176
|
|
|
|
|
|
|
|
1177
|
|
|
|
|
|
|
=head2 airplane |
1178
|
|
|
|
|
|
|
|
1179
|
|
|
|
|
|
|
Available since version 0.053. |
1180
|
|
|
|
|
|
|
|
1181
|
|
|
|
|
|
|
A boolean option that, when set, removes the use of all plugins that use the |
1182
|
|
|
|
|
|
|
network (generally for comparing metadata against PAUSE, and querying the |
1183
|
|
|
|
|
|
|
remote git server), as well as blocking the use of the C<release> command. |
1184
|
|
|
|
|
|
|
Defaults to false; can also be set with the environment variable C<DZIL_AIRPLANE>. |
1185
|
|
|
|
|
|
|
|
1186
|
|
|
|
|
|
|
=head2 copy_file_from_release |
1187
|
|
|
|
|
|
|
|
1188
|
|
|
|
|
|
|
Available in this form since version 0.076. |
1189
|
|
|
|
|
|
|
|
1190
|
|
|
|
|
|
|
A file, to be present in the build, which is copied back to the source |
1191
|
|
|
|
|
|
|
repository at release time and committed to git. Can be used more than |
1192
|
|
|
|
|
|
|
once. Defaults to: |
1193
|
|
|
|
|
|
|
F<LICENCE>, F<LICENSE>, F<CONTRIBUTING>, F<Changes>, F<ppport.h>, F<INSTALL>, |
1194
|
|
|
|
|
|
|
as well as F<cpanfile> if C<cpanfile = 1> is specified in the options; |
1195
|
|
|
|
|
|
|
defaults are appended to, rather than overwritten. |
1196
|
|
|
|
|
|
|
|
1197
|
|
|
|
|
|
|
=head2 surgical_podweaver |
1198
|
|
|
|
|
|
|
|
1199
|
|
|
|
|
|
|
=for stopwords PodWeaver SurgicalPodWeaver |
1200
|
|
|
|
|
|
|
|
1201
|
|
|
|
|
|
|
Available since version 0.051. |
1202
|
|
|
|
|
|
|
|
1203
|
|
|
|
|
|
|
A boolean option that, when set, uses |
1204
|
|
|
|
|
|
|
L<[SurgicalPodWeaver]|Dist::Zilla::Plugin::SurgicalPodWeaver> instead of |
1205
|
|
|
|
|
|
|
L<[PodWeaver]|Dist::Zilla::Plugin::SurgicalPodWeaver>, but with all the same |
1206
|
|
|
|
|
|
|
options. Defaults to false. |
1207
|
|
|
|
|
|
|
|
1208
|
|
|
|
|
|
|
=head2 changes_version_columns |
1209
|
|
|
|
|
|
|
|
1210
|
|
|
|
|
|
|
Available since version 0.076. |
1211
|
|
|
|
|
|
|
|
1212
|
|
|
|
|
|
|
An integer that specifies how many columns (right-padded with whitespace) are |
1213
|
|
|
|
|
|
|
allocated in F<Changes> entries to the version string. Defaults to 10. |
1214
|
|
|
|
|
|
|
|
1215
|
|
|
|
|
|
|
=head2 licence (or license) |
1216
|
|
|
|
|
|
|
|
1217
|
|
|
|
|
|
|
Available since version 0.101. |
1218
|
|
|
|
|
|
|
|
1219
|
|
|
|
|
|
|
A string that specifies the name to use for the licence file. Defaults to |
1220
|
|
|
|
|
|
|
C<LICENCE> for distributions where I (ETHER) or any other known non-Americans |
1221
|
|
|
|
|
|
|
have first-come permissions, or C<LICENSE> otherwise. |
1222
|
|
|
|
|
|
|
(The pod section for legal information is also adjusted appropriately.) |
1223
|
|
|
|
|
|
|
|
1224
|
|
|
|
|
|
|
=head2 authority |
1225
|
|
|
|
|
|
|
|
1226
|
|
|
|
|
|
|
Available since version 0.117. |
1227
|
|
|
|
|
|
|
|
1228
|
|
|
|
|
|
|
A string of the form C<cpan:PAUSEID> that references the PAUSE ID of the user who has primary ("first-come") |
1229
|
|
|
|
|
|
|
authority over the distribution and main module namespace. If not provided, it is extracted from the configuration |
1230
|
|
|
|
|
|
|
passed through to the L<[Authority]|Dist::Zilla::Plugin::Authority> plugin, and finally defaults to C<cpan:ETHER>. |
1231
|
|
|
|
|
|
|
It is presently used for setting C<x_authority> metadata and deciding which spelling is used for the F<LICENCE> |
1232
|
|
|
|
|
|
|
file (if the C<licence> configuration is not provided). |
1233
|
|
|
|
|
|
|
|
1234
|
|
|
|
|
|
|
=head2 fake_release |
1235
|
|
|
|
|
|
|
|
1236
|
|
|
|
|
|
|
=for stopwords UploadToCPAN FakeRelease |
1237
|
|
|
|
|
|
|
|
1238
|
|
|
|
|
|
|
Available since version 0.122. |
1239
|
|
|
|
|
|
|
|
1240
|
|
|
|
|
|
|
A boolean option that, when set, removes L<[UploadToCPAN]|Dist::Zilla::Plugin::UploadToCPAN> from the plugin list |
1241
|
|
|
|
|
|
|
and replaces it with L<[FakeRelease]|Dist::Zilla::Plugin::FakeRelease>. |
1242
|
|
|
|
|
|
|
Defaults to false; can also be set with the environment variable C<FAKE_RELEASE>. |
1243
|
|
|
|
|
|
|
|
1244
|
|
|
|
|
|
|
=head2 plugin_prereq_phase, plugin_prereq_relationship |
1245
|
|
|
|
|
|
|
|
1246
|
|
|
|
|
|
|
If these are set, then plugins used by the bundle (with minimum version requirements) are injected into the |
1247
|
|
|
|
|
|
|
distribution's prerequisites at the specified phase and relationship. Defaults to C<x_Dist_Zilla> and C<requires>. |
1248
|
|
|
|
|
|
|
Disable with: |
1249
|
|
|
|
|
|
|
|
1250
|
|
|
|
|
|
|
plugin_prereq_phase = |
1251
|
|
|
|
|
|
|
plugin_prereq_relationship = |
1252
|
|
|
|
|
|
|
|
1253
|
|
|
|
|
|
|
Available since version 0.133. |
1254
|
|
|
|
|
|
|
|
1255
|
|
|
|
|
|
|
=for stopwords cpanfile |
1256
|
|
|
|
|
|
|
|
1257
|
|
|
|
|
|
|
=head2 cpanfile |
1258
|
|
|
|
|
|
|
|
1259
|
|
|
|
|
|
|
Available since version 0.147. |
1260
|
|
|
|
|
|
|
|
1261
|
|
|
|
|
|
|
A boolean option that, when set, adds a F<cpanfile> to the built distribution and also commits it to the local |
1262
|
|
|
|
|
|
|
repository after release. Beware that if the distribution has C<< dynamic_config => 1 >> in metadata, this will |
1263
|
|
|
|
|
|
|
I<not> be a complete list of prerequisites. |
1264
|
|
|
|
|
|
|
|
1265
|
|
|
|
|
|
|
=head2 bugtracker |
1266
|
|
|
|
|
|
|
|
1267
|
|
|
|
|
|
|
Available since version 0.154. |
1268
|
|
|
|
|
|
|
|
1269
|
|
|
|
|
|
|
When set to C<rt> or omitted, L<RT|http://rt.cpan.org> is used as the bug/issue tracker. Can also be set to |
1270
|
|
|
|
|
|
|
C<github>, in which case GitHub issues are used as the bugtracker in distribution metadata. |
1271
|
|
|
|
|
|
|
|
1272
|
|
|
|
|
|
|
=for stopwords customizations |
1273
|
|
|
|
|
|
|
|
1274
|
|
|
|
|
|
|
=head2 other customizations |
1275
|
|
|
|
|
|
|
|
1276
|
|
|
|
|
|
|
This bundle makes use of L<Dist::Zilla::Role::PluginBundle::PluginRemover> and |
1277
|
|
|
|
|
|
|
L<Dist::Zilla::Role::PluginBundle::Config::Slicer> to allow further customization. |
1278
|
|
|
|
|
|
|
(Note that even though some overridden values are inspected in this class, |
1279
|
|
|
|
|
|
|
they are still overlaid on top of whatever this bundle eventually decides to |
1280
|
|
|
|
|
|
|
pass - so what is in the F<dist.ini> always trumps everything else.) |
1281
|
|
|
|
|
|
|
|
1282
|
|
|
|
|
|
|
Plugins are not loaded until they are actually needed, so it is possible to |
1283
|
|
|
|
|
|
|
C<--force>-install this plugin bundle and C<-remove> some plugins that do not |
1284
|
|
|
|
|
|
|
install or are otherwise problematic. |
1285
|
|
|
|
|
|
|
|
1286
|
|
|
|
|
|
|
If a F<weaver.ini> is present in the distribution, pod is woven using it; |
1287
|
|
|
|
|
|
|
otherwise, the behaviour is as with a F<weaver.ini> containing the single line |
1288
|
|
|
|
|
|
|
C<[@Author::ETHER]> (see L<Pod::Weaver::PluginBundle::Author::ETHER>). |
1289
|
|
|
|
|
|
|
|
1290
|
|
|
|
|
|
|
=head1 NAMING SCHEME |
1291
|
|
|
|
|
|
|
|
1292
|
|
|
|
|
|
|
=for stopwords KENTNL |
1293
|
|
|
|
|
|
|
|
1294
|
|
|
|
|
|
|
This distribution follows best practices for author-oriented plugin bundles; for more information, |
1295
|
|
|
|
|
|
|
see L<KENTNL's distribution|Dist::Zilla::PluginBundle::Author::KENTNL/NAMING-SCHEME>. |
1296
|
|
|
|
|
|
|
|
1297
|
|
|
|
|
|
|
=head1 SEE ALSO |
1298
|
|
|
|
|
|
|
|
1299
|
|
|
|
|
|
|
=over 4 |
1300
|
|
|
|
|
|
|
|
1301
|
|
|
|
|
|
|
=item * |
1302
|
|
|
|
|
|
|
|
1303
|
|
|
|
|
|
|
L<Pod::Weaver::PluginBundle::Author::ETHER> |
1304
|
|
|
|
|
|
|
|
1305
|
|
|
|
|
|
|
=item * |
1306
|
|
|
|
|
|
|
|
1307
|
|
|
|
|
|
|
L<Dist::Zilla::MintingProfile::Author::ETHER> |
1308
|
|
|
|
|
|
|
|
1309
|
|
|
|
|
|
|
=item * |
1310
|
|
|
|
|
|
|
|
1311
|
|
|
|
|
|
|
L<Dist::Zilla::PluginBundle::Git::VersionManager> |
1312
|
|
|
|
|
|
|
|
1313
|
|
|
|
|
|
|
=back |
1314
|
|
|
|
|
|
|
|
1315
|
|
|
|
|
|
|
=head1 SUPPORT |
1316
|
|
|
|
|
|
|
|
1317
|
|
|
|
|
|
|
Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Dist-Zilla-PluginBundle-Author-ETHER> |
1318
|
|
|
|
|
|
|
(or L<bug-Dist-Zilla-PluginBundle-Author-ETHER@rt.cpan.org|mailto:bug-Dist-Zilla-PluginBundle-Author-ETHER@rt.cpan.org>). |
1319
|
|
|
|
|
|
|
|
1320
|
|
|
|
|
|
|
There is also a mailing list available for users of this distribution, at |
1321
|
|
|
|
|
|
|
L<http://dzil.org/#mailing-list>. |
1322
|
|
|
|
|
|
|
|
1323
|
|
|
|
|
|
|
There is also an irc channel available for users of this distribution, at |
1324
|
|
|
|
|
|
|
L<C<#distzilla> on C<irc.perl.org>|irc://irc.perl.org/#distzilla>. |
1325
|
|
|
|
|
|
|
|
1326
|
|
|
|
|
|
|
I am also usually active on irc, as 'ether' at C<irc.perl.org> and C<irc.libera.chat>. |
1327
|
|
|
|
|
|
|
|
1328
|
|
|
|
|
|
|
=head1 AUTHOR |
1329
|
|
|
|
|
|
|
|
1330
|
|
|
|
|
|
|
Karen Etheridge <ether@cpan.org> |
1331
|
|
|
|
|
|
|
|
1332
|
|
|
|
|
|
|
=head1 CONTRIBUTORS |
1333
|
|
|
|
|
|
|
|
1334
|
|
|
|
|
|
|
=for stopwords Dave Rolsky Edward Betts Graham Knop Randy Stauner Roy Ivy III Сергей Романов |
1335
|
|
|
|
|
|
|
|
1336
|
|
|
|
|
|
|
=over 4 |
1337
|
|
|
|
|
|
|
|
1338
|
|
|
|
|
|
|
=item * |
1339
|
|
|
|
|
|
|
|
1340
|
|
|
|
|
|
|
Dave Rolsky <autarch@urth.org> |
1341
|
|
|
|
|
|
|
|
1342
|
|
|
|
|
|
|
=item * |
1343
|
|
|
|
|
|
|
|
1344
|
|
|
|
|
|
|
Edward Betts <edward@4angle.com> |
1345
|
|
|
|
|
|
|
|
1346
|
|
|
|
|
|
|
=item * |
1347
|
|
|
|
|
|
|
|
1348
|
|
|
|
|
|
|
Graham Knop <haarg@haarg.org> |
1349
|
|
|
|
|
|
|
|
1350
|
|
|
|
|
|
|
=item * |
1351
|
|
|
|
|
|
|
|
1352
|
|
|
|
|
|
|
Randy Stauner <rwstauner@cpan.org> |
1353
|
|
|
|
|
|
|
|
1354
|
|
|
|
|
|
|
=item * |
1355
|
|
|
|
|
|
|
|
1356
|
|
|
|
|
|
|
Roy Ivy III <rivy@cpan.org> |
1357
|
|
|
|
|
|
|
|
1358
|
|
|
|
|
|
|
=item * |
1359
|
|
|
|
|
|
|
|
1360
|
|
|
|
|
|
|
Сергей Романов <sromanov@cpan.org> |
1361
|
|
|
|
|
|
|
|
1362
|
|
|
|
|
|
|
=back |
1363
|
|
|
|
|
|
|
|
1364
|
|
|
|
|
|
|
=head1 COPYRIGHT AND LICENCE |
1365
|
|
|
|
|
|
|
|
1366
|
|
|
|
|
|
|
This software is copyright (c) 2013 by Karen Etheridge. |
1367
|
|
|
|
|
|
|
|
1368
|
|
|
|
|
|
|
This is free software; you can redistribute it and/or modify it under |
1369
|
|
|
|
|
|
|
the same terms as the Perl 5 programming language system itself. |
1370
|
|
|
|
|
|
|
|
1371
|
|
|
|
|
|
|
=cut |