Class: KnifeCookbookDoc::ReadmeModel

Inherits:
Object
  • Object
show all
Defined in:
lib/knife_cookbook_doc/readme_model.rb

Constant Summary collapse

DEFAULT_CONSTRAINT =
">= 0.0.0".freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cookbook_dir, config) ⇒ ReadmeModel

Returns a new instance of ReadmeModel.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
59
60
61
62
63
64
65
66
67
# 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}/#{config[:metadata]}")

  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

Instance Attribute Details

#librariesObject (readonly)

Returns the value of attribute libraries.



11
12
13
# File 'lib/knife_cookbook_doc/readme_model.rb', line 11

def libraries
  @libraries
end

Instance Method Details

#attributesObject



158
159
160
# File 'lib/knife_cookbook_doc/readme_model.rb', line 158

def attributes
  @attributes
end

#chef_versionsObject



111
112
113
114
115
116
117
118
119
120
# 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|
      constraints = chef_version.requirements_list.join(', ')
      format_constraint(chef_version.name, constraints)
    end
  else
    []
  end
end

#conflictingObject



148
149
150
151
152
153
154
155
156
# File 'lib/knife_cookbook_doc/readme_model.rb', line 148

def conflicting
  if @metadata.methods.include?(:conflicting)
    @metadata.conflicting.map do |cookbook, version|
      format_constraint(cookbook, version)
    end
  else
    []
  end
end

#cookbook_nameObject



81
82
83
# File 'lib/knife_cookbook_doc/readme_model.rb', line 81

def cookbook_name
  @metadata.name
end

#definitionsObject



77
78
79
# File 'lib/knife_cookbook_doc/readme_model.rb', line 77

def definitions
  @definitions
end

#dependenciesObject



122
123
124
125
126
# File 'lib/knife_cookbook_doc/readme_model.rb', line 122

def dependencies
  @metadata.dependencies.map do |cookbook, version|
    format_constraint(cookbook, version)
  end
end

#descriptionObject



85
86
87
# File 'lib/knife_cookbook_doc/readme_model.rb', line 85

def description
  @metadata.description
end

#fragmentsObject



69
70
71
# File 'lib/knife_cookbook_doc/readme_model.rb', line 69

def fragments
  @fragments
end

#get_bindingObject



182
183
184
# File 'lib/knife_cookbook_doc/readme_model.rb', line 182

def get_binding
  binding
end

#issues_urlObject



97
98
99
100
101
102
103
# 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

#licenseObject



174
175
176
# File 'lib/knife_cookbook_doc/readme_model.rb', line 174

def license
  @metadata.license
end

#maintainerObject



166
167
168
# File 'lib/knife_cookbook_doc/readme_model.rb', line 166

def maintainer
  @metadata.maintainer
end

#maintainer_emailObject



170
171
172
# File 'lib/knife_cookbook_doc/readme_model.rb', line 170

def maintainer_email
  @metadata.maintainer_email
end

#nameObject



178
179
180
# File 'lib/knife_cookbook_doc/readme_model.rb', line 178

def name
  @metadata.name
end

#platformsObject



105
106
107
108
109
# File 'lib/knife_cookbook_doc/readme_model.rb', line 105

def platforms
  @metadata.platforms.map do |platform, version|
    format_constraint(platform, version)
  end
end

#recipesObject



162
163
164
# File 'lib/knife_cookbook_doc/readme_model.rb', line 162

def recipes
  @recipes
end

#recommendationsObject



128
129
130
131
132
133
134
135
136
# File 'lib/knife_cookbook_doc/readme_model.rb', line 128

def recommendations
  if @metadata.methods.include?(:recommendations)
    @metadata.recommendations.map do |cookbook, version|
      format_constraint(cookbook, version)
    end
  else
    []
  end
end

#resourcesObject



73
74
75
# File 'lib/knife_cookbook_doc/readme_model.rb', line 73

def resources
  @resources
end

#source_urlObject



89
90
91
92
93
94
95
# 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

#suggestionsObject



138
139
140
141
142
143
144
145
146
# File 'lib/knife_cookbook_doc/readme_model.rb', line 138

def suggestions
  if @metadata.methods.include?(:suggestions)
    @metadata.suggestions.map do |cookbook, version|
      format_constraint(cookbook, version)
    end
  else
    []
  end
end