class KnifeCookbookDoc::ReadmeModel
Constants
- DEFAULT_CONSTRAINT
Attributes
libraries[R]
Public Class Methods
new(cookbook_dir, config)
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 13 def initialize(cookbook_dir, config) @metadata = Chef::Cookbook::Metadata.new @metadata.from_file("#{cookbook_dir}/metadata.rb") if (!@metadata.attributes.empty? rescue false) @attributes = @metadata.attributes.map do |attr, options| name = "node['#{attr.gsub("/", "']['")}']" [name, options['description'], options['default'], options['choice']] end else @attributes = [] Dir["#{cookbook_dir}/attributes/*.rb"].sort.each do |attribute_filename| model = AttributesModel.new(attribute_filename, config) if !model.attributes.empty? @attributes += model.attributes end end end @libraries = Dir["#{cookbook_dir}/libraries/*.rb"].sort.map do |path| LibrariesModel.new(@metadata.name, path) end @resources = [] Dir["#{cookbook_dir}/resources/*.rb"].sort.each do |resource_filename| @resources << ResourceModel.new(@metadata.name, resource_filename) end @definitions = [] Dir["#{cookbook_dir}/definitions/*.rb"].sort.each do |def_filename| @definitions << DefinitionsModel.new(File.basename(def_filename, '.*'), def_filename) end @fragments = {} Dir["#{cookbook_dir}/doc/*.md"].sort.each do |resource_filename| @fragments[::File.basename(resource_filename,'.md')] = IO.read(resource_filename) end @recipes = [] if !@metadata.recipes.empty? @metadata.recipes.each do |name, description| @recipes << RecipeModel.new(name, description, "#{cookbook_dir}/recipes/#{name.gsub(/^.*\:(.*)$/,'\1')}.rb") end else Dir["#{cookbook_dir}/recipes/*.rb"].sort.each do |recipe_filename| base_name = File.basename(recipe_filename, ".rb") if !base_name.start_with?("_") @recipes << RecipeModel.new("#{@metadata.name}::#{base_name}", recipe_filename) end end end @metadata = @metadata @constraints = config[:constraints] end
Public Instance Methods
attributes()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 157 def attributes @attributes end
chef_versions()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 111 def chef_versions if @metadata.methods.include?(:chef_version) @metadata.chef_versions.map do |chef_version, version| format_constraint(chef_version, version) end else [] end end
conflicting()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 147 def conflicting if @metadata.methods.include?(:conflicting) @metadata.conflicting.map do |cookbook, version| format_constraint(cookbook, version) end else [] end end
cookbook_name()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 81 def cookbook_name @metadata.name end
definitions()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 77 def definitions @definitions end
dependencies()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 121 def dependencies @metadata.dependencies.map do |cookbook, version| format_constraint(cookbook, version) end end
description()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 85 def description @metadata.description end
fragments()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 69 def fragments @fragments end
get_binding()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 181 def get_binding binding end
issues_url()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 97 def issues_url if @metadata.methods.include? :issues_url @metadata.issues_url else "" end end
license()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 173 def license @metadata.license end
maintainer()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 165 def maintainer @metadata.maintainer end
maintainer_email()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 169 def maintainer_email @metadata.maintainer_email end
name()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 177 def name @metadata.name end
platforms()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 105 def platforms @metadata.platforms.map do |platform, version| format_constraint(platform, version) end end
recipes()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 161 def recipes @recipes end
recommendations()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 127 def recommendations if @metadata.methods.include?(:recommendations) @metadata.recommendations.map do |cookbook, version| format_constraint(cookbook, version) end else [] end end
resources()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 73 def resources @resources end
source_url()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 89 def source_url if @metadata.methods.include? :source_url @metadata.source_url else "" end end
suggestions()
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 137 def suggestions if @metadata.methods.include?(:suggestions) @metadata.suggestions.map do |cookbook, version| format_constraint(cookbook, version) end else [] end end
Private Instance Methods
format_constraint(name, version)
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 202 def format_constraint(name, version) url = source_url_from_berkshelf(name) if !url.nil? && url.start_with?('http') # git:// and ssh:// URLs are not browsable name = "[#{name}](#{url})" end if @constraints && version != DEFAULT_CONSTRAINT "#{name} (#{version})" else name end end
source_url_from_berkshelf(name)
click to toggle source
# File lib/knife_cookbook_doc/readme_model.rb, line 187 def source_url_from_berkshelf(name) @source_url ||= begin if File.exist?('Berksfile') && defined?(::Berkshelf) ::Berkshelf::Berksfile .from_file('Berksfile') .install .map { |cb| [cb.cookbook_name, cb.metadata.source_url] } .to_h else {} end end @source_url[name] end