App-Changelog
view release on metacpan or search on metacpan
lib/App/Changelog.pm view on Meta::CPAN
filter_tag => $args{filter_tag} || '',
conventional => $args{conventional} // 0,
};
bless $self, $class;
return $self;
}
sub generate_changelog {
my ($self) = @_;
say "Generating changelog from Git history...";
my $git_log_format =
$self->{compact} ? '--pretty=format:"%h %s"' : '--pretty=fuller';
if ( $self->{conventional} ) {
$git_log_format = '--pretty=format:"%h %s (%an)"';
}
my $git_log =
$self->_run_git_command("git log $git_log_format --abbrev-commit");
if ( !$git_log ) {
die
"Error: Could not retrieve Git history. Are you in a Git repository?\n";
}
my @tags = $self->_get_tags();
my $changelog_content =
$self->_build_changelog_content( \@tags, $git_log_format );
$self->_write_to_file($changelog_content);
say "Changelog generated successfully in $self->{output_file}.";
}
sub _build_changelog_content {
my ( $self, $tags, $format ) = @_;
my $content = "# Changelog\n\n";
for my $i ( 0 .. $#$tags ) {
my $current_tag = $tags->[$i];
my $previous_tag = $i == $#$tags ? '' : $tags->[ $i + 1 ];
( run in 2.434 seconds using v1.01-cache-2.11-cpan-cdf2f3d4e48 )