knife-cookbook-doc 0.25.2 → 0.30.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 37887ab7ebaf12a054d994a6901d24d9e5783685
4
- data.tar.gz: ed7ff7f97bc54ca4eaa390610632f8f1caedbdc0
2
+ SHA256:
3
+ metadata.gz: d4b4645d7d5c912ee0727e526541469198e048c75792d308624039278329a729
4
+ data.tar.gz: 60ba6053bb465d1e50cca894de9ff772a6e0ab180b78800c738bd9e67136c142
5
5
  SHA512:
6
- metadata.gz: 641fea042b4c32c4ab37ce6c17074e6d697fa9c0bf2c0d776b11a349c34b327a18501a67e4bc809e7f149f437609e01569826d5ebbdd24cf7b12f95034d691ee
7
- data.tar.gz: abd0276748d694e383a32bcf3ad8bc9ba500fe3f173a474a52017ca053c97bb70c68e064de7a9be470048d54a5bb049ded17571cfad467daf1d23e1ec26e6bd8
6
+ metadata.gz: a31986554dce09246b247c9c50a10d720f8025a02eb059fea3b4d8dc3deb7f64dc10a70488eb37fd2e57d56d7518a2d3516d469682c54d04949912a34a0f2d5d
7
+ data.tar.gz: f91942855366f6cb84292754909217b881d9292d5e3c3843062aebba7865507b6e3da3a266afb9b73778ff8ede007e4c53b54921cf63db78fd9bdae28f50d20e
@@ -35,7 +35,9 @@ Reproduction repository:
35
35
 
36
36
  <!--
37
37
  If possible, please create a repository that reproduces the issue with the
38
- minimal amount of code possible.
38
+ minimal amount of code possible. It is highly recommended you take the time
39
+ to read "How to create a Minimal, Complete, and Verifiable example" at
40
+ https://stackoverflow.com/help/mcve
39
41
  -->
40
42
 
41
43
  Problem description:
data/.gitignore CHANGED
@@ -1,4 +1,6 @@
1
1
  /Gemfile.lock
