#!/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;

if (-e 'pkg/travis.yml') {
    my $travis = io->file('pkg/travis.yml')->all;
    io->file('.travis.yml')->print($travis);
}
else {
    my $meta = Load io->file('Meta')->all;
    my $cpan = delete($meta->{'=cpan'}) || {};
    my $data = merge($cpan, $meta);
    my $travis = delete($meta->{'=travis'}) or exit;
    $travis = { type => $travis } unless ref $travis;
    exit unless $travis->{type} eq 'perl';
    $data = merge($travis, $data);
    $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);
}
