From 7a3a9426aedba2ea48382f072210f56d0f98d2df Mon Sep 17 00:00:00 2001 From: Gianni Ceccarelli Date: Tue, 19 Mar 2013 13:02:01 +0000 Subject: handle missing changelogs in prev release --- meta.pl | 74 +++++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/meta.pl b/meta.pl index 81c76d3..b039c3f 100644 --- a/meta.pl +++ b/meta.pl @@ -39,38 +39,6 @@ sub get_changelog_diff { my $release_name = $release->{name}; my $release_author = $release->{author}; my $release_date = $release->{date}; - my $prev_release = $api->post( - 'release/_search', - { - size => 1, - from => 0, - query => { - filtered => { - query => { - range => { date => { - to => $release_date, - include_upper => 0, - } }, - }, - filter => { - and => [ { - term => { - 'release.distribution' => $dist_name, - }, - } ] - } - } - }, - sort => [ { date => 'desc' } ], - fields => [qw(name author)], - }, - ); - ($prev_release)=@{$prev_release->{hits}{hits}}; - - return if !$prev_release; - - my $prev_release_name = $prev_release->{fields}{name}; - my $prev_release_author = $prev_release->{fields}{author}; my $files = $api->post( 'file/_search', { @@ -101,15 +69,53 @@ sub get_changelog_diff { /^change(s|log)$/i } map { $_->{fields}{name} } @{$files->{hits}{hits}}; - return unless $changelog_name; + return 'no changelog file' unless $changelog_name; + my $this_changelog = $api->ua->get( join '/',$api->base_url,'source', $release_author,$release_name,$changelog_name )->{content}; + + my $prev_release = $api->post( + 'release/_search', + { + size => 1, + from => 0, + query => { + filtered => { + query => { + range => { date => { + to => $release_date, + include_upper => 0, + } }, + }, + filter => { + and => [ { + term => { + 'release.distribution' => $dist_name, + }, + } ] + } + } + }, + sort => [ { date => 'desc' } ], + fields => [qw(name author)], + }, + ); + ($prev_release)=@{$prev_release->{hits}{hits}}; + + return $this_changelog if !$prev_release; + + my $prev_release_name = $prev_release->{fields}{name}; + my $prev_release_author = $prev_release->{fields}{author}; + my $prev_changelog = $api->ua->get( join '/',$api->base_url,'source', $prev_release_author,$prev_release_name,$changelog_name - )->{content}; + ); + + return $this_changelog unless $prev_changelog->{success}; + $prev_changelog=$prev_changelog->{content}; my $diff = diff \$prev_changelog,\$this_changelog; -- cgit v1.2.3