Why not adopt me?
This distribution is up for adoption!
If you're interested then please contact the PAUSE module admins via
email.
NAME
CPAN::Meta::Prereqs::Diff - Compare dependencies between releases using CPAN::Meta.
VERSION
version 0.001004
SYNOPSIS
my
$diff
= CPAN::Meta::Prereqs::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
;
}
}
DESCRIPTION
This module allows relatively straight forward routines for comparing and itemizing two sets of CPAN::Meta
prerequisites, plucking out kinds of changes that are interesting.
METHODS
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
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 )
]
ATTRIBUTES
new_prereqs
required
HashRef | CPAN::Meta::Prereqs | CPAN::Meta
old_prereqs
required
HashRef | CPAN::Meta::Prereqs | CPAN::Meta
AUTHOR
Kent Fredric <kentnl@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2017 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.