/usr/local/CPAN/Ocsinventory-Agent/Ocsinventory/Agent/Backend/OS/MacOS/Video.pm
package Ocsinventory::Agent::Backend::OS::MacOS::Video;
use strict;
use constant DATATYPE => 'SPDisplaysDataType'; # careful this could change when looking at lower versions of OSX
sub check {
# make sure the user has access, cause that's the command that's gonna be run
return(undef) unless -r '/usr/sbin/system_profiler';
return(undef) unless can_load("Mac::SysProfile");
return 1;
}
sub run {
my $params = shift;
my $inventory = $params->{inventory};
# run the profiler to get our datatype
my $pro = Mac::SysProfile->new();
my $h = $pro->gettype(DATATYPE());
# unless we get a valid return, bail out
return(undef) unless(ref($h) eq 'HASH');
# add the video information
foreach my $x (keys %$h){
my $memory = $h->{$x}->{'VRAM (Total)'};
$memory =~ s/ MB$//;
$inventory->addVideo({
'NAME' => $x,
'CHIPSET' => $h->{$x}->{'Chipset Model'},
'MEMORY' => $memory,
});
# this doesn't work yet, need to fix the Mac::SysProfile module to not be such a hack (parser only goes down one level)
# when we do fix it, it will attach the displays that sysprofiler shows in a tree form
# apple "xml" blows. Hard.
foreach my $display (keys %{$h->{$x}}){
my $ref = $h->{$x}->{$display};
next unless(ref($ref) eq 'HASH');
$inventory->addMonitor({
'CAPTION' => $ref->{'Resolution'},
'DESCRIPTION' => $display,
})
}
}
}
1;