#!/usr/bin/perl -w use strict; use MGA::Advisories; use Template; my %actions = ( list => { run => \&listadv, descr => 'List advisories', usage => < { run => \&mksite, descr => 'Generates the advisories web site', usage => < { run => \&newadv, descr => 'Create a new advisory file', usage => < { run => \&showadv, descr => 'Show an advisory', usage => < { run => \&usage, descr => 'Show usage informations for an action', usage => <{usage}; } else { print STDERR "$0 [action] [options]\n"; print STDERR "$0 usage [action]\n\n"; print STDERR "Available actions:\n"; print STDERR map { " - $_ : $actions{$_}->{descr}\n" } keys %actions; } } sub usageexit { usage(@_); exit 1; } sub mksite { my %advdb; $advdb{advisories} = MGA::Advisories::get_advisories(); MGA::Advisories::publish_advisories(\%advdb); MGA::Advisories::sort_advisories(\%advdb); MGA::Advisories::output_pages(\%advdb); MGA::Advisories::dumpdb(\%advdb); MGA::Advisories::send_adv_mail(\%advdb); MGA::Advisories::send_report_mail(\%advdb); } sub newadv { usageexit('usage', $_[0]) unless @_ == 3; my ($new, $type, $bugnum) = @_; my $file = MGA::Advisories::newadv($type, $bugnum); if ($file) { my $editor = $ENV{EDITOR} || $ENV{VISUAL} || '/usr/bin/editor'; system($editor, $file); } } sub listadv { usageexit('usage', $_[0]) unless @_ == 1; my %advdb; $advdb{advisories} = MGA::Advisories::get_advisories(); MGA::Advisories::listadv(\%advdb); } sub showadv { usageexit('usage', $_[0]) unless @_ == 2; my $adv = $_[1]; my %advdb; $advdb{advisories} = MGA::Advisories::get_advisories(); MGA::Advisories::showadv(\%advdb, $adv); } if (@ARGV == 0 || !$actions{$ARGV[0]}) { usageexit(); } $actions{$ARGV[0]}->{run}->(@ARGV);