]> git.donarmstrong.com Git - debbugs.git/commitdiff
add load_suite
authorDon Armstrong <don@donarmstrong.com>
Mon, 9 Jan 2017 23:13:18 +0000 (15:13 -0800)
committerDon Armstrong <don@donarmstrong.com>
Mon, 9 Jan 2017 23:14:02 +0000 (15:14 -0800)
Debbugs/DB/Load.pm
bin/debbugs-loadsql

index c4b4ab01e6c1a8ef7d2e3ab400e34594707cdcc0..4697e62fef7dd9862cfa4fada809262fed1508e2 100644 (file)
@@ -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;
 
 
index a8839e35e793c8afe8f7fa0d7a4d91e09daf648d..ae267fe83393782d412e0709411358f130a7b0b3 100755 (executable)
@@ -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 {