knife-cookbook-doc 0.25.0 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE.md +47 -0
- data/.gitignore +2 -0
- data/.travis.yml +0 -1
- data/CHANGELOG.md +28 -0
- data/CONTRIBUTING.md +27 -10
- data/Rakefile +9 -0
- data/fixture/README-expected.md +10 -0
- data/fixture/libraries/default.rb +7 -0
- data/lib/chef/knife/README.md.erb +19 -1
- data/lib/chef/knife/cookbook_doc.rb +1 -0
- data/lib/knife_cookbook_doc/libraries_model.rb +13 -0
- data/lib/knife_cookbook_doc/rake_task.rb +1 -0
- data/lib/knife_cookbook_doc/readme_model.rb +44 -1
- data/lib/knife_cookbook_doc/resource_model.rb +8 -4
- data/lib/knife_cookbook_doc/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d4e4e61d176043dd41fa77782ac36203bc1251a
|
4
|
+
data.tar.gz: 49a72076fe65ea3f15878479e7c709394e2bc14c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 325f8c3e22e8f67778480106847aafbccc2d7da9d58831005f3fa09b7e3de3c4710c9a05e6023718a8669c064e51c94f3cc8cf5305752704e5d6a587d5c89fae
|
7
|
+
data.tar.gz: 876de6b5caff31196e93bd7dd71c8b5fb1c6bec5725a95c24644595ae19954de6a043d1e987be44df56c67c1e376eec46bec027bcd9ef285ce0b7393347e97da
|
@@ -0,0 +1,47 @@
|
|
1
|
+
<!--
|
2
|
+
Thanks for your interest in the project. I appreciate bugs filed and PRs submitted!
|
3
|
+
Please make sure that you are familiar with and follow the Code of Conduct for
|
4
|
+
this project (found in the CODE_OF_CONDUCT.md file).
|
5
|
+
|
6
|
+
Please fill out this template with all the relevant information so we can
|
7
|
+
understand what's going on and fix the issue.
|
8
|
+
|
9
|
+
I may ask you to submit the fix (after giving some direction).
|
10
|
+
-->
|
11
|
+
|
12
|
+
Environment:
|
13
|
+
|
14
|
+
<!--
|
15
|
+
Please provide the version of this project where the issue occurred as well as the
|
16
|
+
versions of other environmental factors. This could be virtual machine version, os
|
17
|
+
version, browser version etc.
|
18
|
+
-->
|
19
|
+
|
20
|
+
Relevant code or config:
|
21
|
+
|
22
|
+
```
|
23
|
+
|
24
|
+
```
|
25
|
+
|
26
|
+
What you did:
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
What happened:
|
31
|
+
|
32
|
+
<!-- Please provide the full error message/screenshots/anything -->
|
33
|
+
|
34
|
+
Reproduction repository:
|
35
|
+
|
36
|
+
<!--
|
37
|
+
If possible, please create a repository that reproduces the issue with the
|
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
|
41
|
+
-->
|
42
|
+
|
43
|
+
Problem description:
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
Suggested solution:
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,31 @@
|
|
1
|
+
# v0.29.0 (Jun 26 2020)
|
2
|
+
|
3
|
+
* Extract descriptions from `libraries/*.rb`. Submitted by Joe Nuspl.
|
4
|
+
|
5
|
+
# v0.28.0 (Jun 11 2020)
|
6
|
+
|
7
|
+
* If `Berksfile` exists, add source_url links to cookbooks. Submitted by Joe Nuspl.
|
8
|
+
|
9
|
+
# v0.27.0 (Jun 20 2019)
|
10
|
+
|
11
|
+
* Add support for Chef 15. Submitted by grozan.
|
12
|
+
|
13
|
+
# v0.26.0 (Mar 4 2019)
|
14
|
+
|
15
|
+
* Display `lazy` defaults as such. Submitted by Joe Nuspl.
|
16
|
+
|
17
|
+
# v0.25.2 (Dec 18 2018)
|
18
|
+
|
19
|
+
* Re-release gem with the appropriate version.
|
20
|
+
|
21
|
+
# v0.24.2 (Dec 17 2018)
|
22
|
+
|
23
|
+
* Add chef_versions support. Submitted by Nikolay Antsiferov.
|
24
|
+
|
25
|
+
# v0.25.0 (Mar 7 2018)
|
26
|
+
|
27
|
+
* Remove deprecated metadata for >= Chef 13. Submitted by Jamie Tanna.
|
28
|
+
|
1
29
|
# v0.24.1 (Oct 2 2017)
|
2
30
|
|
3
31
|
* Fix the markdown spacing for maintainer/source/issues URL. Submitted by Jamie Tanna.
|
data/CONTRIBUTING.md
CHANGED
@@ -1,19 +1,34 @@
|
|
1
1
|
# How to Contribute
|
2
2
|
|
3
|
-
|
3
|
+
We'd love to accept your patches and contributions to this project. Pull requests are part of
|
4
|
+
what makes open source great. There are just a few small guidelines you need to follow.
|
4
5
|
|
5
|
-
|
6
|
-
* Create your feature branch (`git checkout -b my-new-feature`)
|
7
|
-
* Commit your changes (`git commit -am 'Add some feature'`)
|
8
|
-
* Push to the branch (`git push origin my-new-feature`)
|
9
|
-
* Create new Pull Request
|
6
|
+
## Code of Conduct
|
10
7
|
|
11
|
-
|
8
|
+
Participation in this project comes under the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md)
|
9
|
+
|
10
|
+
## Submitting code via Pull Requests
|
11
|
+
|
12
|
+
- We follow the [Github Pull Request Model](https://help.github.com/articles/about-pull-requests/) for
|
13
|
+
all contributions.
|
14
|
+
- For large bodies of work, we recommend creating an issue outlining the feature that you wish to build,
|
15
|
+
and describing how it will be implemented. This gives a chance for review to happen early, and ensures
|
16
|
+
no wasted effort occurs.
|
17
|
+
- All submissions, will require review before being merged.
|
18
|
+
- Finally - *Thanks* for considering submitting code to the project!
|
19
|
+
|
20
|
+
## Formatting
|
21
|
+
|
22
|
+
When submitting pull requests, make sure to do the following:
|
23
|
+
|
24
|
+
- Maintain the same code style as the rest of the project.
|
25
|
+
- Remove trailing whitespace. Many editors will do this automatically.
|
26
|
+
- Ensure any new files have [a trailing newline](https://stackoverflow.com/questions/5813311/no-newline-at-end-of-file)
|
12
27
|
|
13
28
|
## How to speed the merging of pull requests
|
14
29
|
|
15
|
-
* Describe your changes in the CHANGELOG.
|
16
|
-
* Give yourself some credit in the appropriate place (usually the CHANGELOG).
|
30
|
+
* Describe your changes in the CHANGELOG.md (if present).
|
31
|
+
* Give yourself some credit in the appropriate place (usually the CHANGELOG.md).
|
17
32
|
* Make commits of logical units.
|
18
33
|
* Ensure your commit messages help others understand what you are doing and why.
|
19
34
|
* Check for unnecessary whitespace with `git diff --check` before committing.
|
@@ -23,4 +38,6 @@ Pester us if we don't get your Pull Requests merged in a timely fashion. :)
|
|
23
38
|
## Additional Resources
|
24
39
|
|
25
40
|
* [General GitHub documentation](http://help.github.com/)
|
26
|
-
* [
|
41
|
+
* [How to write a good Git Commit message](https://chris.beams.io/posts/git-commit/) -
|
42
|
+
Great way to make sure your Pull Requests get accepted.
|
43
|
+
* [An Open Source Etiquette Guidebook](https://css-tricks.com/open-source-etiquette-guidebook/#article-header-id-1)
|
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
|
data/fixture/README-expected.md
CHANGED
@@ -6,6 +6,11 @@
|
|
6
6
|
|
7
7
|
# Requirements
|
8
8
|
|
9
|
+
|
10
|
+
## Chef Client:
|
11
|
+
|
12
|
+
*No Chef versions defined*
|
13
|
+
|
9
14
|
## Platform:
|
10
15
|
|
11
16
|
* cookbook-authors
|
@@ -45,6 +50,11 @@ This resource is awesome.
|
|
45
50
|
- my_attribute: This is an attribute. Defaults to <code>"a default value"</code>.
|
46
51
|
- my_property: This is a property. Defaults to <code>"another default value"</code>.
|
47
52
|
|
53
|
+
# Libraries
|
54
|
+
|
55
|
+
## stooges()
|
56
|
+
Returns `['Moe', 'Larry', 'Curly']`
|
57
|
+
|
48
58
|
# Credits
|
49
59
|
|
50
60
|
* Mathias Lafeldt
|
@@ -12,6 +12,17 @@
|
|
12
12
|
<%= fragments['requirements'] -%>
|
13
13
|
|
14
14
|
<% end -%>
|
15
|
+
|
16
|
+
## Chef Client:
|
17
|
+
|
18
|
+
<% unless chef_versions.empty? %>
|
19
|
+
<% chef_versions.each do |chef_version| %>
|
20
|
+
* <%= chef_version %>
|
21
|
+
<% end %>
|
22
|
+
<% else %>
|
23
|
+
*No Chef versions defined*
|
24
|
+
<% end %>
|
25
|
+
|
15
26
|
## Platform:
|
16
27
|
|
17
28
|
<% unless platforms.empty? %>
|
@@ -136,7 +147,7 @@
|
|
136
147
|
### Attribute Parameters
|
137
148
|
|
138
149
|
<% resource.attributes.each do |attribute| -%>
|
139
|
-
- <%= attribute %>: <%= resource.attribute_description(attribute) %><% if resource.attribute_has_default_value?(attribute) %> Defaults to <code><%= resource.attribute_default_value(attribute)
|
150
|
+
- <%= attribute %>: <%= resource.attribute_description(attribute) %><% if resource.attribute_has_default_value?(attribute) %> Defaults to <code><%= resource.attribute_default_value(attribute) %></code>.<% end %>
|
140
151
|
<% end -%>
|
141
152
|
<% end -%>
|
142
153
|
<% resource.top_level_descriptions.keys.select{|k| k != 'main'}.each do |key| -%>
|
@@ -146,6 +157,13 @@
|
|
146
157
|
<%= resource.top_level_description(key) -%>
|
147
158
|
<% end -%>
|
148
159
|
|
160
|
+
<% end -%>
|
161
|
+
<% end -%>
|
162
|
+
<% unless libraries.empty? -%>
|
163
|
+
# Libraries
|
164
|
+
<% libraries.each do |lib| -%>
|
165
|
+
|
166
|
+
<%= lib.descriptions %>
|
149
167
|
<% end -%>
|
150
168
|
<% end -%>
|
151
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'
|
@@ -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)
|
@@ -96,6 +108,16 @@ module KnifeCookbookDoc
|
|
96
108
|
end
|
97
109
|
end
|
98
110
|
|
111
|
+
def chef_versions
|
112
|
+
if @metadata.methods.include?(:chef_version)
|
113
|
+
@metadata.chef_versions.map do |chef_version, version|
|
114
|
+
format_constraint(chef_version, version)
|
115
|
+
end
|
116
|
+
else
|
117
|
+
[]
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
99
121
|
def dependencies
|
100
122
|
@metadata.dependencies.map do |cookbook, version|
|
101
123
|
format_constraint(cookbook, version)
|
@@ -162,7 +184,28 @@ module KnifeCookbookDoc
|
|
162
184
|
|
163
185
|
private
|
164
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
|
+
|
165
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
|
+
|
166
209
|
if @constraints && version != DEFAULT_CONSTRAINT
|
167
210
|
"#{name} (#{version})"
|
168
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.
|
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
|
-
|
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
|
-
|
66
|
+
default.inspect
|
63
67
|
end
|
64
68
|
end
|
65
69
|
|
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.
|
4
|
+
version: 0.29.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:
|
12
|
+
date: 2020-06-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: chef
|
@@ -76,6 +76,7 @@ extensions: []
|
|
76
76
|
extra_rdoc_files: []
|
77
77
|
files:
|
78
78
|
- ".gitattributes"
|
79
|
+
- ".github/ISSUE_TEMPLATE.md"
|
79
80
|
- ".gitignore"
|
80
81
|
- ".travis.yml"
|
81
82
|
- CHANGELOG.md
|
@@ -93,6 +94,7 @@ files:
|
|
93
94
|
- fixture/doc/overview.md
|
94
95
|
- fixture/gemfile
|
95
96
|
- fixture/knife.rb
|
97
|
+
- fixture/libraries/default.rb
|
96
98
|
- fixture/metadata.rb
|
97
99
|
- fixture/recipes/default.rb
|
98
100
|
- fixture/resources/default.rb
|
@@ -103,6 +105,7 @@ files:
|
|
103
105
|
- lib/knife_cookbook_doc/base_model.rb
|
104
106
|
- lib/knife_cookbook_doc/definitions_model.rb
|
105
107
|
- lib/knife_cookbook_doc/documenting_lwrp_base.rb
|
108
|
+
- lib/knife_cookbook_doc/libraries_model.rb
|
106
109
|
- lib/knife_cookbook_doc/rake_task.rb
|
107
110
|
- lib/knife_cookbook_doc/readme_model.rb
|
108
111
|
- lib/knife_cookbook_doc/recipe_model.rb
|