-sub addrecipient {
- my %param = validate_width(params => \@_,
- spec => {recipients => {type => HASHREF,
- },
- bug_num => {type => SCALAR,
- regex => qr/^\d*$/,
- default => '',
- },
- reason => {type => SCALAR,
- default => '',
- },
- address => {type => SCALAR|ARRAYREF,
- },
- type => {type => SCALAR,
- default => 'cc',
- regex => qr/^b?cc/i,
- },
- },
- )
- for my $addr (make_list($param{address})) {
- if (lc($param{type}) eq 'bcc' and
- exists $param{recipients}{$addr}{$param{reason}}{$param{bug_num}}
- ) {
- next;
- }
- $param{recipients}{$addr}{$param{reason}}{$param{bug_num}} = $param{type};
- }
-}
-
-sub addmaintainers {
- # Data structure is:
- # maintainer email address &c -> assoc of packages -> assoc of bug#'s
- my %param = validate_with(params => \@_,
- spec => {data => {type => HASHREF,
- },
- recipients => {type => HASHREF,
- },
- }
- );
- my ($p, $addmaint);
- my $anymaintfound=0; my $anymaintnotfound=0;
- for my $p (splitpackages($param{data}{package})) {
- $p =~ y/A-Z/a-z/;
- $p =~ /([a-z0-9.+-]+)/;
- $p = $1;
- next unless defined $p;
- if (defined $config{subscription_domain}) {
- my @source_packages = binarytosource($p);
- if (@source_packages) {
- for my $source (@source_packages) {
- add_recipients(recipients => $param{recipients},
- addrs => "$source\@".$config{subscription_domain},
- type => 'bcc',
- );
- }
- }
- else {
- add_recipients(recipients => $param{recipients},
- addrs => "$p\@".$config{subscription_domain},
- type => 'bcc',
- );
- }
- }
- if (defined $param{data}{severity} and defined $config{strong_list} and
- isstrongseverity($param{data}{severity})) {
- add_recipients(recipients => $param{recipients},
- addrs => "$config{strong_list}\@".$config{list_domain},
- type => 'bcc',
- );
- }
- if (defined(getmaintainers->{$p})) {
- $addmaint= getmaintainers->{$p};
- &transcript("MR|$addmaint|$p|$ref|\n") if $dl>2;
- add_recipients(recipients => $param{recipients},
- addrs => $addmaint,
- reason => $p,
- bug_num => $param{data}{bug_num},
- type => 'cc',
- );
- print "maintainer add >$p|$addmaint<\n" if $debug;
- } else {
- print "maintainer none >$p<\n" if $debug;
- print {$transcript} "Warning: Unknown package '$p'\n";
- &transcript("MR|unknown-package|$p|$ref|\n") if $dl>2;
- add_recipients(recipients => $param{recipients},
- addrs => $config{unknown_maintainer_email},
- reason => $p,
- bug_num => $param{data}{bug_num},
- type => 'cc',
- )
- if defined $config{unknown_maintainer_email} and
- length $config{unknown_maintainer_email};
- }
- }
-
- if (length $param{data}{owner}) {
- $addmaint = $param{data}{owner};
- &transcript("MO|$addmaint|$param{data}{package}|$ref|\n") if $dl>2;
- add_recipients(recipients => $param{recipients},
- addrs => $addmaint,
- reason => $p,
- bug_num => $param{data}{bug_num},
- type => 'cc',
- );
- print "owner add >$param{data}{package}|$addmaint<\n" if $debug;
- }
-}
-