From 868e1119300b434500e1fd8948a86181ec105f58 Mon Sep 17 00:00:00 2001 From: Yanick Champoux Date: Mon, 25 Jul 2022 12:08:20 -0400 Subject: [PATCH] docs for ::Version --- lib/App/Changelord/Command/Version.pm | 33 ++------------------------- lib/App/Changelord/Role/Versions.pm | 2 +- 2 files changed, 3 insertions(+), 32 deletions(-) diff --git a/lib/App/Changelord/Command/Version.pm b/lib/App/Changelord/Command/Version.pm index c616917..af58493 100644 --- a/lib/App/Changelord/Command/Version.pm +++ b/lib/App/Changelord/Command/Version.pm @@ -13,38 +13,9 @@ use YAML::XS; use List::AllUtils qw/ first min /; use Version::Dotted::Semantic; +with 'App::Changelord::Role::Changelog'; with 'App::Changelord::Role::ChangeTypes'; - -has changelog => ( - is => 'lazy' -); - -sub _build_changelog($self){ $self->parent_command->changelog } - -sub latest_version($self){ - first { $_ } grep { $_ ne 'NEXT' } map { eval { $_->{version} } } $self->changelog->{releases}->@*; -} - -sub next_version($self) { - my $version = Version::Dotted::Semantic->new($self->latest_version // '0.0.0'); - - my $upcoming = $self->changelog->{releases}[0]; - - if( $upcoming->{version} and $upcoming->{version} ne 'NEXT') { - $upcoming = { changes => [] }; - } - - my %mapping = map { - my $level = $_->{level}; - map { $_ => $level } $_->{keywords}->@* - } $self->change_types->@*; - - my $bump =min 2, map { $_ eq 'major' ? 0 : $_ eq 'minor' ? 1 : 2 } map { $mapping{$_->{type}} || 'patch' } $upcoming->{changes}->@*; - - $version->bump($bump); - - return $version->normal; -} +with 'App::Changelord::Role::Versions'; sub run($self) { my $param = shift @ARGV; diff --git a/lib/App/Changelord/Role/Versions.pm b/lib/App/Changelord/Role/Versions.pm index b852eeb..889d4a4 100644 --- a/lib/App/Changelord/Role/Versions.pm +++ b/lib/App/Changelord/Role/Versions.pm @@ -12,7 +12,7 @@ use feature 'try'; requires 'changelog'; sub latest_version($self){ - first { $_ } grep { $_ ne 'NEXT' } map { eval { $_->{version} || '' } } $self->changelog->{releases}->@*, 'v0.0.0'; + first { $_ } grep { $_ ne 'NEXT' } map { eval { $_->{version} || '' } } $self->changelog->{releases}->@*, { version => 'v0.0.0' }; } sub next_version($self) {