macosx.rb Support methods for Apple OSX facts
Copyright (C) 2007 Jeff McCune Author: Jeff McCune
# File lib/facter/util/macosx.rb, line 37 37: def self.hardware_overview 38: profiler_data("SPHardwareDataType") 39: end
# File lib/facter/util/macosx.rb, line 20 20: def self.intern_xml(xml) 21: return nil unless xml 22: Plist::parse_xml(xml) 23: end
# File lib/facter/util/macosx.rb, line 41 41: def self.os_overview 42: profiler_data("SPSoftwareDataType") 43: end
Return an xml result, modified as we need it.
# File lib/facter/util/macosx.rb, line 26 26: def self.profiler_data(data_field) 27: begin 28: return nil unless parsed_xml = intern_xml(profiler_xml(data_field)) 29: return nil unless data = parsed_xml[0]['_items'][0] 30: data.delete '_name' 31: data 32: rescue 33: return nil 34: end 35: end
JJM I’d really like to dynamically generate these methods by looking at the _name key of the _items dict for each _dataType
# File lib/facter/util/macosx.rb, line 16 16: def self.profiler_xml(data_field) 17: Facter::Util::Resolution.exec("/usr/sbin/system_profiler -xml #{data_field}") 18: end
# File lib/facter/util/macosx.rb, line 45 45: def self.sw_vers 46: ver = Hash.new 47: [ "productName", "productVersion", "buildVersion" ].each do |option| 48: ver["macosx_#{option}"] = Facter::Util::Resolution.exec("/usr/bin/sw_vers -#{option}").strip 49: end 50: productversion = ver["macosx_productVersion"] 51: if not productversion.nil? 52: versions = productversion.scan(/(\d+)\.(\d+)\.*(\d*)/)[0] 53: ver["macosx_productversion_major"] = "#{versions[0]}.#{versions[1]}" 54: if versions[2].empty? # 10.x should be treated as 10.x.0 55: versions[2] = "0" 56: end 57: ver["macosx_productversion_minor"] = versions[2] 58: end 59: ver 60: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.