#!/usr/bin/perl

use strict;
use warnings;
use Carp;

use CPAN::Meta qw(load_file);
use YAML::XS qw(DumpFile);

my ( $meta, $upstream );

if ( -r 'META.json' ) {
    $meta = CPAN::Meta->load_file('META.json');
} elsif ( -r 'META.yml' ) {
    $meta = CPAN::Meta->load_file('META.yml');
} else {
    croak 'Neither META.json nor META.yml found.';
}

$upstream->{"Archive"}           = 'CPAN';
$upstream->{"Name"}              = $meta->{name};
$upstream->{"Contact"}           = join( ', ', @{ $meta->{author} } );
# $upstream->{"Homepage"}        = $meta->{resources}->{homepage};
$upstream->{"Bug-Database"}      = $meta->{resources}->{bugtracker}->{web};
$upstream->{"Bug-Submit"}        = $meta->{resources}->{bugtracker}->{mailto};
$upstream->{"Repository"}        = $meta->{resources}->{repository}->{url};
$upstream->{"Repository-Browse"} = $meta->{resources}->{repository}->{web};

foreach ( keys %{$upstream} ) {
    delete $upstream->{$_} unless defined $upstream->{$_};
}

mkdir('debian/upstream');
DumpFile( 'debian/upstream/metadata', $upstream );

=pod

=head1 NAME

dpt-debian-upstream - convert resources from META.{json,yml} to debian/upstream/metadata

=head1 SYNOPSIS

B<dpt debian-upstream>

=head1 DESCRIPTION

B<dpt debian-upstream> reads information from F<META.json> or F<META.yml> and
writes them to F<debian/upstream/metadata>, according to the UpstreamMetaData
specification.

=head1 SEE ALSO

=over

=item *

L<CPAN::Meta::Spec>

=item *

L<UpstreamMetaData|https://wiki.debian.org/UpstreamMetadata>

=back

=head1 COPYRIGHT AND LICENSE

Copyright 2013-2014, gregor herrmann L<gregoa@debian.org>

This program is free software and can be distributed under the same terms as
Perl.
