summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGianni Ceccarelli <gianni.ceccarelli@net-a-porter.com>2013-03-19 13:02:01 +0000
committerGianni Ceccarelli <gianni.ceccarelli@net-a-porter.com>2013-03-19 13:02:01 +0000
commit7a3a9426aedba2ea48382f072210f56d0f98d2df (patch)
tree19ceeb04326ace18929ee509acc2823b4b089188
parentminimal working version (diff)
downloadmetacpan-diff-feed-7a3a9426aedba2ea48382f072210f56d0f98d2df.tar.gz
metacpan-diff-feed-7a3a9426aedba2ea48382f072210f56d0f98d2df.tar.bz2
metacpan-diff-feed-7a3a9426aedba2ea48382f072210f56d0f98d2df.zip
handle missing changelogs in prev release
-rw-r--r--meta.pl74
1 files 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;