diff options
author | Colin Guthrie <colin@mageia.org> | 2014-08-06 00:50:11 +0100 |
---|---|---|
committer | Colin Guthrie <colin@mageia.org> | 2014-08-06 00:59:22 +0100 |
commit | 6c2fabf1b1fe0e50a06273f9bf84e9bb9a9cfbdb (patch) | |
tree | e88f14d07477496ca75315b2c2379ecbdf22db31 /lib/MGA/Advisories.pm | |
parent | 1a3496d8090a5bd0a8880c70743396738518a228 (diff) | |
download | mgaadvisories-6c2fabf1b1fe0e50a06273f9bf84e9bb9a9cfbdb.tar mgaadvisories-6c2fabf1b1fe0e50a06273f9bf84e9bb9a9cfbdb.tar.gz mgaadvisories-6c2fabf1b1fe0e50a06273f9bf84e9bb9a9cfbdb.tar.bz2 mgaadvisories-6c2fabf1b1fe0e50a06273f9bf84e9bb9a9cfbdb.tar.xz mgaadvisories-6c2fabf1b1fe0e50a06273f9bf84e9bb9a9cfbdb.zip |
Close bugs automatically when processing advisories
Diffstat (limited to 'lib/MGA/Advisories.pm')
-rw-r--r-- | lib/MGA/Advisories.pm | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/MGA/Advisories.pm b/lib/MGA/Advisories.pm index 62f9bee..7058d3b 100644 --- a/lib/MGA/Advisories.pm +++ b/lib/MGA/Advisories.pm @@ -477,6 +477,39 @@ sub send_adv_mail { } } +sub close_bugs { + my ($advdb) = @_; + return unless $config->{mode} eq 'site'; + + if (!init_bz()) { + report_log("Cannot close advisory bugs. Could not initialise bugzilla"); + return; + } + foreach my $adv (keys %{$advdb->{advisories}}) { + next if $advdb->{advisories}{$adv}{status}{bug_closed}; + + my $bugnum = 0; + if (scalar($advdb->{advisories}{$adv}{references}) > 0) { + ($bugnum) = $advdb->{advisories}{$adv}{references}[0] =~ m/$config->{bugzilla_url}.*=([0-9]+)$/g; + } + if (!$bugnum) { + report_log("Could not extract bug number for $adv"); + next; + } + + my $advurl = $config->{site_url} . '/' . $adv . '.html'; + my $comment = "An update for this issue has been pushed to Mageia Updates repository.\n\n$advurl"; + + if (my $result = call_bz('Bug.update', { ids => [$bugnum], status => 'RESOLVED', resolution => 'FIXED', comment => { body => $comment } })) { + report_log("Bug $bugnum closed for $adv"); + $advdb->{advisories}{$adv}{status}{bug_closed} = time(); + save_status($advdb, $adv); + } else { + report_log("Could not close bug $bugnum for $adv"); + } + } +} + sub send_report { my ($advdb) = @_; return unless @report_logs; |