From d3e7ad7325629a06ffec12f47482b9da38f63a92 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Mon, 9 Jan 2017 15:13:18 -0800 Subject: [PATCH] add load_suite --- Debbugs/DB/Load.pm | 31 +++++++++++++++++++++++++++++++ bin/debbugs-loadsql | 21 ++++++++++++++++++--- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/Debbugs/DB/Load.pm b/Debbugs/DB/Load.pm index c4b4ab0..4697e62 100644 --- a/Debbugs/DB/Load.pm +++ b/Debbugs/DB/Load.pm @@ -34,6 +34,7 @@ BEGIN{ %EXPORT_TAGS = (load_bug => [qw(load_bug handle_load_bug_queue load_bug_log)], load_debinfo => [qw(load_debinfo)], load_package => [qw(load_package)], + load_suite => [qw(load_suite)], ); @EXPORT_OK = (); Exporter::export_ok_tags(keys %EXPORT_TAGS); @@ -447,6 +448,36 @@ sub load_package { =cut +=head Suites + +=over + +=item load_suite + + load_suite($schema,$codename,$suite,$version,$active); + +=cut + +sub load_suite { + my ($schema,$codename,$suite,$version,$active) = @_; + if (ref($codename)) { + ($codename,$suite,$version) = + @{$codename}{qw(Codename Suite Version)}; + $active = 1; + } + my $s = $schema->resultset('Suite')->find_or_create({codename => $codename}); + $s->suite_name($suite); + $s->version($version); + $s->active($active); + $s->update(); + return $s; + +} + +=back + +=cut + 1; diff --git a/bin/debbugs-loadsql b/bin/debbugs-loadsql index a8839e3..ae267fe 100755 --- a/bin/debbugs-loadsql +++ b/bin/debbugs-loadsql @@ -103,7 +103,7 @@ use Debbugs::Config qw(:config); use Debbugs::Status qw(read_bug split_status_fields); use Debbugs::Log; use Debbugs::DB; -use Debbugs::DB::Load qw(load_bug handle_load_bug_queue :load_package); +use Debbugs::DB::Load qw(load_bug handle_load_bug_queue :load_package :load_suite); use DateTime; use File::stat; use IO::Dir; @@ -149,7 +149,9 @@ my %subcommands = }, 'configuration' => {function => \&add_configuration, }, - 'suites' => {function => \&add_suites, + 'suites' => {function => \&add_suite, + arguments => {'ftpdists=s' => 1, + }, }, 'logs' => {function => \&add_logs, }, @@ -451,7 +453,20 @@ sub add_configuration { sub add_suite { my ($options,$opts,$p,$config,$argv) = @_; # suites - die "add_suite is currently not implemented; modify suites manually using SQL." + + my $s = db_connect($options); + my $dist_dir = IO::Dir->new($opts->{ftpdists}); + my @dist_names = + grep { $_ !~ /^\./ and + -d $opts->{ftpdists}.'/'.$_ and + not -l $opts->{ftpdists}.'/'.$_ + } $dist_dir->read; + while (my $dist = shift @dist_names) { + my $dist_dir = $opts->{ftpdists}.'/'.$dist; + my ($dist_info,$package_files) = + read_release_file($dist_dir.'/Release'); + load_suite($s,$dist_info); + } } sub add_logs { -- 2.39.2