puppet-doc-lint 0.0.1 → 0.1.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/README.md +1 -0
- data/bin/puppet-doc-lint +27 -0
- data/lib/puppet-doc-lint.rb +1 -0
- data/lib/puppet-doc-lint/parser.rb +19 -0
- data/lib/puppet-doc-lint/result.rb +29 -5
- data/lib/puppet-doc-lint/runner.rb +4 -1
- data/lib/puppet-doc-lint/string.rb +20 -0
- data/lib/puppet-doc-lint/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cfba85bcbbcadad148909ef3260b5b76d5b4854f
|
4
|
+
data.tar.gz: 32824c2b9f5e90e179a801abaaa66ef08db7889c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9b268671e92354301d0cf53608980e51a9d50046107d41e5a4aa05121ffeadf254faf82ac5b825e685c88d390d5d0ec6f9e1ffc9cd587034a1c4f263a5c03dc
|
7
|
+
data.tar.gz: 2c289d5f34666d5aa7ee7a8b8206ef3ff906d99c7817d21a67c156962c22a14e835c6a4d836af1409ee6c758252aafbb09075ee78fe51186db8a8fcf2f09505b
|
data/README.md
CHANGED
data/bin/puppet-doc-lint
CHANGED
@@ -15,6 +15,33 @@ else
|
|
15
15
|
results = runner.run(ARGV)
|
16
16
|
end
|
17
17
|
|
18
|
+
parameters_total = 0
|
19
|
+
parameters_documented_total = 0
|
20
|
+
parameters_undocumented_total = 0
|
21
|
+
parameters_missing_total = 0
|
22
|
+
tally = 0
|
23
|
+
|
18
24
|
results.each do |result|
|
25
|
+
tally = tally + 1
|
19
26
|
result.result_report
|
27
|
+
parameters_undocumented_total = parameters_undocumented_total + result.undocumented_parameters.size
|
28
|
+
parameters_total = parameters_total + result.parameters.size
|
29
|
+
parameters_documented_total = parameters_documented_total + result.documented_parameters.size
|
30
|
+
parameters_missing_total = parameters_missing_total + result.documented_parameter_no_assignment.size
|
31
|
+
end
|
32
|
+
|
33
|
+
coverage = 100
|
34
|
+
|
35
|
+
coverage = parameters_documented_total.percent_of(parameters_total) unless parameters_total == 0
|
36
|
+
|
37
|
+
puts "\n\n"
|
38
|
+
puts "Number of files: #{tally}"
|
39
|
+
puts "Total variables: #{parameters_total}"
|
40
|
+
puts "Total missing variables: #{parameters_total}"
|
41
|
+
puts "Documented variables: #{parameters_documented_total}"
|
42
|
+
puts "Documentation coverage: #{coverage.round(2)}%"
|
43
|
+
|
44
|
+
if (parameters_missing_total + parameters_undocumented_total) > 0
|
45
|
+
puts "Issues found!".bold.green.bg_red
|
46
|
+
exit 1
|
20
47
|
end
|
data/lib/puppet-doc-lint.rb
CHANGED
@@ -57,5 +57,24 @@ class PuppetDocLint
|
|
57
57
|
docs
|
58
58
|
end # if nil?
|
59
59
|
end # def docs
|
60
|
+
|
61
|
+
def authors
|
62
|
+
if !@object.doc.nil?
|
63
|
+
rdoc = RDoc::Markup.parse(@object.doc)
|
64
|
+
authors = []
|
65
|
+
|
66
|
+
author_docs = rdoc.parts.chunk{|i|i.class == RDoc::Markup::Heading && i.text == 'Authors'}.reject{|sep,ans| sep}.map{|sep,ans| ans}
|
67
|
+
|
68
|
+
author_docs.each do | doc_chunk |
|
69
|
+
unless doc_chunk[1].class == RDoc::Markup::BlankLine || doc_chunk[1].class == RDoc::Markup::Heading
|
70
|
+
doc_chunk[1].items.each do |chunk|
|
71
|
+
authors << chunk.parts.first.parts
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
authors
|
77
|
+
end # if nil?
|
78
|
+
end # def authors
|
60
79
|
end # class Parser
|
61
80
|
end # module PuppetDocLint
|
@@ -1,5 +1,11 @@
|
|
1
1
|
require 'virtus'
|
2
2
|
|
3
|
+
class Numeric
|
4
|
+
def percent_of(n)
|
5
|
+
self.to_f / n.to_f * 100.0
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
3
9
|
class PuppetDocLint
|
4
10
|
class Result
|
5
11
|
include Virtus.model
|
@@ -9,14 +15,32 @@ class PuppetDocLint
|
|
9
15
|
attribute :no_documentation, Boolean, :default => false
|
10
16
|
attribute :documented_parameters, String, :default => []
|
11
17
|
attribute :undocumented_parameters, String, :default => []
|
18
|
+
attribute :documented_parameter_no_assignment, String, :default => []
|
19
|
+
attribute :authors, String, :default => []
|
12
20
|
|
13
21
|
def result_report
|
14
|
-
puts "
|
15
|
-
puts "
|
22
|
+
puts "===================================="
|
23
|
+
puts "Class #{class_name} ( #{file_name} )".bg_blue
|
16
24
|
puts "Parameters found #{parameters}"
|
17
|
-
|
18
|
-
|
19
|
-
|
25
|
+
if no_documentation
|
26
|
+
puts "No documentation found."
|
27
|
+
puts "If there is documentation, this may be a bug with the Puppet parser"
|
28
|
+
puts "Puppet files with newer features such as the use of hashes can cause this\n\n"
|
29
|
+
else
|
30
|
+
puts "Documented parameters found: #{documented_parameters}".green
|
31
|
+
puts "Undocumented parameters found: #{undocumented_parameters}".red
|
32
|
+
puts "Parameters with Documentation but no defintion: #{documented_parameter_no_assignment}".red unless documented_parameter_no_assignment.empty?
|
33
|
+
puts "Documentation Coverage: #{percent_documented}%"
|
34
|
+
puts "Authors: #{authors}" unless authors.empty?
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def percent_documented
|
39
|
+
if documented_parameters.size == 0
|
40
|
+
100
|
41
|
+
else
|
42
|
+
documented_parameters.size.percent_of(parameters.size).round(2)
|
43
|
+
end
|
20
44
|
end
|
21
45
|
|
22
46
|
end #class Result
|
@@ -9,7 +9,7 @@ class PuppetDocLint
|
|
9
9
|
next if content.instance_variable_get('@object').nil?
|
10
10
|
parameters = (defined? content.parameters) ? content.parameters.paramflat : nil
|
11
11
|
puppet_file_result.class_name = content.klass
|
12
|
-
puppet_file_result.no_documentation = true if content.docs == {}
|
12
|
+
puppet_file_result.no_documentation = true if content.docs == {} && content.authors == []
|
13
13
|
result = {
|
14
14
|
content.klass => {
|
15
15
|
'parameters' => parameters,
|
@@ -21,9 +21,12 @@ class PuppetDocLint
|
|
21
21
|
|
22
22
|
undocumented = parameters.keys - content.docs.keys
|
23
23
|
documented = parameters.keys - undocumented
|
24
|
+
documented_parameter_no_assignment = content.docs.keys - parameters.keys
|
24
25
|
|
25
26
|
puppet_file_result.documented_parameters = documented unless documented.empty?
|
26
27
|
puppet_file_result.undocumented_parameters = undocumented unless undocumented.empty?
|
28
|
+
puppet_file_result.documented_parameter_no_assignment = documented_parameter_no_assignment unless documented_parameter_no_assignment.empty?
|
29
|
+
puppet_file_result.authors = content.authors
|
27
30
|
|
28
31
|
runner_results << puppet_file_result
|
29
32
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class String
|
2
|
+
def black; "\033[30m#{self}\033[0m" end
|
3
|
+
def red; "\033[31m#{self}\033[0m" end
|
4
|
+
def green; "\033[32m#{self}\033[0m" end
|
5
|
+
def brown; "\033[33m#{self}\033[0m" end
|
6
|
+
def blue; "\033[34m#{self}\033[0m" end
|
7
|
+
def magenta; "\033[35m#{self}\033[0m" end
|
8
|
+
def cyan; "\033[36m#{self}\033[0m" end
|
9
|
+
def gray; "\033[37m#{self}\033[0m" end
|
10
|
+
def bg_black; "\033[40m#{self}\0330m" end
|
11
|
+
def bg_red; "\033[41m#{self}\033[0m" end
|
12
|
+
def bg_green; "\033[42m#{self}\033[0m" end
|
13
|
+
def bg_brown; "\033[43m#{self}\033[0m" end
|
14
|
+
def bg_blue; "\033[44m#{self}\033[0m" end
|
15
|
+
def bg_magenta; "\033[45m#{self}\033[0m" end
|
16
|
+
def bg_cyan; "\033[46m#{self}\033[0m" end
|
17
|
+
def bg_gray; "\033[47m#{self}\033[0m" end
|
18
|
+
def bold; "\033[1m#{self}\033[22m" end
|
19
|
+
def reverse_color; "\033[7m#{self}\033[27m" end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-doc-lint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Souter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -125,6 +125,7 @@ files:
|
|
125
125
|
- lib/puppet-doc-lint/rake_task.rb
|
126
126
|
- lib/puppet-doc-lint/result.rb
|
127
127
|
- lib/puppet-doc-lint/runner.rb
|
128
|
+
- lib/puppet-doc-lint/string.rb
|
128
129
|
- lib/puppet-doc-lint/version.rb
|
129
130
|
- puppet-doc-lint.gemspec
|
130
131
|
- spec/manifests/define_nordoc.pp
|
@@ -156,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
157
|
version: '0'
|
157
158
|
requirements: []
|
158
159
|
rubyforge_project:
|
159
|
-
rubygems_version: 2.0.
|
160
|
+
rubygems_version: 2.0.14
|
160
161
|
signing_key:
|
161
162
|
specification_version: 4
|
162
163
|
summary: Doc Parser for Puppet Modules. Returns Information about documentation.
|