fix dynamic generation skip bug
[scpubgit/System-Introspector-Report.git] / lib / System / Introspector / Report / Builder / Packages / Apt / ByHost.pm
CommitLineData
499ebcdd 1package System::Introspector::Report::Builder::Packages::Apt::ByHost;
2use Moo;
3
4extends 'System::Introspector::Report::Builder';
5
576b4278 6has _known_package => (is => 'ro', default => sub { {} });
7has _host_package => (is => 'ro', default => sub { {} });
8has _host_upgrade => (is => 'ro', default => sub { {} });
9has include_uninstalled => (is => 'ro');
499ebcdd 10
11sub required_data {
12 return qw(
13 packages/apt
14 host
15 );
16}
17
18sub _collect_from_data {
19 my ($self, $id, $hostname, $packages, $upgrade, $data) = @_;
20 for my $package (keys %$packages) {
21 $self->_known_package->{$package}++;
22 }
23 $self->_host_package->{$id} = $packages;
24 $self->_host_upgrade->{$id} = $upgrade;
25 return 1;
26}
27
28sub render_reports {
29 my ($self) = @_;
30 my @columns = (
31 { key => 'package', label => 'Package' },
32 { key => 'version', label => 'Version' },
33 { key => 'upgrade', label => 'Upgrade' },
34 );
35 my $host_package = $self->_host_package;
36 my $host_upgrade = $self->_host_upgrade;
37 my @known_packages = sort keys %{$self->_known_package};
576b4278 38 my $inc_uninstalled = $self->include_uninstalled;
499ebcdd 39 return map {
40 my $remote = $_;
41 +{
42 columns => \@columns,
43 title => "Packages on $remote",
44 id => ['packages-apt-by-remote', $remote],
21e7cc98 45 rowid => [qw( package )],
499ebcdd 46 meta => { remote => $remote },
47 rows => [map {
48 my $package = $_;
49 my $version = $host_package->{$remote}{$package}{version};
50 my $upgrade = $self->_clear_upgrade(
51 $host_upgrade->{$remote}{$package},
52 $version,
53 );
54 +{
55 package => $package,
56 defined($version) ? (version => $version) : (),
57 defined($upgrade) ? (upgrade => $upgrade) : (),
58 };
576b4278 59 } grep {
60 $inc_uninstalled
61 ? 1
62 : defined($host_package->{$remote}{$_});
499ebcdd 63 } @known_packages],
64 };
65 } sort keys %{$self->_host_package};
66}
67
68with $_ for qw(
69 System::Introspector::Report::Builder::Packages::Apt::API
70);
71
721;