Facter::Util::Macosx

macosx.rb Support methods for Apple OSX facts

Copyright (C) 2007 Jeff McCune Author: Jeff McCune

Public Class Methods

hardware_overview() click to toggle source
    # File lib/facter/util/macosx.rb, line 37
37:   def self.hardware_overview
38:     profiler_data("SPHardwareDataType")
39:   end
intern_xml(xml) click to toggle source
    # 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
os_overview() click to toggle source
    # File lib/facter/util/macosx.rb, line 41
41:   def self.os_overview
42:     profiler_data("SPSoftwareDataType")
43:   end
profiler_data(data_field) click to toggle source

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
profiler_xml(data_field) click to toggle source

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
sw_vers() click to toggle source
    # 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.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.