File Coverage

blib/lib/RPM/Query/Package.pm
Criterion Covered Total %
statement 9 37 24.3
branch 0 16 0.0
condition n/a
subroutine 3 17 17.6
pod 14 14 100.0
total 26 84 30.9


line stmt bran cond sub pod time code
1             package RPM::Query::Package;
2 5     5   32 use strict;
  5         10  
  5         169  
3 5     5   25 use warnings;
  5         10  
  5         145  
4 5     5   40 use base qw{Package::New};
  5         10  
  5         2873  
5              
6             our $VERSION = '0.02';
7              
8             =head1 NAME
9              
10             RPM::Query - Perl object overlay of an RPM package
11              
12             =head1 SYNOPSIS
13              
14             use RPM::Query::Package;
15             my $package = RPM::Query::Package->new(package_name=>'perl-5.16.3-299.el7_9.x86_64');
16             my $name = $rpm->name; #is short name e.g. "perl"
17             my $capabilities = $rpm->requires; #isa list of RPM::Query::Capability
18             foreach my $capability (@$capabilities) {
19             printf "%s - %s\n", $capability->name, $capability->package->package_name;
20             }
21              
22             =head1 DESCRIPTION
23              
24             =head1 METHODS
25              
26             =head2 package_name
27              
28             Returns the the long package name which is the unique package token that rpm uses for this package.
29              
30             =cut
31              
32             sub package_name {
33 0     0 1   my $self = shift;
34 0 0         $self->{'package_name'} = shift if @_;
35 0 0         die("Error: package_name property required") unless $self->{'package_name'};
36 0           return $self->{'package_name'};
37             }
38              
39             =head2 requires
40              
41             Returns a list of L objects that the package requires
42              
43             =cut
44              
45             sub requires {
46 0     0 1   my $self = shift;
47 0 0         $self->{'requires'} = $self->parent->requires($self->package_name) unless $self->{'requires'};
48 0           return $self->{'requires'};
49             }
50              
51             =head2 provides
52              
53             Returns a list of L objects that the package provides
54              
55             =cut
56              
57             sub provides {
58 0     0 1   my $self = shift;
59 0 0         $self->{'provides'} = $self->parent->provides($self->package_name) unless $self->{'provides'};
60 0           return $self->{'provides'};
61             }
62              
63             =head2 verify
64              
65             Returns a Boolean value on whether or not the installed RPM passes the verify command.
66              
67             =cut
68              
69             sub verify {
70 0     0 1   my $self = shift;
71 0 0         $self->{'verify'} = $self->parent->verify($self->package_name) unless $self->{'verify'};
72 0           return $self->{'verify'};
73             }
74              
75             =head2 details
76              
77             Returns select rpm tags as a hash reference where the key is a lower case tag.
78              
79             Note: Not all tags are supported.
80              
81             =cut
82              
83             sub details {
84 0     0 1   my $self = shift;
85 0 0         $self->{'details'} = $self->parent->details($self->package_name) unless $self->{'details'};
86 0           return $self->{'details'};
87             }
88              
89             =head2 name
90              
91             Returns the short package name
92              
93             =cut
94              
95 0     0 1   sub name {shift->details->{'name'}};
96              
97             =head2 description
98              
99             Returns the package description (multiline)
100              
101             =cut
102              
103 0     0 1   sub description {shift->details->{'description'}};
104              
105             =head2 summary
106              
107             =cut
108              
109 0     0 1   sub summary {shift->details->{'summary'}};
110              
111             =head2 url
112              
113             =cut
114              
115 0     0 1   sub url {shift->details->{'url'}};
116              
117             =head2 version
118              
119             =cut
120              
121 0     0 1   sub version {shift->details->{'version'}};
122              
123             =head2 sourcerpm
124              
125             =cut
126              
127 0     0 1   sub sourcerpm {shift->details->{'sourcerpm'}};
128              
129             =head2 license
130              
131             =cut
132              
133 0     0 1   sub license {shift->details->{'license'}};
134              
135             =head2 sigmd5
136              
137             =cut
138              
139 0     0 1   sub sigmd5 {shift->details->{'sigmd5'}};
140              
141             =head1 ACCESSORS
142              
143             =head2 parent
144              
145             =cut
146              
147             sub parent {
148 0     0 1   my $self = shift;
149 0 0         $self->{'parent'} = shift if @_;
150 0 0         $self->{'parent'} = RPM::Query->new unless $self->{'parent'};
151 0           return $self->{'parent'};
152             }
153              
154             =head1 SEE ALSO
155              
156             =head1 AUTHOR
157              
158             Michael R. Davis
159              
160             =head1 COPYRIGHT AND LICENSE
161              
162             MIT License
163              
164             Copyright (c) 2023 Michael R. Davis
165              
166             =cut
167              
168             1;