2
+ /*.gem
3
+ /fixture/README-generated.md
2
4
 
3
5
  # Intermediate package dir
4
6
  /pkg
data/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ # v0.30.0 (Mar 19 2021)
2
+
3
+ * Support a space after # in custom resource. Submitted by Tomoya Kabe.
4
+
5
+ # v0.29.0 (Jun 26 2020)
6
+
7
+ * Extract descriptions from `libraries/*.rb`. Submitted by Joe Nuspl.
8
+
9
+ # v0.28.0 (Jun 11 2020)
10
+
11
+ * If `Berksfile` exists, add source_url links to cookbooks. Submitted by Joe Nuspl.
12
+
13
+ # v0.27.0 (Jun 20 2019)
14
+
15
+ * Add support for Chef 15. Submitted by grozan.
16
+
17
+ # v0.26.0 (Mar 4 2019)
18
+
19
+ * Display `lazy` defaults as such. Submitted by Joe Nuspl.
20
+
1
21
  # v0.25.2 (Dec 18 2018)
2
22
 
3
23
  * Re-release gem with the appropriate version.
data/Rakefile CHANGED
@@ -4,3 +4,12 @@ require 'rake/clean'
4
4
  task :default => :build
5
5
 
6
6
  CLEAN.include 'pkg'
7
+
8
+ task :test => :install
9
+ task :test do
10
+ sh <<SCRIPT
11
+ cd fixture
12
+ knife cookbook doc . -o README-generated.md -c knife.rb
13
+ diff -u README-expected.md README-generated.md && rm README-generated.md
14
+ SCRIPT
15
+ end
@@ -36,6 +36,7 @@ MyApp Admin Group: The group allowed to manage MyApp.
36
36
  # Resources
37
37
 
38
38
  * [fixture](#fixture) - This resource is awesome.
39
+ * [fixture_space](#fixture_space) - This resource is spacial.
39
40
 
40
41
  ## fixture
41
42
 
@@ -50,6 +51,24 @@ This resource is awesome.
50
51
  - my_attribute: This is an attribute. Defaults to <code>"a default value"</code>.
51
52
  - my_property: This is a property. Defaults to <code>"another default value"</code>.
52
53
 
54
+ ## fixture_space
55
+
56
+ This resource is spacial.
57
+
58
+ ### Actions
59
+
60
+ - stuff: Inserts spaces. Default action.
61
+
62
+ ### Attribute Parameters
63
+
64
+ - my_attribute: This is an attribute. Defaults to <code>"a default value"</code>.
65
+ - my_property: This is a property. Defaults to <code>"another default value"</code>.
66
+
67
+ # Libraries
68
+
69
+ ## stooges()
70
+ Returns `['Moe', 'Larry', 'Curly']`
71
+
53
72
  # Credits
54
73
 
55
74
  * Mathias Lafeldt
@@ -0,0 +1,7 @@
1
+ # <
2
+ # ## stooges()
3
+ # Returns `['Moe', 'Larry', 'Curly']`
4
+ # >
5
+ def stooges
6
+ %w(Moe Larry Curly)
7
+ end
@@ -0,0 +1,13 @@
1
+ # <
2
+ # This resource is spacial.
3
+ #
4
+ # @action stuff Inserts spaces.
5
+ # >
6
+
7
+ default_action :stuff
8
+
9
+ # <> @attribute my_attribute This is an attribute.
10
+ attribute :my_attribute, default: 'a default value'
11
+
12
+ # <> @property my_property This is a property.
13
+ property :my_property, default: 'another default value'
@@ -147,7 +147,7 @@
147
147
  ### Attribute Parameters
148
148
 
149
149
  <% resource.attributes.each do |attribute| -%>
150
- - <%= attribute %>: <%= resource.attribute_description(attribute) %><% if resource.attribute_has_default_value?(attribute) %> Defaults to <code><%= resource.attribute_default_value(attribute).inspect %></code>.<% end %>
150
+ - <%= attribute %>: <%= resource.attribute_description(attribute) %><% if resource.attribute_has_default_value?(attribute) %> Defaults to <code><%= resource.attribute_default_value(attribute) %></code>.<% end %>
151
151
  <% end -%>
152
152
  <% end -%>
153
153
  <% resource.top_level_descriptions.keys.select{|k| k != 'main'}.each do |key| -%>
@@ -157,6 +157,13 @@
157
157
  <%= resource.top_level_description(key) -%>
158
158
  <% end -%>
159
159
 
160
+ <% end -%>
161
+ <% end -%>
162
+ <% unless libraries.empty? -%>
163
+ # Libraries
164
+ <% libraries.each do |lib| -%>
165
+
166
+ <%= lib.descriptions %>
160
167
  <% end -%>
161
168
  <% end -%>
162
169
  <% fragments.keys.select {|k|k != 'overview' && k != 'credit' && k != 'requirements'}.each do |key| -%>
@@ -9,6 +9,7 @@ module KnifeCookbookDoc
9
9
  require 'knife_cookbook_doc/base_model'
10
10
  require 'knife_cookbook_doc/documenting_lwrp_base'
11
11
  require 'knife_cookbook_doc/definitions_model'
12
+ require 'knife_cookbook_doc/libraries_model'
12
13
  require 'knife_cookbook_doc/readme_model'
13
14
  require 'knife_cookbook_doc/recipe_model'
14
15
  require 'knife_cookbook_doc/resource_model'
@@ -0,0 +1,13 @@
1
+ module KnifeCookbookDoc
2
+ class LibrariesModel
3
+ include KnifeCookbookDoc::BaseModel
4
+
5
+ attr_reader :descriptions
6
+
7
+ def initialize(name, filename)
8
+ @name = name
9
+ @filename = filename
10
+ @descriptions = extract_description
11
+ end
12
+ end
13
+ end
@@ -6,6 +6,7 @@ require 'rake/tasklib'
6
6
  require 'knife_cookbook_doc/base_model'
7
7
  require 'knife_cookbook_doc/documenting_lwrp_base'
8
8
  require 'knife_cookbook_doc/definitions_model'
9
+ require 'knife_cookbook_doc/libraries_model'
9
10
  require 'knife_cookbook_doc/readme_model'
10
11
  require 'knife_cookbook_doc/recipe_model'
11
12
  require 'knife_cookbook_doc/resource_model'
@@ -1,13 +1,21 @@
1
+ begin
2
+ require 'berkshelf'
3
+ rescue LoadError
4
+ # won't be able to get :source_url for dependent cookbooks
5
+ end
6
+
1
7
  module KnifeCookbookDoc
2
8
  class ReadmeModel
3
9
  DEFAULT_CONSTRAINT = ">= 0.0.0".freeze
4
10
 
11
+ attr_reader :libraries
12
+
5
13
  def initialize(cookbook_dir, config)
6
14
 
7
15
  @metadata = Chef::Cookbook::Metadata.new
8
16
  @metadata.from_file("#{cookbook_dir}/metadata.rb")
9
17
 
10
- if !@metadata.attributes.empty?
18
+ if (!@metadata.attributes.empty? rescue false)
11
19
  @attributes = @metadata.attributes.map do |attr, options|
12
20
  name = "node['#{attr.gsub("/", "']['")}']"
13
21
  [name, options['description'], options['default'], options['choice']]
@@ -22,6 +30,10 @@ module KnifeCookbookDoc
22
30
  end
23
31
  end
24
32
 
33
+ @libraries = Dir["#{cookbook_dir}/libraries/*.rb"].sort.map do |path|
34
+ LibrariesModel.new(@metadata.name, path)
35
+ end
36
+
25
37
  @resources = []
26
38
  Dir["#{cookbook_dir}/resources/*.rb"].sort.each do |resource_filename|
27
39
  @resources << ResourceModel.new(@metadata.name, resource_filename)
@@ -172,7 +184,28 @@ module KnifeCookbookDoc
172
184
 
173
185
  private
174
186
 
187
+ def source_url_from_berkshelf(name)
188
+ @source_url ||= begin
189
+ if File.exist?('Berksfile') && defined?(::Berkshelf)
190
+ ::Berkshelf::Berksfile
191
+ .from_file('Berksfile')
192
+ .install
193
+ .map { |cb| [cb.cookbook_name, cb.metadata.source_url] }
194
+ .to_h
195
+ else
196
+ {}
197
+ end
198
+ end
199
+ @source_url[name]
200
+ end
201
+
175
202
  def format_constraint(name, version)
203
+ url = source_url_from_berkshelf(name)
204
+ if !url.nil? && url.start_with?('http')
205
+ # git:// and ssh:// URLs are not browsable
206
+ name = "[#{name}](#{url})"
207
+ end
208
+
176
209
  if @constraints && version != DEFAULT_CONSTRAINT
177
210
  "#{name} (#{version})"
178
211
  else
@@ -52,14 +52,18 @@ module KnifeCookbookDoc
52
52
 
53
53
  def attribute_has_default_value?(attribute)
54
54
  specification = @native_resource.attribute_specifications[attribute]
55
- specification && specification.has_key?(:default)
55
+ specification && specification.key?(:default)
56
56
  end
57
57
 
58
58
  def attribute_default_value(attribute)
59
- if attribute_has_default_value?(attribute)
60
- return @native_resource.attribute_specifications[attribute][:default]
59
+ default = if attribute_has_default_value?(attribute)
60
+ @native_resource.attribute_specifications[attribute][:default]
61
+ end
62
+
63
+ if default.is_a?(Chef::DelayedEvaluator)
64
+ 'lazy { ... }'
61
65
  else
62
- return nil
66
+ default.inspect
63
67
  end
64
68
  end
65
69
 
@@ -94,13 +98,13 @@ module KnifeCookbookDoc
94
98
  resource_class.resource_name = filename_to_qualified_string(cookbook_name, filename)
95
99
  resource_class.run_context = nil
96
100
  resource_data = IO.read(filename)
97
- resource_data = resource_data.gsub(/^=begin *\n *\#\<\n(.*?)^ *\#\>\n=end *\n/m) do
101
+ resource_data = resource_data.gsub(/^=begin *\n *\# ?\<\n(.*?)^ *\# ?\>\n=end *\n/m) do
98
102
  "desc <<DOCO\n#{$1}\nDOCO\n"
99
103
  end
100
- resource_data = resource_data.gsub(/^ *\#\<\n(.*?)^ *\#\>\n/m) do
104
+ resource_data = resource_data.gsub(/^ *\# ?\<\n(.*?)^ *\# ?\>\n/m) do
101
105
  "desc <<DOCO\n#{$1.gsub(/^ *\# ?/, '')}\nDOCO\n"
102
106
  end
103
- resource_data = resource_data.gsub(/^ *\#\<\> (.*?)$/) do
107
+ resource_data = resource_data.gsub(/^ *\# ?\<\> (.*?)$/) do
104
108
  "desc #{$1.inspect}\n"
105
109
  end
106
110
 
@@ -1,3 +1,3 @@
1
1
  module KnifeCookbookDoc
2
- VERSION = '0.25.2'
2
+ VERSION = '0.30.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-cookbook-doc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.25.2
4
+ version: 0.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mathias Lafeldt
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-12-17 00:00:00.000000000 Z
12
+ date: 2021-03-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chef
@@ -94,9 +94,11 @@ files:
94
94
  - fixture/doc/overview.md
95
95
  - fixture/gemfile
96
96
  - fixture/knife.rb
97
+ - fixture/libraries/default.rb
97
98
  - fixture/metadata.rb
98
99
  - fixture/recipes/default.rb
99
100
  - fixture/resources/default.rb
101
+ - fixture/resources/space.rb
100
102
  - knife_cookbook_doc.gemspec
101
103
  - lib/chef/knife/README.md.erb
102
104
  - lib/chef/knife/cookbook_doc.rb
@@ -104,6 +106,7 @@ files:
104
106
  - lib/knife_cookbook_doc/base_model.rb
105
107
  - lib/knife_cookbook_doc/definitions_model.rb
106
108
  - lib/knife_cookbook_doc/documenting_lwrp_base.rb
109
+ - lib/knife_cookbook_doc/libraries_model.rb
107
110
  - lib/knife_cookbook_doc/rake_task.rb
108
111
  - lib/knife_cookbook_doc/readme_model.rb
109
112
  - lib/knife_cookbook_doc/recipe_model.rb
@@ -130,8 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
133
  - !ruby/object:Gem::Version
131
134
  version: '0'
132
135
  requirements: []
133
- rubyforge_project:
134
- rubygems_version: 2.5.1
136
+ rubygems_version: 3.1.4
135
137
  signing_key:
136
138
  specification_version: 4
137
139
  summary: Knife plugin to generate README.md for a cookbook