From 62e6180b53eff8075f9c2dd8b359e972e190bc91 Mon Sep 17 00:00:00 2001 From: Colin Guthrie Date: Mon, 24 Nov 2014 19:36:52 +0000 Subject: Add a 'publishall' option to attempt to publish all pending advisories. --- NEWS | 1 + lib/MGA/Advisories.pm | 24 ++++++++++++++++++++++++ mgaadv | 14 ++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/NEWS b/NEWS index 303066a..3bd5e7e 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,4 @@ +- add publishall option to process all pending advisories - fix bugnum regexp for '12345.mga4' type advisory names - add check to highlight that the first reference must be the MGA advisory bug diff --git a/lib/MGA/Advisories.pm b/lib/MGA/Advisories.pm index 63b6953..3c9e147 100644 --- a/lib/MGA/Advisories.pm +++ b/lib/MGA/Advisories.pm @@ -144,6 +144,7 @@ sub get_advisories_from_dir { my $adv = LoadFile($advfile); if (!$adv->{ID}) { next unless $config->{mode} eq 'qa'; + $adv->{ref} = basename($advfile, ".adv"); $adv->{ID} = next_id('TODO', keys %advisories); $adv->{no_save_status} = 1; } @@ -357,6 +358,29 @@ sub assign_id { } } +sub assign_ids { + # Ensure users local repo is up to date + my $exitstatus = system("svn up"); + if ( 0 != $exitstatus ) { + print STDERR "Subversion update appears to have failed.\n"; + return; + } + + my %advdb; + $advdb{advisories} = get_advisories_from_dir(); + sort_advisories(\%advdb); + output_pages(); + + # We will have exited by now in the event of e.g. a Yaml or processing error + + foreach my $advfile (glob "$config->{advisories_dir}/*.adv") { + my $adv = LoadFile($advfile); + next if ($adv->{ID}); + assign_id(basename($advfile, ".adv")); + print "\n"; + } +} + sub advdb_dumpfile { $config->{advdb_dumpfile} || $ENV{HOME} . '/.mga-advisories/advisories.yaml'; } diff --git a/mgaadv b/mgaadv index 0a4df25..1840c2d 100755 --- a/mgaadv +++ b/mgaadv @@ -91,6 +91,15 @@ END $0 publish [bugnum] Assign a new ID to an advisory file. +END + }, + 'publish-all' => { + run => \&publishall, + descr => 'Publish all pending advisories', + usage => < { @@ -189,6 +198,11 @@ sub publish { MGA::Advisories::assign_id($_[1]); } +sub publishall { + usageexit('usage', $_[0]) unless @_ == 1; + MGA::Advisories::assign_ids(); +} + sub listadv { shift; my %advdb; -- cgit v1.2.1