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 Method Summary collapse

Constructor Details

#initialize(cookbook_dir, config) ⇒ ReadmeModel

Returns a new instance of ReadmeModel.



5
6
7
8
9
10
11
12
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
# File 'lib/knife_cookbook_doc/readme_model.rb', line 5

def initialize(cookbook_dir, config)

  @metadata = Chef::Cookbook::Metadata.new
  @metadata.from_file("#{cookbook_dir}/metadata.rb")

  if !@metadata.attributes.empty?
    @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

  @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 Method Details

#attributesObject



135
136
137
# File 'lib/knife_cookbook_doc/readme_model.rb', line 135

def attributes
  @attributes
end

#conflictingObject



125
126
127
128
129
130
131
132
133
# File 'lib/knife_cookbook_doc/readme_model.rb', line 125

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

#cookbook_nameObject



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

def cookbook_name
  @metadata.name
end

#definitionsObject



65
66
67
# File 'lib/knife_cookbook_doc/readme_model.rb', line 65

def definitions
  @definitions
end

#dependenciesObject



99
100
101
102
103
# File 'lib/knife_cookbook_doc/readme_model.rb', line 99

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

#descriptionObject



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

def description
  @metadata.description
end

#fragmentsObject



57
58
59
# File 'lib/knife_cookbook_doc/readme_model.rb', line 57

def fragments
  @fragments
end

#get_bindingObject



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

def get_binding
  binding
end

#issues_urlObject



85
86
87
88
89
90
91
# File 'lib/knife_cookbook_doc/readme_model.rb', line 85

def issues_url
  if @metadata.methods.include? :issues_url
    @metadata.issues_url
  else
    ""
  end
end

#licenseObject



151
152
153
# File 'lib/knife_cookbook_doc/readme_model.rb', line 151

def license
  @metadata.license
end

#maintainerObject



143
144
145
# File 'lib/knife_cookbook_doc/readme_model.rb', line 143

def maintainer
  @metadata.maintainer
end

#maintainer_emailObject



147
148
149
# File 'lib/knife_cookbook_doc/readme_model.rb', line 147

def maintainer_email
  @metadata.maintainer_email
end

#nameObject



155
156
157
# File 'lib/knife_cookbook_doc/readme_model.rb', line 155

def name
  @metadata.name
end

#platformsObject



93
94
95
96
97
# File 'lib/knife_cookbook_doc/readme_model.rb', line 93

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

#recipesObject



139
140
141
# File 'lib/knife_cookbook_doc/readme_model.rb', line 139

def recipes
  @recipes
end

#recommendationsObject



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

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

#resourcesObject



61
62
63
# File 'lib/knife_cookbook_doc/readme_model.rb', line 61

def resources
  @resources
end

#source_urlObject



77
78
79
80
81
82
83
# File 'lib/knife_cookbook_doc/readme_model.rb', line 77

def source_url
  if @metadata.methods.include? :source_url
    @metadata.source_url
  else
    ""
  end
end

#suggestionsObject



115
116
117
118
119
120
121
122
123
# File 'lib/knife_cookbook_doc/readme_model.rb', line 115

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