diff options
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | lib/MGA/Advisories.pm | 24 | ||||
-rwxr-xr-x | mgaadv | 14 |
3 files changed, 39 insertions, 0 deletions
@@ -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'; } @@ -93,6 +93,15 @@ $0 publish [bugnum] Assign a new ID to an advisory file. END }, + 'publish-all' => { + run => \&publishall, + descr => 'Publish all pending advisories', + usage => <<END +$0 publish-all + +Assign a new ID to all pending, validated advisories (subject to cross checks). +END + }, show => { run => \&showadv, descr => 'Show an advisory', @@ -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; |