1 # This module is part of debbugs, and
2 # is released under the terms of the GPL version 2, or any later
3 # version (at your option). See the file README and COPYING for more
5 # Copyright 2018 by Don Armstrong <don@donarmstrong.com>.
7 package Debbugs::Collection::Package;
11 Debbugs::Collection::Package -- Package generation factory
24 use namespace::autoclean;
25 use Debbugs::Common qw(make_list);
27 use Debbugs::Status qw(get_bug_statuses);
29 extends 'Debbugs::Collection';
31 has '+members' => (isa => 'ArrayRef[Package]');
33 around BUILDARGS => sub {
38 if (@_==1 and ref($_[0]) eq 'HASH') {
43 $args{members} //= [];
44 if (exists $args{packages}) {
45 if (exists $args{schema}) {
46 my $statuses = get_bug_statuses(bug => [make_list($args{bugs})],
47 schema => $args{schema},
49 while (my ($bug, $status) = each %{$statuses}) {
50 push @{$args{members}},
51 Debbugs::Bug->new(bug=>$bug,
53 schema=>$args{schema},
54 @{$args{constructor_args}//[]},
58 for my $bug (make_list($args{bugs})) {
59 push @{$args{members}},
60 Debbugs::Bug->new(bug => $bug,
61 @{$args{constructor_args}//[]},
67 return $class->$orig(%args);
74 __PACKAGE__->meta->make_immutable;
80 # indent-tabs-mode: nil
81 # cperl-indent-level: 4