Dist-Zilla-Plugin-TravisCI
view release on metacpan or search on metacpan
lib/Dist/Zilla/Plugin/TravisCI.pm view on Meta::CPAN
package Dist::Zilla::Plugin::TravisCI;
our $AUTHORITY = 'cpan:GETTY';
# ABSTRACT: Integrating the generation of .travis.yml into your dzil
$Dist::Zilla::Plugin::TravisCI::VERSION = '0.014';
use Moose;
use Path::Tiny qw( path );
use Dist::Zilla::File::FromCode;
with 'Dist::Zilla::Role::FileGatherer','Dist::Zilla::Role::AfterBuild', 'Beam::Emitter';
our @phases = ( ( map { my $phase = $_; ('before_'.$phase, $phase, 'after_'.$phase) } qw( install script ) ), 'after_success', 'after_failure' );
our @emptymvarrayattr = qw( notify_email notify_irc requires env script_env extra_dep apt_package );
has $_ => ( is => 'ro', isa => 'ArrayRef[Str]', default => sub { [] } ) for (@phases, @emptymvarrayattr);
our @bools = qw( verbose test_deps test_authordeps no_notify_email coveralls );
has $_ => ( is => 'ro', isa => 'Bool', default => sub { 0 } ) for @bools;
has irc_template => ( is => 'ro', isa => 'ArrayRef[Str]', default => sub { [
"%{branch}#%{build_number} by %{author}: %{message} (%{build_url})",
] } );
has perl_version => ( is => 'ro', isa => 'ArrayRef[Str]', default => sub { [
"5.30",
"5.28",
"5.26",
"5.24",
"5.22",
"5.20",
"5.18",
"5.16",
"5.14",
] } );
has 'write_to' => ( is => 'ro', isa => 'ArrayRef[Str]', default => sub { [ 'root' ] } );
our @core_env = ("HARNESS_OPTIONS=j10:c HARNESS_TIMER=1");
around mvp_multivalue_args => sub {
my ($orig, $self) = @_;
my @start = $self->$orig;
return @start, @phases, @emptymvarrayattr, qw( irc_template perl_version write_to );
};
sub gather_files {
my $self = shift;
return unless grep { $_ eq 'build' } @{ $self->write_to };
require YAML;
my $file = Dist::Zilla::File::FromCode->new(
name => '.travis.yml',
code_return_type => 'text', # YAML::Dump returns text
code => sub {
return $self->build_travis_yml_str;
},
);
$self->add_file($file);
return;
}
sub after_build {
my $self = shift;
return unless grep { $_ eq 'root' } @{ $self->write_to };
path($self->zilla->root,'.travis.yml')->spew_utf8($self->build_travis_yml_str);
return;
}
sub _get_exports { shift; map { "export ".$_ } @_ }
sub build_travis_yml_str {
my ($self) = @_;
my $structure = $self->build_travis_yml;
require YAML;
local $YAML::QuoteNumericStrings=1;
return YAML::Dump($structure);
}
sub build_travis_yml {
my ($self, $is_build_branch) = @_;
my $zilla = $self->zilla;
my %travisyml = (
language => "perl",
matrix => {
include => [ map {{
perl => sprintf('%.2f',$_),
( $_ <= 5.20 ) ? ( dist => "trusty" ) : (),
}} @{$self->perl_version} ]
}
);
my $rmeta = $zilla->distmeta->{resources};
my %notifications;
( run in 2.006 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )