%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);
=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;
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;
},
'configuration' => {function => \&add_configuration,
},
- 'suites' => {function => \&add_suites,
+ 'suites' => {function => \&add_suite,
+ arguments => {'ftpdists=s' => 1,
+ },
},
'logs' => {function => \&add_logs,
},
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 {