-
Notifications
You must be signed in to change notification settings - Fork 244
/
Copy pathcontext.pm
89 lines (76 loc) · 2.5 KB
/
context.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/usr/bin/env perl
# Copyright (c) MediaTek USA Inc., 2024
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or (at
# your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see
# <http://www.gnu.org/licenses/>.
#
# context
#
# This script is used as a lcov/geninfo/genhtml "--context-script context" callback.
# It is called at the end of tool execution to collect and store data which
# might be useful for infrastructure debugging and/or tracking.
#
# The result is a hash of key/value pairs - see man genhtml(1) for more
# details.
#
# You may want to collect and entirely different set of data.
# You can also add operations to the constructor to do something earlier in
# processing - e.g., to write data to some other files(s), etc.
package context;
use strict;
use Getopt::Long qw(GetOptionsFromArray);
use lcovutil;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(new);
sub new
{
my $class = shift;
my $script = shift;
my $standalone = $script eq $0;
my @options = @_;
my $comment;
if (!GetOptionsFromArray(\@_, ('comment' => \$comment)) ||
(!$standalone && @_)) {
print(STDERR "Error: unexpected option:\n " .
join(' ', @options) . "\nusage: [--comment]\n");
exit(1) if $standalone;
return undef;
}
my $self = [$script];
$self = bless $self, $class;
if ($comment) {
# 'genhtml' and certain 'lcov' modes do not write a '.info' file
# so the comments won't go anywhere
my $data = $self->context();
foreach my $key (sort keys %$data) {
push(@lcovutil::comments, $key . ': ' . $data->{$key});
}
}
return $self;
}
sub context
{
my $self = shift;
my %data;
$data{user} = `whoami`;
$data{perl_version} = $^V->{original};
$data{perl} = `which perl`;
$data{PERL5LIB} = $ENV{PERL5LIB}
if exists($ENV{PERL5LIB});
foreach my $k (keys %data) {
chomp($data{$k});
}
return \%data;
}
1;