# class TypeDoc

### Public Class Methods

new() click to toggle source

    # File lib/puppet/application/describe.rb, line 56
    def initialize
      @format = Formatter.new(76)
      @types = {}
      Puppet::Type.loadall
      Puppet::Type.eachtype { |type|
        next if type.name == :component
        @types[type.name] = type
      }
    end

### Public Instance Methods

format_attrs(type, attrs) click to toggle source

List details about attributes

    # File lib/puppet/application/describe.rb, line 122
    def format_attrs(type, attrs)
      docs = {}
      type.allattrs.each do |name|
        kind = type.attrtype(name)
        docs[name] = type.attrclass(name).doc if attrs.include?(kind) && name != :provider
      end

      docs.sort { |a,b|
        a[0].to_s <=> b[0].to_s
      }.each { |name, doc|
        print "\n- **#{name}**"
        if type.key_attributes.include?(name) and name != :name
          puts " (*namevar*)"
        else
          puts ""
        end
        puts @format.wrap(doc, :indent => 4, :scrub => true)
      }
    end

format_providers(type) click to toggle source

    # File lib/puppet/application/describe.rb, line 152
    def format_providers(type)
      type.providers.sort { |a,b|
        a.to_s <=> b.to_s
      }.each { |prov|
        puts "\n- **#{prov}**"
        puts @format.wrap(type.provider(prov).doc, :indent => 4, :scrub => true)
      }
    end

format_type(name, opts) click to toggle source

    # File lib/puppet/application/describe.rb, line 85
    def format_type(name, opts)
      name = name.to_sym
      unless @types.has_key?(name)
        puts "Unknown type #{name}"
        return
      end
      type = @types[name]
      puts @format.header(name.to_s, "=")
      puts @format.wrap(type.doc, :indent => 0, :scrub => true) + "\n\n"

      puts @format.header("Parameters")
      if opts[:parameters]
        format_attrs(type, [:property, :param])
      else
        list_attrs(type, [:property, :param])
      end

      if opts[:meta]
        puts @format.header("Meta Parameters")
        if opts[:parameters]
          format_attrs(type, [:meta])
        else
          list_attrs(type, [:meta])
        end
      end

      if type.providers.size > 0
        puts @format.header("Providers")
        if opts[:providers]
          format_providers(type)
        else
          list_providers(type)
        end
      end
    end

list_attrs(type, attrs) click to toggle source

List the names of attributes

    # File lib/puppet/application/describe.rb, line 143
    def list_attrs(type, attrs)
      params = []
      type.allattrs.each do |name|
        kind = type.attrtype(name)
        params << name.to_s if attrs.include?(kind) && name != :provider
      end
      puts @format.wrap(params.sort.join(", "), :indent => 4)
    end

list_providers(type) click to toggle source

    # File lib/puppet/application/describe.rb, line 161
    def list_providers(type)
      list = type.providers.sort { |a,b|
        a.to_s <=> b.to_s
      }.join(", ")
      puts @format.wrap(list, :indent => 4)
    end

list_types() click to toggle source

    # File lib/puppet/application/describe.rb, line 66
    def list_types
      puts "These are the types known to puppet:\n"
      @types.keys.sort { |a, b|
        a.to_s <=> b.to_s
      }.each do |name|
        type = @types[name]
        s = type.doc.gsub(/\s+/, " ")
        n = s.index(".")
        if n.nil?
          s = ".. no documentation .."
        elsif n > 45
          s = s[0, 45] + " ..."
        else
          s = s[0, n]
        end
        printf "%-15s - %s\n", name, s
      end
    end