CPAN::Meta::Prereqs::Diff - Compare dependencies between releases using CPAN::Meta.
version 0.001002
use CPAN::Meta::Prereqs::Diff; my $diff = CPAN::Meta::Diff->new( new_prereqs => CPAN::Meta->load_file('Dist-Foo-1.01/META.json')->effective_prereqs old_prereqs => CPAN::Meta->load_file('Dist-Foo-1.00/META.json')->effective_prereqs ); my @changes = $diff->diff( phases => [qw( runtime build configure test )], types => [qw( requires suggests configures conflicts )], ); ## Here, the examples with printf are not needed because ->describe exists ## But they're there any way for example reasons. for my $dep (@prereqs) { if ( $dep->is_addition ) { # runtime.requires: + Foo::Bar 0.4 printf "%s.%s : + %s %s", $dep->phase, $dep->type, $dep->module, $dep->requirement; next; } if ( $dep->is_removal ) { # runtime.requires: - Foo::Bar 0.4 printf "%s.%s : - %s %s", $dep->phase, $dep->type, $dep->module, $dep->requirement; next; } if ( $dep->is_change ) { if ( $dep->is_upgrade ) { # runtime.requires: ↑ Foo::Bar 0.4 → 0.5 printf "%s.%s : \x{2191} %s \x{2192} %s", $dep->phase, $dep->type, $dep->module, $dep->old_requirement, $dep->new_requirement; next; } if ( $dep->is_downgrade ) { # runtime.requires: ↓ Foo::Bar 0.5 → 0.4 printf "%s.%s : \x{2193} %s %s \x{2192} %s", $dep->phase, $dep->type, $dep->module, $dep->old_requirement, $dep->new_requirement; next; } # changes that can't be easily determined upgrades or downgrades # runtime.requires: ~ Foo::Bar >=0.5, <=0.7 → >=0.4, <=0.8 printf "%s.%s : ~ %s %s \x{2192} %s", $dep->phase, $dep->type, $dep->module, $dep->old_requirement, $dep->new_requirement; next; } }
diff
my @out = $diff->diff( %options );
Returns a list of Objects that do CPAN::Meta::Prereqs::Diff::Role::Change, describing the changes between old_prereqs and new_prereqs
Objects
do
CPAN::Meta::Prereqs::Diff::Role::Change
old_prereqs
new_prereqs
Addition
Change
Upgrade
Downgrade
Removal
diff.%options
diff.options.phases
my @out = $diff->diff( phases => [ ... ] ); ArrayRef default = [qw( configure build runtime test )] valid options = [qw( configure build runtime test develop )]
diff.options.types
my @out = $diff->diff( types => [ ... ] ); ArrayRef default = [qw( requires recommends suggests conflicts )] valid options = [qw( requires recommends suggests conflicts )]
required HashRef | CPAN::Meta::Prereqs | CPAN::Meta
Kent Fredric <kentfredric@gmail.com>
This software is copyright (c) 2014 by Kent Fredric <kentfredric@gmail.com>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install CPAN::Meta::Prereqs::Diff, copy and paste the appropriate command in to your terminal.
cpanm
cpanm CPAN::Meta::Prereqs::Diff
CPAN shell
perl -MCPAN -e shell install CPAN::Meta::Prereqs::Diff
For more information on module installation, please visit the detailed CPAN module installation guide.