line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Dist::Zilla::Plugin::TravisCI; |
2
|
|
|
|
|
|
|
our $AUTHORITY = 'cpan:GETTY'; |
3
|
|
|
|
|
|
|
# ABSTRACT: Integrating the generation of .travis.yml into your dzil |
4
|
|
|
|
|
|
|
$Dist::Zilla::Plugin::TravisCI::VERSION = '0.012'; |
5
|
4
|
|
|
4
|
|
6340579
|
use Moose; |
|
4
|
|
|
|
|
472708
|
|
|
4
|
|
|
|
|
34
|
|
6
|
4
|
|
|
4
|
|
30565
|
use Path::Tiny qw( path ); |
|
4
|
|
|
|
|
11167
|
|
|
4
|
|
|
|
|
290
|
|
7
|
4
|
|
|
4
|
|
2135
|
use Dist::Zilla::File::FromCode; |
|
4
|
|
|
|
|
1026380
|
|
|
4
|
|
|
|
|
5854
|
|
8
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
with 'Dist::Zilla::Role::FileGatherer','Dist::Zilla::Role::AfterBuild', 'Beam::Emitter'; |
10
|
|
|
|
|
|
|
|
11
|
|
|
|
|
|
|
our @phases = ( ( map { my $phase = $_; ('before_'.$phase, $phase, 'after_'.$phase) } qw( install script ) ), 'after_success', 'after_failure' ); |
12
|
|
|
|
|
|
|
our @emptymvarrayattr = qw( notify_email notify_irc requires env script_env extra_dep apt_package ); |
13
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
has $_ => ( is => 'ro', isa => 'ArrayRef[Str]', default => sub { [] } ) for (@phases, @emptymvarrayattr); |
15
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
our @bools = qw( verbose test_deps test_authordeps no_notify_email coveralls ); |
17
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
has $_ => ( is => 'ro', isa => 'Bool', default => sub { 0 } ) for @bools; |
19
|
|
|
|
|
|
|
|
20
|
|
|
|
|
|
|
has irc_template => ( is => 'ro', isa => 'ArrayRef[Str]', default => sub { [ |
21
|
|
|
|
|
|
|
"%{branch}#%{build_number} by %{author}: %{message} (%{build_url})", |
22
|
|
|
|
|
|
|
] } ); |
23
|
|
|
|
|
|
|
|
24
|
|
|
|
|
|
|
has perl_version => ( is => 'ro', isa => 'ArrayRef[Str]', default => sub { [ |
25
|
|
|
|
|
|
|
"5.30", |
26
|
|
|
|
|
|
|
"5.28", |
27
|
|
|
|
|
|
|
"5.26", |
28
|
|
|
|
|
|
|
"5.24", |
29
|
|
|
|
|
|
|
"5.22", |
30
|
|
|
|
|
|
|
"5.20", |
31
|
|
|
|
|
|
|
"5.18", |
32
|
|
|
|
|
|
|
"5.16", |
33
|
|
|
|
|
|
|
"5.14", |
34
|
|
|
|
|
|
|
] } ); |
35
|
|
|
|
|
|
|
|
36
|
|
|
|
|
|
|
|
37
|
|
|
|
|
|
|
has 'write_to' => ( is => 'ro', isa => 'ArrayRef[Str]', default => sub { [ 'root' ] } ); |
38
|
|
|
|
|
|
|
|
39
|
|
|
|
|
|
|
our @core_env = ("HARNESS_OPTIONS=j10:c HARNESS_TIMER=1"); |
40
|
|
|
|
|
|
|
|
41
|
|
|
|
|
|
|
around mvp_multivalue_args => sub { |
42
|
|
|
|
|
|
|
my ($orig, $self) = @_; |
43
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
my @start = $self->$orig; |
45
|
|
|
|
|
|
|
return @start, @phases, @emptymvarrayattr, qw( irc_template perl_version write_to ); |
46
|
|
|
|
|
|
|
}; |
47
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
sub gather_files { |
49
|
5
|
|
|
5
|
0
|
226910
|
my $self = shift; |
50
|
5
|
50
|
|
|
|
16
|
return unless grep { $_ eq 'build' } @{ $self->write_to }; |
|
5
|
|
|
|
|
32
|
|
|
5
|
|
|
|
|
193
|
|
51
|
0
|
|
|
|
|
0
|
require YAML; |
52
|
|
|
|
|
|
|
my $file = Dist::Zilla::File::FromCode->new( |
53
|
|
|
|
|
|
|
name => '.travis.yml', |
54
|
|
|
|
|
|
|
code_return_type => 'text', # YAML::Dump returns text |
55
|
|
|
|
|
|
|
code => sub { |
56
|
0
|
|
|
0
|
|
0
|
return $self->build_travis_yml_str; |
57
|
|
|
|
|
|
|
}, |
58
|
0
|
|
|
|
|
0
|
); |
59
|
0
|
|
|
|
|
0
|
$self->add_file($file); |
60
|
0
|
|
|
|
|
0
|
return; |
61
|
|
|
|
|
|
|
} |
62
|
|
|
|
|
|
|
|
63
|
|
|
|
|
|
|
sub after_build { |
64
|
5
|
|
|
5
|
0
|
137923
|
my $self = shift; |
65
|
5
|
50
|
|
|
|
17
|
return unless grep { $_ eq 'root' } @{ $self->write_to }; |
|
5
|
|
|
|
|
57
|
|
|
5
|
|
|
|
|
219
|
|
66
|
5
|
|
|
|
|
160
|
path($self->zilla->root,'.travis.yml')->spew_utf8($self->build_travis_yml_str); |
67
|
5
|
|
|
|
|
89199
|
return; |
68
|
|
|
|
|
|
|
} |
69
|
|
|
|
|
|
|
|
70
|
15
|
|
|
15
|
|
33
|
sub _get_exports { shift; map { "export ".$_ } @_ } |
|
15
|
|
|
|
|
45
|
|
|
5
|
|
|
|
|
30
|
|
71
|
|
|
|
|
|
|
|
72
|
|
|
|
|
|
|
sub build_travis_yml_str { |
73
|
5
|
|
|
5
|
0
|
446
|
my ($self) = @_; |
74
|
5
|
|
|
|
|
28
|
my $structure = $self->build_travis_yml; |
75
|
5
|
|
|
|
|
185
|
require YAML; |
76
|
5
|
|
|
|
|
7149
|
local $YAML::QuoteNumericStrings=1; |
77
|
5
|
|
|
|
|
30
|
return YAML::Dump($structure); |
78
|
|
|
|
|
|
|
} |
79
|
|
|
|
|
|
|
|
80
|
|
|
|
|
|
|
sub build_travis_yml { |
81
|
5
|
|
|
5
|
0
|
17
|
my ($self, $is_build_branch) = @_; |
82
|
|
|
|
|
|
|
|
83
|
5
|
|
|
|
|
145
|
my $zilla = $self->zilla; |
84
|
|
|
|
|
|
|
my %travisyml = ( |
85
|
|
|
|
|
|
|
language => "perl", |
86
|
|
|
|
|
|
|
matrix => { |
87
|
|
|
|
|
|
|
include => [ map {{ |
88
|
45
|
100
|
|
|
|
355
|
perl => sprintf('%.2f',$_), |
89
|
|
|
|
|
|
|
( $_ <= 5.20 ) ? ( dist => "trusty" ) : (), |
90
|
5
|
|
|
|
|
48
|
}} @{$self->perl_version} ] |
|
5
|
|
|
|
|
184
|
|
91
|
|
|
|
|
|
|
} |
92
|
|
|
|
|
|
|
); |
93
|
|
|
|
|
|
|
|
94
|
5
|
|
|
|
|
226
|
my $rmeta = $zilla->distmeta->{resources}; |
95
|
|
|
|
|
|
|
|
96
|
5
|
|
|
|
|
58
|
my %notifications; |
97
|
|
|
|
|
|
|
|
98
|
5
|
|
|
|
|
20
|
my @emails = grep { $_ } @{$self->notify_email}; |
|
0
|
|
|
|
|
0
|
|
|
5
|
|
|
|
|
185
|
|
99
|
5
|
50
|
|
|
|
176
|
if ($self->no_notify_email) { |
|
|
50
|
|
|
|
|
|
100
|
0
|
|
|
|
|
0
|
$notifications{email} = \"false"; |
101
|
|
|
|
|
|
|
} elsif (scalar @emails) { |
102
|
0
|
|
|
|
|
0
|
$notifications{email} = \@emails; |
103
|
|
|
|
|
|
|
} |
104
|
|
|
|
|
|
|
|
105
|
5
|
50
|
|
|
|
18
|
if (%notifications) { |
106
|
0
|
|
|
|
|
0
|
$travisyml{notifications} = \%notifications; |
107
|
|
|
|
|
|
|
} |
108
|
|
|
|
|
|
|
|
109
|
5
|
100
|
|
|
|
8
|
if (@{$self->apt_package()}) { |
|
5
|
|
|
|
|
203
|
|
110
|
2
|
|
|
|
|
60
|
$travisyml{addons}->{apt_packages} = $self->apt_package(); |
111
|
|
|
|
|
|
|
} |
112
|
|
|
|
|
|
|
|
113
|
5
|
|
|
|
|
25
|
my %phases_commands = map { $_ => $self->$_ } @phases; |
|
40
|
|
|
|
|
1383
|
|
114
|
|
|
|
|
|
|
|
115
|
5
|
50
|
|
|
|
174
|
my $verbose = $self->verbose ? ' --verbose ' : ' --quiet '; |
116
|
|
|
|
|
|
|
|
117
|
5
|
|
|
|
|
12
|
unshift @{$phases_commands{before_install}}, ( |
|
5
|
|
|
|
|
71
|
|
118
|
|
|
|
|
|
|
'git config --global user.name "Dist Zilla Plugin TravisCI"', |
119
|
|
|
|
|
|
|
'git config --global user.email $HOSTNAME":not-for-mail@travis-ci.org"', |
120
|
|
|
|
|
|
|
); |
121
|
|
|
|
|
|
|
|
122
|
5
|
|
|
|
|
12
|
my @extra_deps = @{$self->extra_dep}; |
|
5
|
|
|
|
|
203
|
|
123
|
|
|
|
|
|
|
|
124
|
5
|
|
|
|
|
12
|
my $needs_cover; |
125
|
|
|
|
|
|
|
|
126
|
5
|
50
|
|
|
|
168
|
if ($self->coveralls) { |
127
|
0
|
|
|
|
|
0
|
push @extra_deps, 'Devel::Cover::Report::Coveralls'; |
128
|
0
|
|
|
|
|
0
|
unshift @{$phases_commands{after_success}}, 'cover -report coveralls'; |
|
0
|
|
|
|
|
0
|
|
129
|
0
|
|
|
|
|
0
|
$needs_cover = 1; |
130
|
|
|
|
|
|
|
} |
131
|
|
|
|
|
|
|
|
132
|
5
|
50
|
|
|
|
22
|
if ($needs_cover) { |
133
|
0
|
|
|
|
|
0
|
push @{$self->env}, 'HARNESS_PERL_SWITCHES=-MDevel::Cover=-db,$TRAVIS_BUILD_DIR/cover_db'; |
|
0
|
|
|
|
|
0
|
|
134
|
|
|
|
|
|
|
} |
135
|
|
|
|
|
|
|
|
136
|
5
|
|
|
|
|
47
|
my @env_exports = $self->_get_exports(@core_env, @{$self->env}); |
|
5
|
|
|
|
|
182
|
|
137
|
|
|
|
|
|
|
|
138
|
5
|
50
|
|
|
|
14
|
unless (@{$phases_commands{install}}) { |
|
5
|
|
|
|
|
23
|
|
139
|
5
|
50
|
|
|
|
11
|
push @{$phases_commands{install}}, ( |
|
5
|
50
|
|
|
|
235
|
|
140
|
|
|
|
|
|
|
"cpanm ".$verbose." --notest --skip-installed Dist::Zilla", |
141
|
|
|
|
|
|
|
"dzil authordeps | grep -ve '^\\W' | xargs -n 5 -P 10 cpanm ".$verbose." ".($self->test_authordeps ? "" : " --notest ")." --skip-installed", |
142
|
|
|
|
|
|
|
"dzil listdeps | grep -ve '^\\W' | cpanm ".$verbose." ".($self->test_deps ? "" : " --notest ")." --skip-installed", |
143
|
|
|
|
|
|
|
); |
144
|
5
|
50
|
|
|
|
21
|
if (@extra_deps) { |
145
|
0
|
0
|
|
|
|
0
|
push @{$phases_commands{install}}, ( |
|
0
|
|
|
|
|
0
|
|
146
|
|
|
|
|
|
|
"cpanm ".$verbose." ".($self->test_deps ? "" : " --notest ")." ".join(" ",@extra_deps), |
147
|
|
|
|
|
|
|
); |
148
|
|
|
|
|
|
|
} |
149
|
|
|
|
|
|
|
} |
150
|
|
|
|
|
|
|
|
151
|
5
|
50
|
|
|
|
11
|
unless (@{$phases_commands{script}}) { |
|
5
|
|
|
|
|
18
|
|
152
|
5
|
|
|
|
|
9
|
push @{$phases_commands{script}}, "dzil smoke --release --author"; |
|
5
|
|
|
|
|
18
|
|
153
|
|
|
|
|
|
|
} |
154
|
|
|
|
|
|
|
|
155
|
5
|
|
|
|
|
13
|
unshift @{$phases_commands{script}}, $self->_get_exports(@{$self->script_env}); |
|
5
|
|
|
|
|
13
|
|
|
5
|
|
|
|
|
184
|
|
156
|
|
|
|
|
|
|
|
157
|
5
|
50
|
|
|
|
10
|
unless (@{$phases_commands{install}}) { |
|
5
|
|
|
|
|
23
|
|
158
|
|
|
|
|
|
|
$phases_commands{install} = [ |
159
|
0
|
0
|
|
|
|
0
|
'cpanm --installdeps '.$verbose.' '.($self->test_deps ? "" : "--notest").' --skip-installed .', |
160
|
|
|
|
|
|
|
]; |
161
|
|
|
|
|
|
|
} |
162
|
|
|
|
|
|
|
|
163
|
5
|
50
|
|
|
|
17
|
if (@{$self->requires}) { |
|
5
|
|
|
|
|
174
|
|
164
|
0
|
|
|
|
|
0
|
unshift @{$phases_commands{before_install}}, "sudo apt-get install -qq ".join(" ",@{$self->requires}); |
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
165
|
|
|
|
|
|
|
} |
166
|
|
|
|
|
|
|
|
167
|
5
|
|
|
|
|
14
|
push @{$phases_commands{install}}, @{delete $phases_commands{after_install}}; |
|
5
|
|
|
|
|
13
|
|
|
5
|
|
|
|
|
15
|
|
168
|
|
|
|
|
|
|
|
169
|
5
|
|
|
|
|
10
|
unshift @{$phases_commands{script}}, $self->_get_exports(@{$self->script_env}); |
|
5
|
|
|
|
|
12
|
|
|
5
|
|
|
|
|
169
|
|
170
|
|
|
|
|
|
|
|
171
|
5
|
|
|
|
|
13
|
my $first = 0; |
172
|
5
|
|
|
|
|
77
|
for (@phases) { |
173
|
40
|
100
|
|
|
|
101
|
next unless defined $phases_commands{$_}; |
174
|
35
|
|
|
|
|
54
|
my @commands = @{$phases_commands{$_}}; |
|
35
|
|
|
|
|
71
|
|
175
|
35
|
100
|
|
|
|
87
|
if (@commands) { |
176
|
15
|
100
|
|
|
|
136
|
$travisyml{$_} = [ |
177
|
|
|
|
|
|
|
$first |
178
|
|
|
|
|
|
|
? () |
179
|
|
|
|
|
|
|
: (@env_exports), |
180
|
|
|
|
|
|
|
@commands, |
181
|
|
|
|
|
|
|
]; |
182
|
15
|
|
|
|
|
33
|
$first = 1; |
183
|
|
|
|
|
|
|
} |
184
|
|
|
|
|
|
|
} |
185
|
|
|
|
|
|
|
|
186
|
5
|
|
|
|
|
45
|
return $self->emit( |
187
|
|
|
|
|
|
|
'modify_travis_yml', |
188
|
|
|
|
|
|
|
class => 'Dist::Zilla::Event::TravisCI::YML', |
189
|
|
|
|
|
|
|
travis_yml => { $self->modify_travis_yml(%travisyml) } |
190
|
|
|
|
|
|
|
)->travis_yml; |
191
|
|
|
|
|
|
|
} |
192
|
|
|
|
|
|
|
|
193
|
|
|
|
|
|
|
sub modify_travis_yml { |
194
|
4
|
|
|
4
|
1
|
35
|
my ( $self, %args ) = @_; |
195
|
4
|
|
|
|
|
42
|
return %args; |
196
|
|
|
|
|
|
|
} |
197
|
|
|
|
|
|
|
|
198
|
|
|
|
|
|
|
__PACKAGE__->meta->make_immutable; |
199
|
|
|
|
|
|
|
|
200
|
|
|
|
|
|
|
package # Hidden |
201
|
|
|
|
|
|
|
Dist::Zilla::Event::TravisCI::YML; |
202
|
|
|
|
|
|
|
|
203
|
4
|
|
|
4
|
|
66
|
use Moose; |
|
4
|
|
|
|
|
12
|
|
|
4
|
|
|
|
|
44
|
|
204
|
|
|
|
|
|
|
extends 'Beam::Event'; |
205
|
|
|
|
|
|
|
|
206
|
|
|
|
|
|
|
has 'travis_yml' => ( is => 'rw', isa => 'HashRef', required => 1 ); |
207
|
|
|
|
|
|
|
|
208
|
|
|
|
|
|
|
__PACKAGE__->meta->make_immutable; |
209
|
|
|
|
|
|
|
|
210
|
|
|
|
|
|
|
1; |
211
|
|
|
|
|
|
|
|
212
|
|
|
|
|
|
|
__END__ |
213
|
|
|
|
|
|
|
|
214
|
|
|
|
|
|
|
=pod |
215
|
|
|
|
|
|
|
|
216
|
|
|
|
|
|
|
=head1 NAME |
217
|
|
|
|
|
|
|
|
218
|
|
|
|
|
|
|
Dist::Zilla::Plugin::TravisCI - Integrating the generation of .travis.yml into your dzil |
219
|
|
|
|
|
|
|
|
220
|
|
|
|
|
|
|
=head1 VERSION |
221
|
|
|
|
|
|
|
|
222
|
|
|
|
|
|
|
version 0.012 |
223
|
|
|
|
|
|
|
|
224
|
|
|
|
|
|
|
=head1 SYNOPSIS |
225
|
|
|
|
|
|
|
|
226
|
|
|
|
|
|
|
[TravisCI] |
227
|
|
|
|
|
|
|
perl_version = 5.14 |
228
|
|
|
|
|
|
|
perl_version = 5.16 |
229
|
|
|
|
|
|
|
perl_version = 5.18 |
230
|
|
|
|
|
|
|
perl_version = 5.20 |
231
|
|
|
|
|
|
|
perl_version = 5.22 |
232
|
|
|
|
|
|
|
perl_version = 5.24 |
233
|
|
|
|
|
|
|
perl_version = 5.26 |
234
|
|
|
|
|
|
|
perl_version = 5.28 |
235
|
|
|
|
|
|
|
perl_version = 5.30 |
236
|
|
|
|
|
|
|
notify_email = other@email.then.default |
237
|
|
|
|
|
|
|
irc_template = %{branch}#%{build_number} by %{author}: %{message} (%{build_url}) |
238
|
|
|
|
|
|
|
requires = libdebian-package-dev |
239
|
|
|
|
|
|
|
extra_dep = Extra::Module |
240
|
|
|
|
|
|
|
env = KEY=VALUE |
241
|
|
|
|
|
|
|
script_env = SCRIPTKEY=SCRIPTONLY |
242
|
|
|
|
|
|
|
before_install = echo "After the installation of requirements before perl modules" |
243
|
|
|
|
|
|
|
install = echo "Replace our procedure to install the perl modules" |
244
|
|
|
|
|
|
|
after_install = echo "In the install phase after perl modules are installed" |
245
|
|
|
|
|
|
|
before_script = echo "Do something before the dzil smoke is called" |
246
|
|
|
|
|
|
|
script = echo "replace our call for dzil smoke" |
247
|
|
|
|
|
|
|
after_script = echo "another test script to run, probably?" |
248
|
|
|
|
|
|
|
after_success = echo "yeah!" |
249
|
|
|
|
|
|
|
after_failure = echo "Buh!! :(" |
250
|
|
|
|
|
|
|
verbose = 0 |
251
|
|
|
|
|
|
|
test_deps = 0 |
252
|
|
|
|
|
|
|
test_authordeps = 0 |
253
|
|
|
|
|
|
|
no_notify_email = 0 |
254
|
|
|
|
|
|
|
coveralls = 0 |
255
|
|
|
|
|
|
|
apt_package = libzmq1-dev |
256
|
|
|
|
|
|
|
|
257
|
|
|
|
|
|
|
=head1 DESCRIPTION |
258
|
|
|
|
|
|
|
|
259
|
|
|
|
|
|
|
Adds a B<.travis.yml> to your repository on B<build> or B<release>. This is a |
260
|
|
|
|
|
|
|
very early release, more features are planned and upcoming, including more |
261
|
|
|
|
|
|
|
documentation :). |
262
|
|
|
|
|
|
|
|
263
|
|
|
|
|
|
|
=head1 BASED ON |
264
|
|
|
|
|
|
|
|
265
|
|
|
|
|
|
|
This plugin is based on code of L<Dist::Zilla::TravisCI>. |
266
|
|
|
|
|
|
|
|
267
|
|
|
|
|
|
|
=head1 EVENTS |
268
|
|
|
|
|
|
|
|
269
|
|
|
|
|
|
|
This module provides an event to allow modifying the C<travis_yml> data structure |
270
|
|
|
|
|
|
|
prior to writing it to file. |
271
|
|
|
|
|
|
|
|
272
|
|
|
|
|
|
|
=head2 C<modify_travis_yml> |
273
|
|
|
|
|
|
|
|
274
|
|
|
|
|
|
|
This event can be hooked with L<< C<[Beam::Connector]>|Dist::Zilla::Plugin::Beam::Connector >> |
275
|
|
|
|
|
|
|
in order to allow 3rd party plugins to modify the C<YAML> data. |
276
|
|
|
|
|
|
|
|
277
|
|
|
|
|
|
|
; Hook into another plugin from this |
278
|
|
|
|
|
|
|
on = plugin:TravisCI#modify_travis_yml => plugin:AuthorTweaks#tweak_travis |
279
|
|
|
|
|
|
|
|
280
|
|
|
|
|
|
|
; Hook into an arbitrary class loaded by Beam |
281
|
|
|
|
|
|
|
container = inc/beam.yml |
282
|
|
|
|
|
|
|
on = plugin:TravisCI#modify_travis_yml => container:disttweaks#tweak_travis |
283
|
|
|
|
|
|
|
|
284
|
|
|
|
|
|
|
The recieving method(s) will recieve a C<Dist::Zilla::Event::TravisCI::YML> event to modify |
285
|
|
|
|
|
|
|
directly. |
286
|
|
|
|
|
|
|
|
287
|
|
|
|
|
|
|
sub event_hander { |
288
|
|
|
|
|
|
|
my ( $self , $event ) = @_; |
289
|
|
|
|
|
|
|
push @{ $event->travis_yml->{env} }, 'AUTHOR_TESTING=1'; |
290
|
|
|
|
|
|
|
} |
291
|
|
|
|
|
|
|
|
292
|
|
|
|
|
|
|
B<< See L<< C<[Beam::Connector]>|Dist::Zilla::Plugin::Beam::Connector/Receiving Events >> for details. >> |
293
|
|
|
|
|
|
|
|
294
|
|
|
|
|
|
|
=head1 SUPPORT |
295
|
|
|
|
|
|
|
|
296
|
|
|
|
|
|
|
IRC |
297
|
|
|
|
|
|
|
|
298
|
|
|
|
|
|
|
Join #distzilla on irc.perl.org. Highlight Getty for fast reaction :). |
299
|
|
|
|
|
|
|
|
300
|
|
|
|
|
|
|
Repository |
301
|
|
|
|
|
|
|
|
302
|
|
|
|
|
|
|
http://github.com/Getty/p5-dist-zilla-plugin-travisci |
303
|
|
|
|
|
|
|
Pull request and additional contributors are welcome |
304
|
|
|
|
|
|
|
|
305
|
|
|
|
|
|
|
Issue Tracker |
306
|
|
|
|
|
|
|
|
307
|
|
|
|
|
|
|
http://github.com/Getty/p5-dist-zilla-plugin-travisci/issues |
308
|
|
|
|
|
|
|
|
309
|
|
|
|
|
|
|
=head1 AUTHOR |
310
|
|
|
|
|
|
|
|
311
|
|
|
|
|
|
|
Torsten Raudssus <torsten@raudss.us> L<https://raudss.us/> |
312
|
|
|
|
|
|
|
|
313
|
|
|
|
|
|
|
=head1 COPYRIGHT AND LICENSE |
314
|
|
|
|
|
|
|
|
315
|
|
|
|
|
|
|
This software is copyright (c) 2013 by L<Raudssus Social Software|https://raudss.us/>. |
316
|
|
|
|
|
|
|
|
317
|
|
|
|
|
|
|
This is free software; you can redistribute it and/or modify it under |
318
|
|
|
|
|
|
|
the same terms as the Perl 5 programming language system itself. |
319
|
|
|
|
|
|
|
|
320
|
|
|
|
|
|
|
=cut |