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 )