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