Method: Puppet::ModuleTool::ContentsDescription#data

Defined in:
lib/vendor/puppet/module_tool/contents_description.rb

#dataObject

Return types for this module. Result is an array of hashes, each of which describes a Puppet type. The type description hash structure is:

  • :name => Name of this Puppet type.

  • :doc => Documentation for this type.

  • :properties => Array of hashes representing the type’s properties, each containing :name and :doc.

  • :parameters => Array of hashes representing the type’s parameters, each containing :name and :doc.

  • :providers => Array of hashes representing the types providers, each containing :name and :doc.

TODO Write a TypeDescription to encapsulate these structures and logic?



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
# File 'lib/vendor/puppet/module_tool/contents_description.rb', line 29

def data
  unless @data
    @data = []
    type_names = []
    for module_filename in Dir[File.join(@module_path, "lib/puppet/type/*.rb")]
      require module_filename
      type_name = File.basename(module_filename, ".rb")
      type_names << type_name

      for provider_filename in Dir[File.join(@module_path, "lib/puppet/provider/#{type_name}/*.rb")]
        require provider_filename
      end
    end

    type_names.each do |type_name|
      if type = Puppet::Type.type(type_name.to_sym)
        type_hash = {:name => type_name, :doc => type.doc}
        type_hash[:properties] = attr_doc(type, :property)
        type_hash[:parameters] = attr_doc(type, :param)
        if type.providers.size > 0
          type_hash[:providers] = provider_doc(type)
        end
        @data << type_hash
      else
        Puppet.warning "Could not find/load type: #{type_name}"
      end
    end
  end
  @data
end