Dist-Zilla-Plugin-Breaks
view release on metacpan or search on metacpan
lib/Dist/Zilla/Plugin/Breaks.pm view on Meta::CPAN
use strict;
use warnings;
package Dist::Zilla::Plugin::Breaks; # git description: v0.004-7-gf1353f4
# vim: set ts=8 sts=2 sw=2 tw=100 et :
# ABSTRACT: Add metadata about potential breakages caused by your distribution
# KEYWORDS: distribution metadata prerequisites upstream dependencies modules conflicts breaks breakages
our $VERSION = '0.005';
use Moose;
with 'Dist::Zilla::Role::MetaProvider';
use CPAN::Meta::Requirements;
use Carp 'confess';
use namespace::autoclean;
sub mvp_multivalue_args { qw(breaks) }
has breaks => (
is => 'ro', isa => 'HashRef[Str]',
required => 1,
);
around BUILDARGS => sub
{
my $orig = shift;
my $class = shift;
my $args = $class->$orig(@_);
my ($zilla, $plugin_name) = delete @{$args}{qw(zilla plugin_name)};
confess 'Missing modules in [Breaks]' if not keys %$args;
return {
zilla => $zilla,
plugin_name => $plugin_name,
breaks => $args,
};
};
around dump_config => sub
{
my ($orig, $self) = @_;
my $config = $self->$orig;
my $data = {
blessed($self) ne __PACKAGE__ ? ( version => $VERSION ) : (),
};
$config->{+__PACKAGE__} = $data if keys %$data;
return $config;
};
sub metadata
{
my $self = shift;
my $reqs = CPAN::Meta::Requirements->new;
my $breaks_data = $self->breaks;
foreach my $package (keys %$breaks_data)
{
# this validates input data, and canonicalizes formatting
$reqs->add_string_requirement($package, $breaks_data->{$package});
}
$breaks_data = $reqs->as_string_hash;
return keys %$breaks_data ? { x_breaks => $breaks_data } : {};
}
__PACKAGE__->meta->make_immutable;
__END__
=pod
=encoding UTF-8
=head1 NAME
Dist::Zilla::Plugin::Breaks - Add metadata about potential breakages caused by your distribution
( run in 1.831 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )