File Coverage

lib/Rex/Report/YAML.pm
Criterion Covered Total %
statement 42 44 95.4
branch 9 14 64.2
condition 2 5 40.0
subroutine 10 10 100.0
pod 0 3 0.0
total 63 76 82.8


line stmt bran cond sub pod time code
1             #
2             # (c) Jan Gehring
3             #
4              
5             package Rex::Report::YAML;
6              
7 2     2   28 use v5.12.5;
  2         10  
8 2     2   11 use warnings;
  2         11  
  2         79  
9              
10             our $VERSION = '1.14.3'; # VERSION
11              
12 2     2   10 use Rex;
  2         4  
  2         10  
13 2     2   13 use Data::Dumper;
  2         4  
  2         104  
14 2     2   17 use Rex::Report::Base;
  2         7  
  2         33  
15             require Rex::Commands;
16 2     2   96 use YAML;
  2         7  
  2         123  
17 2     2   22 use base qw(Rex::Report::Base);
  2         7  
  2         1037  
18              
19             our $REPORT_PATH = "./reports";
20              
21             my $report_name_generator = sub {
22             my $str = time();
23             return $str;
24             };
25              
26             sub set_report_name {
27 1     1 0 32 my ( $class, $code ) = @_;
28              
29 1 50       11 if ( ref $class eq "CODE" ) {
30 0         0 $code = $class;
31             }
32              
33 1 50       12 if ( ref $code ne "CODE" ) {
34 0         0 die "Rex::Report::YAML->set_report_name(\$code_ref) wrong arguments.";
35             }
36              
37 1         19 $report_name_generator = $code;
38             }
39              
40             sub new {
41 1     1 0 3 my $that = shift;
42 1   33     11 my $proto = ref($that) || $that;
43 1         17 my $self = $proto->SUPER::new(@_);
44              
45 1         3 bless( $self, $proto );
46              
47 1         3 return $self;
48             }
49              
50             sub write_report {
51 2     2 0 8 my ($self) = @_;
52              
53 2   50     35 $REPORT_PATH = Rex::Commands::get('report_path') || "reports";
54              
55 2 100       52 if ( !-d $REPORT_PATH ) {
56 1 50       110 mkdir $REPORT_PATH or die( $! . ": $REPORT_PATH" );
57             }
58              
59 2         13 my $server_name = Rex::Commands::connection()->server;
60 2 50       20 if ( $server_name eq "" ) {
61 2         8 $server_name = "_local_";
62             }
63 2 100       46 if ( !-d $REPORT_PATH . "/" . $server_name ) {
64 1         53 mkdir "$REPORT_PATH/$server_name";
65             }
66             open(
67 2 50       38 my $fh,
68             ">",
69             "$REPORT_PATH/$server_name/"
70             . $report_name_generator->($server_name) . ".yml"
71             ) or die($!);
72 2         211 print $fh Dump( $self->{__reports__} );
73 2         14787 close($fh);
74              
75 2         26 $self->{__reports__} = {};
76             }
77              
78             # $self->report({
79             # command => $export,
80             # module => "Rex::Commands::$mod",
81             # start_time => $start_time,
82             # end_time => time,
83             # data => [ @_ ],
84             # success => 1,
85             # changed => 1,
86             # message => "",
87              
88             1;