The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;
use Cwd;
use FindBin;
use lib Cwd::abs_path "$FindBin::Bin/../lib";
use File::Share;
use Hash::Merge 'merge';
use IO::All;
use Template::Toolkit::Simple;
use YAML::XS;
use Zilla::Dist;

my $meta = Load io->file('Meta')->all;
my $travis = delete($meta->{'=travis'}) or exit;
$travis = { type => $travis } unless ref $travis;
exit unless $travis->{type} eq 'perl';
my $data = merge($travis, $meta);
$data->{RequiredModules} = [];
if (my $r = $data->{requires}) {
    push @{$data->{RequiredModules}}, keys %$r;
}
if (my $r = $data->{test}{requires}) {
    push @{$data->{RequiredModules}}, keys %$r;
}
if (my $r = $data->{recommends}) {
    push @{$data->{RequiredModules}}, keys %$r;
}

my $yaml = tt
    ->path([File::Share::dist_dir('Zilla-Dist')])
    ->data($data)
    ->render('travis.yml');

io->file('.travis.yml')->print($yaml);