File Coverage

lib/Rex/Interface/Cache/YAML.pm
Criterion Covered Total %
statement 11 38 28.9
branch 0 10 0.0
condition 0 7 0.0
subroutine 4 8 50.0
pod 0 3 0.0
total 15 66 22.7


line stmt bran cond sub pod time code
1             #
2             # (c) Jan Gehring
3             #
4              
5             package Rex::Interface::Cache::YAML;
6              
7 1     1   15 use v5.12.5;
  1         4  
8 1     1   5 use warnings;
  1         3  
  1         25  
9 1     1   10 use Rex::Interface::Cache::Base;
  1         3  
  1         13  
10 1     1   30 use base qw(Rex::Interface::Cache::Base);
  1         3  
  1         456  
11              
12             our $VERSION = '1.14.2.2'; # TRIAL VERSION
13              
14             require Rex::Commands;
15             require Rex::Commands::Fs;
16             require YAML;
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 0           return $self;
26             }
27              
28             sub save {
29 0     0 0   my ($self) = @_;
30              
31 0   0       my $path = Rex::Commands::get("cache_path") || ".cache";
32              
33 0 0         if ( exists $ENV{REX_CACHE_PATH} ) {
34 0           $path = $ENV{REX_CACHE_PATH};
35             }
36              
37 0 0         if ( !-d $path ) {
38 0     0     Rex::Commands::LOCAL( sub { mkdir $path } );
  0            
39             }
40              
41 0 0         open( my $fh, ">", "$path/" . Rex::Commands::connection->server . ".yml" )
42             or die($!);
43 0           print $fh YAML::Dump( $self->{__data__} );
44 0           close($fh);
45             }
46              
47             sub load {
48 0     0 0   my ($self) = @_;
49              
50 0   0       my $path = Rex::Commands::get("cache_path") || ".cache";
51              
52 0 0         if ( exists $ENV{REX_CACHE_PATH} ) {
53 0           $path = $ENV{REX_CACHE_PATH};
54             }
55              
56 0           my $file_name = "$path/" . Rex::Commands::connection->server . ".yml";
57              
58 0 0         if ( !-f $file_name ) {
59              
60             # no cache found
61 0           return;
62             }
63              
64 0           my $yaml = eval { local ( @ARGV, $/ ) = ($file_name); <>; };
  0            
  0            
65              
66 0           $yaml .= "\n";
67              
68 0           $self->{__data__} = YAML::Load($yaml);
69             }
70              
71             1;