File Coverage

lib/Rex/Pkg/ALT.pm
Criterion Covered Total %
statement 20 44 45.4
branch 0 4 0.0
condition 0 5 0.0
subroutine 7 11 63.6
pod 0 4 0.0
total 27 68 39.7


line stmt bran cond sub pod time code
1             #
2             # Work with ALT Linux APT-RPM package management system
3             #
4              
5             package Rex::Pkg::ALT;
6              
7 1     1   15 use v5.12.5;
  1         4  
8 1     1   6 use warnings;
  1         1  
  1         41  
9              
10             our $VERSION = '1.14.2.2'; # TRIAL VERSION
11              
12 1     1   6 use Rex::Helper::Run;
  1         2  
  1         51  
13 1     1   10 use Rex::Commands::File;
  1         2  
  1         15  
14 1     1   6 use Rex::Commands::Fs;
  1         2  
  1         6  
15 1     1   8 use Rex::Pkg::Base;
  1         3  
  1         9  
16 1     1   24 use base qw(Rex::Pkg::Base);
  1         3  
  1         541  
17              
18             sub new {
19 0     0 0   my $that = shift;
20 0   0       my $proto = ref($that) || $that;
21 0           my $self = $proto->SUPER::new(@_);
22              
23 0           bless( $self, $proto );
24              
25             $self->{commands} = {
26 0           install => '/usr/bin/apt-get -y install %s',
27             install_version => '/usr/bin/apt-get -y install %s-%s',
28             remove => '/usr/bin/apt-get -y remove %s',
29             update_package_db => '/usr/bin/apt-get update',
30             };
31              
32 0           return $self;
33             }
34              
35             sub get_installed {
36 0     0 0   my ($self) = @_;
37              
38 0           my @lines = i_run
39             '/usr/bin/rpm -qa --nodigest --qf "%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH}\n"';
40              
41 0           my @pkg;
42              
43 0           for my $line (@lines) {
44 0 0         if ( $line =~ m/^([^\s]+)\s([^\s]+)\s([^\s]+)\s([^\s]+)\s(.*)$/ ) {
45 0           push(
46             @pkg,
47             {
48             name => $1,
49             epoch => $2,
50             version => $3,
51             release => $4,
52             arch => $5,
53             }
54             );
55             }
56             }
57              
58 0           return @pkg;
59             }
60              
61             sub add_repository {
62 0     0 0   my ( $self, %data ) = @_;
63 0           my $name = $data{"name"};
64 0   0       my $sign = $data{"sign_key"} || "";
65 0           my @arch = split( /, */, $data{"arch"} );
66              
67 0           my $fh = file_write "/etc/apt/sources.list.d/$name.list";
68 0           $fh->write("# This file is managed by Rex\n");
69              
70 0           foreach (@arch) {
71             $fh->write( "rpm "
72             . ( $sign ? "[" . $sign . "] " : "" )
73             . $data{"url"} . " "
74             . $_ . " "
75 0 0         . $data{"repository"}
76             . "\n" );
77             }
78 0           $fh->close;
79             }
80              
81             sub rm_repository {
82 0     0 0   my ( $self, $name ) = @_;
83 0           unlink "/etc/apt/sources.list.d/$name.list";
84             }
85              
86             1;