Sha256: c94084cfcc01e09c42b93ba2c7e9018bd1443b18a73348fadd430a5af75b89dc

Contents?: true

Size: 1.86 KB

Versions: 13

Compression:

Stored size: 1.86 KB

Contents

require 'facter'
require 'jgrep'

module FacterDB

  def self.database
    @database ||= "[#{Dir.glob("#{File.expand_path(File.join(File.dirname(__FILE__), '../facts'))}/*/*.facts").map { |f| File.read(f) }.join(',')}]\n"
  end

  def self.get_os_facts(facter_version='*', filter=[])
    if facter_version == '*'
      if filter.is_a?(Array)
        filter_str = filter.map { |f| f.map { |k,v | "#{k}=#{v}" }.join(' and ') }.join(' or ')
      elsif filter.is_a?(Hash)
        filter_str = filter.map { |k,v | "#{k}=#{v}" }.join(' and ')
      elsif filter.is_a?(String)
        filter_str = filter
      else
        raise 'filter must be either an Array a Hash or a String'
      end
    else
      if filter.is_a?(Array)
        filter_str = "facterversion=/^#{facter_version}/ and (#{filter.map { |f| f.map { |k,v | "#{k}=#{v}" }.join(' and ') }.join(' or ')})"
      elsif filter.is_a?(Hash)
        filter_str = "facterversion=/^#{facter_version}/ and (#{filter.map { |k,v | "#{k}=#{v}" }.join(' and ')})"
      elsif filter.is_a?(String)
        filter_str = "facterversion=/^#{facter_version}/ and (#{filter})"
      else
        raise 'filter must be either an Array a Hash or a String'
      end
    end

    warn "[DEPRECATION] `get_os_facts` is deprecated. Please use `get_facts(#{filter_str})` instead."

    get_facts(filter_str)
  end

  def self.get_facts(filter=nil)
    if filter.is_a?(Array)
      filter_str = '(' + filter.map { |f| f.map { |k,v | "#{k}=#{v}" }.join(' and ') }.join(') or (') + ')'
    elsif filter.is_a?(Hash)
      filter_str = filter.map { |k,v | "#{k}=#{v}" }.join(' and ')
    elsif filter.is_a?(String)
      filter_str = filter
    elsif filter == nil
      filter_str = ''
    else
      raise 'filter must be either an Array a Hash or a String'
    end
    JGrep.jgrep(database, filter_str).map { |hash| Hash[hash.map{ |k, v| [k.to_sym, v] }] }
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
facterdb-0.3.12 lib/facterdb.rb
facterdb-0.3.11 lib/facterdb.rb
facterdb-0.3.10 lib/facterdb.rb
facterdb-0.3.9 lib/facterdb.rb
facterdb-0.3.8 lib/facterdb.rb
facterdb-0.3.7 lib/facterdb.rb
facterdb-0.3.6 lib/facterdb.rb
facterdb-0.3.5 lib/facterdb.rb
facterdb-0.3.4 lib/facterdb.rb
facterdb-0.3.3 lib/facterdb.rb
facterdb-0.3.2 lib/facterdb.rb
facterdb-0.3.1 lib/facterdb.rb
facterdb-0.3.0 lib/facterdb.rb