NAME

CPAN::Changes::Group::Dependencies::Stats - Create a Dependencies::Stats section detailing summarized differences

VERSION

version 0.002008

SYNOPSIS

use CPAN::Changes::Release 0.29;
use CPAN::Changes::Group::Dependencies::Stats;

my $s = CPAN::Changes::Group::Dependencies::Stats->new(
  prelude     => [ 'Change statistics since 1.00' ],
  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,
);

# Currently slightly complicated due to groups themselves
# not presently being pluggable.
my $rel = CPAN::Changes::Release->new( version => '1.01' );
$rel->attach( $s ) if $s->has_changes;
$rel->serialize();

# RESULT
#
# [ Dependencies::Stats ]
#   - Change statistics since 1.00
#   - build: -1 (recommends: -1)
#   - configure: +1 -1 (recommends: +1 -1)
#   - develop: +5 -5 (suggests: +2 -1)
#   - test: (recommends: +1 ↑1)

DESCRIPTION

This module is a utility tool that produces short, summarized details about changes in dependencies between two sets of prerequisites such that one can visually identify at a glance the general nature of the dependency changes without being swamped by the specifics, only looking into the specifics when the summary indicates it is warranted.

This aims to be a utility to assist downstream in quickly assessing effort when performing manual updates.

METHODS

has_changes

Returns whether this group has any interesting changes or not.

if ( $group->has_changes ) {
  $release->attach_group( $group );
} else {
  $release->delete_group( $group->name );
}

changes

Returns a list of change entries.

my $changes = $object->changes;
say $_ for @{$changes};

Format:

%phase: %requiredstats (%optlabel: %optstats, ...)

%phase is one of configure, build, runtime, develop, test

%optlabel is one of recommends, suggests

%requiredstats and %optstats are strings of stat changes:

%symbol%number %symbol%number ...

%symbol is:

+   a dependency previously unseen in this phase/rel was added.
↑   a dependency in this phase/rel had its version requirement increased.
↓   a dependency in this phase/rel had its version requirement decreased.
-   this phase/rel had a dependency removed
~   a dependency type where either side was a complex version requirement changed in some way.

For instance, this diff would display as:

[ Dependencies::Stats ]
  - configure: +2
  - develop: +12 ↑3 -2 (suggests: +58)
  - runtime: +3
  - test: +1 ↓1 -1 (recommends: +2)

Which is far less scary ☺

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.