File Coverage

lib/Rex/Pkg/Mageia.pm
Criterion Covered Total %
statement 14 38 36.8
branch 0 8 0.0
condition 0 3 0.0
subroutine 5 9 55.5
pod 0 4 0.0
total 19 62 30.6


line stmt bran cond sub pod time code
1             #
2             # (c) Jan Gehring
3             #
4              
5             package Rex::Pkg::Mageia;
6              
7 1     1   14 use v5.12.5;
  1         3  
8 1     1   4 use warnings;
  1         5  
  1         40  
9              
10             our $VERSION = '1.14.2.2'; # TRIAL VERSION
11              
12 1     1   5 use Rex::Helper::Run;
  1         2  
  1         52  
13 1     1   6 use Rex::Pkg::Base;
  1         8  
  1         5  
14 1     1   23 use base qw(Rex::Pkg::Base);
  1         4  
  1         554  
15              
16             sub new {
17 0     0 0   my $that = shift;
18 0   0       my $proto = ref($that) || $that;
19 0           my $self = $proto->SUPER::new(@_);
20              
21 0           bless( $self, $proto );
22              
23 0 0         if ( Rex::has_feature_version('1.5') ) {
24             $self->{commands} = {
25 0           install => 'urpmi --auto --quiet %s',
26             install_version => 'urpmi --auto --quiet %s',
27             update_system => 'urpmi --auto --quiet --auto-select',
28             dist_update_system => 'urpmi --auto --quiet --auto-select',
29             remove => 'urpme --auto %s',
30             update_package_db => 'urpmi.update -a',
31             };
32             }
33             else {
34             $self->{commands} = {
35 0           install => 'urpmi --auto --quiet %s',
36             install_version => 'urpmi --auto --quiet %s',
37             update_system => 'urpmi --auto --quiet --auto-update',
38             dist_update_system => 'urpmi --auto --quiet --auto-update',
39             remove => 'urpme --auto %s',
40             update_package_db => 'urpmi.update -a',
41             };
42             }
43              
44 0           return $self;
45             }
46              
47             sub get_installed {
48 0     0 0   my ($self) = @_;
49              
50 0           my @lines = i_run
51             'rpm -qa --nosignature --nodigest --qf "%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH}\n"';
52              
53 0           my @pkg;
54              
55 0           for my $line (@lines) {
56 0 0         if ( $line =~ m/^([^\s]+)\s([^\s]+)\s([^\s]+)\s([^\s]+)\s(.*)$/ ) {
57 0           push(
58             @pkg,
59             {
60             name => $1,
61             epoch => $2,
62             version => $3,
63             release => $4,
64             arch => $5,
65             }
66             );
67             }
68             }
69              
70 0           return @pkg;
71             }
72              
73             sub add_repository {
74 0     0 0   my ( $self, %data ) = @_;
75 0           my $name = $data{"name"};
76              
77 0           i_run "urpmi.addmedia $name " . $data{"url"}, fail_ok => 1;
78 0 0         if ( $? != 0 ) {
79 0           die("Error adding repository $name");
80             }
81             }
82              
83             sub rm_repository {
84 0     0 0   my ( $self, $name ) = @_;
85 0           i_run "urpmi.removemedia $name", fail_ok => 1;
86 0 0         if ( $? != 0 ) {
87 0           die("Error removing repository $name");
88             }
89             }
90              
91             1;