aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/MGA/Advisories.pm30
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/MGA/Advisories.pm b/lib/MGA/Advisories.pm
index ac0aa9e..d408dc3 100644
--- a/lib/MGA/Advisories.pm
+++ b/lib/MGA/Advisories.pm
@@ -143,6 +143,36 @@ sub download_advisories {
close $fh;
}
+sub move_packages {
+ my ($advdb) = @_;
+ return unless $config->{mode} eq 'site';
+ return unless $config->{move_pkg_cmd};
+ my @cmd = (
+ $config->{move_pkg_cmd},
+ '--sync',
+ '--no-confirm'
+ );
+ foreach my $adv (keys %{$advdb->{advisories}}) {
+ next if $advdb->{advisories}{$adv}{status}{moved};
+ foreach my $rel (keys %{$advdb->{advisories}{$adv}{src}}) {
+ foreach my $media (keys %{$advdb->{advisories}{$adv}{src}{$rel}}) {
+ foreach my $srpm (@{$advdb->{advisories}{$adv}{src}{$rel}{$media}}) {
+ push(@cmd, "$rel/$media/$srpm.src.rpm");
+ }
+ }
+ }
+ }
+
+ return if scalar(@cmd) < 4;
+ report_exit("Could not move packages") if (0 != system(@cmd));
+
+ foreach my $adv (keys %{$advdb->{advisories}}) {
+ next if $advdb->{advisories}{$adv}{status}{moved};
+ $advdb->{advisories}{$adv}{status}{moved} = time();
+ save_status($advdb, $adv);
+ }
+}
+
sub publish_advisories {
my ($advdb) = @_;
foreach my $adv (sort keys %{$advdb->{advisories}}) {