puppet-lint 0.3.2 → 0.4.0.pre1
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.
- data/.gitignore +2 -0
- data/Gemfile +0 -1
- data/README.md +3 -1
- data/Rakefile +0 -19
- data/lib/puppet-lint.rb +65 -74
- data/lib/puppet-lint/bin.rb +21 -0
- data/lib/puppet-lint/checkplugin.rb +22 -0
- data/lib/puppet-lint/{plugin.rb → checks.rb} +66 -31
- data/lib/puppet-lint/configuration.rb +105 -0
- data/lib/puppet-lint/lexer.rb +94 -31
- data/lib/puppet-lint/lexer/token.rb +38 -2
- data/lib/puppet-lint/monkeypatches.rb +2 -0
- data/lib/puppet-lint/monkeypatches/string_percent.rb +52 -0
- data/lib/puppet-lint/monkeypatches/string_prepend.rb +7 -0
- data/lib/puppet-lint/plugins.rb +42 -0
- data/lib/puppet-lint/plugins/check_comments.rb +8 -1
- data/lib/puppet-lint/plugins/check_resources.rb +25 -3
- data/lib/puppet-lint/plugins/check_strings.rb +53 -6
- data/lib/puppet-lint/plugins/check_whitespace.rb +69 -26
- data/lib/puppet-lint/version.rb +1 -1
- data/puppet-lint.gemspec +0 -1
- data/spec/puppet-lint/configuration_spec.rb +1 -0
- data/spec/puppet-lint/lexer_spec.rb +2 -2
- data/spec/puppet-lint/plugins/check_comments/slash_comments_spec.rb +22 -0
- data/spec/puppet-lint/plugins/check_resources/file_mode_spec.rb +119 -6
- data/spec/puppet-lint/plugins/check_resources/unquoted_file_mode_spec.rb +30 -3
- data/spec/puppet-lint/plugins/check_resources/unquoted_resource_title_spec.rb +103 -3
- data/spec/puppet-lint/plugins/check_strings/double_quoted_strings_spec.rb +39 -0
- data/spec/puppet-lint/plugins/check_strings/only_variable_string_spec.rb +23 -0
- data/spec/puppet-lint/plugins/check_strings/quoted_booleans_spec.rb +88 -0
- data/spec/puppet-lint/plugins/check_strings/variables_not_enclosed_spec.rb +44 -0
- data/spec/puppet-lint/plugins/check_whitespace/arrow_alignment_spec.rb +171 -6
- data/spec/puppet-lint/plugins/check_whitespace/hard_tabs_spec.rb +22 -0
- data/spec/puppet-lint/plugins/check_whitespace/trailing_whitespace_spec.rb +44 -0
- data/spec/puppet-lint_spec.rb +1 -1
- metadata +10 -22
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -55,6 +55,8 @@ At the moment, the following tests have been implemented:
|
|
55
55
|
### Resources
|
56
56
|
|
57
57
|
* All resource titles should be quoted.
|
58
|
+
* An exception has been made for resource titles that consist of only
|
59
|
+
a variable standing by itself.
|
58
60
|
* If a resource declaration includes an `ensure` attribute, it should be the
|
59
61
|
first attribute specified.
|
60
62
|
* Symbolic links should be declared by using an ensure value of `link` and
|
@@ -240,7 +242,7 @@ puppet-lint --no-80chars-check /path/to/my/manifest.pp
|
|
240
242
|
puppet-lint will also check for a `.puppet-lint.rc` file in the current
|
241
243
|
directory and your home directory and read in flags from there, so if you
|
242
244
|
wanted to always skip the hard tab character check, you could create
|
243
|
-
|
245
|
+
`~/.puppet-lint.rc` containing
|
244
246
|
|
245
247
|
```
|
246
248
|
--no-hard_tabs-check
|
data/Rakefile
CHANGED
@@ -2,7 +2,6 @@ require 'rake'
|
|
2
2
|
require 'rspec/core/rake_task'
|
3
3
|
|
4
4
|
task :default => :test
|
5
|
-
#task :default => [:test, :rdoc]
|
6
5
|
|
7
6
|
RSpec::Core::RakeTask.new(:test)
|
8
7
|
|
@@ -10,21 +9,3 @@ RSpec::Core::RakeTask.new(:cov) do |t|
|
|
10
9
|
t.rcov = true
|
11
10
|
t.rcov_opts = '--exclude "spec" --xrefs'
|
12
11
|
end
|
13
|
-
|
14
|
-
### RDOC Tasks ###
|
15
|
-
require 'rdoc'
|
16
|
-
if (RDoc::VERSION.split('.') <=> ['2','4','2']) >= 0
|
17
|
-
require 'rdoc/task'
|
18
|
-
RDoc::Task.new(:rdoc) do |rdoc|
|
19
|
-
rdoc.main = "README.md"
|
20
|
-
rdoc.rdoc_files.include("README.md", "lib/**/*.rb")
|
21
|
-
rdoc.options << "--all"
|
22
|
-
end
|
23
|
-
else
|
24
|
-
require 'rake/rdoctask'
|
25
|
-
Rake::RDocTask.new(:rdoc) do |rdoc|
|
26
|
-
rdoc.main = "README.md"
|
27
|
-
rdoc.rdoc_files.include("README.md", "lib/**/*.rb")
|
28
|
-
rdoc.options << "--all"
|
29
|
-
end
|
30
|
-
end
|
data/lib/puppet-lint.rb
CHANGED
@@ -1,102 +1,58 @@
|
|
1
1
|
require 'puppet-lint/version'
|
2
2
|
require 'puppet-lint/lexer'
|
3
3
|
require 'puppet-lint/configuration'
|
4
|
-
require 'puppet-lint/
|
4
|
+
require 'puppet-lint/checks'
|
5
5
|
require 'puppet-lint/bin'
|
6
|
-
|
7
|
-
unless String.respond_to?('prepend')
|
8
|
-
class String
|
9
|
-
def prepend(lead)
|
10
|
-
self.replace "#{lead}#{self}"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
# If we are using an older ruby version, we back-port the basic functionality
|
16
|
-
# we need for formatting output: 'somestring' % <hash>
|
17
|
-
begin
|
18
|
-
if ('%{test}' % {:test => 'replaced'} == 'replaced')
|
19
|
-
# If this works, we are all good to go.
|
20
|
-
end
|
21
|
-
rescue
|
22
|
-
# If the test failed (threw a error), monkeypatch String.
|
23
|
-
# Most of this code came from http://www.ruby-forum.com/topic/144310 but was
|
24
|
-
# simplified for our use.
|
25
|
-
|
26
|
-
# Basic implementation of 'string' % { } like we need it. needs work.
|
27
|
-
class String
|
28
|
-
Percent = instance_method '%' unless defined? Percent
|
29
|
-
def % *a, &b
|
30
|
-
a.flatten!
|
31
|
-
|
32
|
-
string = case a.last
|
33
|
-
when Hash
|
34
|
-
expand a.pop
|
35
|
-
else
|
36
|
-
self
|
37
|
-
end
|
38
|
-
|
39
|
-
if a.empty?
|
40
|
-
string
|
41
|
-
else
|
42
|
-
Percent.bind(string).call(a, &b)
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
def expand! vars = {}
|
47
|
-
loop do
|
48
|
-
changed = false
|
49
|
-
vars.each do |var, value|
|
50
|
-
var = var.to_s
|
51
|
-
var.gsub! %r/[^a-zA-Z0-9_]/, ''
|
52
|
-
[
|
53
|
-
%r/\%\{#{ var }\}/,
|
54
|
-
].each do |pat|
|
55
|
-
changed = gsub! pat, "#{ value }"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
break unless changed
|
59
|
-
end
|
60
|
-
self
|
61
|
-
end
|
62
|
-
def expand opts = {}
|
63
|
-
dup.expand! opts
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
6
|
+
require 'puppet-lint/monkeypatches'
|
67
7
|
|
68
8
|
class PuppetLint::NoCodeError < StandardError; end
|
69
9
|
|
70
10
|
class PuppetLint
|
71
|
-
|
11
|
+
# Public: Gets/Sets the String manifest code to be checked.
|
12
|
+
attr_accessor :code
|
13
|
+
|
14
|
+
attr_reader :manifest
|
72
15
|
|
16
|
+
# Public: Initialise a new PuppetLint object.
|
73
17
|
def initialize
|
74
|
-
@
|
75
|
-
@statistics = {:error => 0, :warning => 0}
|
18
|
+
@code = nil
|
19
|
+
@statistics = {:error => 0, :warning => 0, :fixed => 0}
|
76
20
|
@fileinfo = {:path => ''}
|
21
|
+
@manifest = ''
|
77
22
|
end
|
78
23
|
|
24
|
+
# Public: Access PuppetLint's configuration from outside the class.
|
25
|
+
#
|
26
|
+
# Returns a PuppetLint::Configuration object.
|
79
27
|
def self.configuration
|
80
28
|
@configuration ||= PuppetLint::Configuration.new
|
81
29
|
end
|
82
30
|
|
31
|
+
# Public: Access PuppetLint's configuration from inside the class.
|
32
|
+
#
|
33
|
+
# Returns a PuppetLint::Configuration object.
|
83
34
|
def configuration
|
84
35
|
self.class.configuration
|
85
36
|
end
|
86
37
|
|
38
|
+
# Public: Set the path of the manifest file to be tested and read the
|
39
|
+
# contents of the file.
|
40
|
+
#
|
41
|
+
# Returns nothing.
|
87
42
|
def file=(path)
|
88
43
|
if File.exist? path
|
89
44
|
@fileinfo[:path] = path
|
90
45
|
@fileinfo[:fullpath] = File.expand_path(path)
|
91
46
|
@fileinfo[:filename] = File.basename(path)
|
92
|
-
@
|
47
|
+
@code = File.read(path)
|
93
48
|
end
|
94
49
|
end
|
95
50
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
51
|
+
# Internal: Retrieve the format string to be used when writing problems to
|
52
|
+
# STDOUT. If the user has not specified a custom log format, build one for
|
53
|
+
# them.
|
54
|
+
#
|
55
|
+
# Returns a format String to be used with String#%.
|
100
56
|
def log_format
|
101
57
|
if configuration.log_format == ''
|
102
58
|
## recreate previous old log format as far as thats possible.
|
@@ -109,50 +65,85 @@ class PuppetLint
|
|
109
65
|
return configuration.log_format
|
110
66
|
end
|
111
67
|
|
68
|
+
# Internal: Format a problem message and print it to STDOUT.
|
69
|
+
#
|
70
|
+
# message - A Hash containing all the information about a problem.
|
71
|
+
#
|
72
|
+
# Returns nothing.
|
112
73
|
def format_message(message)
|
113
74
|
format = log_format
|
114
75
|
puts format % message
|
115
76
|
end
|
116
77
|
|
78
|
+
# Internal: Print out the line of the manifest on which the problem was found
|
79
|
+
# as well as a marker pointing to the location on the line.
|
80
|
+
#
|
81
|
+
# message - A Hash containing all the information about a problem.
|
82
|
+
# linter - The PuppetLint::Checks object that was used to test the manifest.
|
83
|
+
#
|
84
|
+
# Returns nothing.
|
117
85
|
def print_context(message, linter)
|
118
86
|
# XXX: I don't really like the way this has been implemented (passing the
|
119
87
|
# linter object down through layers of functions. Refactor me!
|
120
88
|
return if message[:check] == 'documentation'
|
89
|
+
return if message[:kind] == :fixed
|
121
90
|
line = linter.manifest_lines[message[:linenumber] - 1]
|
122
91
|
offset = line.index(/\S/)
|
123
92
|
puts "\n #{line.strip}"
|
124
93
|
printf "%#{message[:column] + 2 - offset}s\n\n", '^'
|
125
94
|
end
|
126
95
|
|
96
|
+
# Internal: Print the reported problems with a manifest to stdout.
|
97
|
+
#
|
98
|
+
# problems - An Array of problem Hashes as returned by
|
99
|
+
# PuppetLint::Checks#run.
|
100
|
+
# linter - The PuppetLint::Checks object that was used to test the
|
101
|
+
# manifest.
|
102
|
+
#
|
103
|
+
# Returns nothing.
|
127
104
|
def report(problems, linter)
|
128
105
|
problems.each do |message|
|
129
106
|
@statistics[message[:kind]] += 1
|
130
|
-
|
107
|
+
|
131
108
|
message.merge!(@fileinfo) {|key, v1, v2| v1 }
|
132
109
|
message[:KIND] = message[:kind].to_s.upcase
|
133
110
|
|
134
|
-
if
|
111
|
+
if message[:kind] == :fixed || [message[:kind], :all].include?(configuration.error_level)
|
135
112
|
format_message message
|
136
113
|
print_context(message, linter) if configuration.with_context
|
137
114
|
end
|
138
115
|
end
|
139
116
|
end
|
140
117
|
|
118
|
+
# Public: Determine if PuppetLint found any errors in the manifest.
|
119
|
+
#
|
120
|
+
# Returns true if errors were found, otherwise returns false.
|
141
121
|
def errors?
|
142
122
|
@statistics[:error] != 0
|
143
123
|
end
|
144
124
|
|
125
|
+
# Public: Determine if PuppetLint found any warnings in the manifest.
|
126
|
+
#
|
127
|
+
# Returns true if warnings were found, otherwise returns false.
|
145
128
|
def warnings?
|
146
129
|
@statistics[:warning] != 0
|
147
130
|
end
|
148
131
|
|
132
|
+
# Public: Run the loaded manifest code through the lint checks and print the
|
133
|
+
# results of the checks to stdout.
|
134
|
+
#
|
135
|
+
# Returns nothing.
|
136
|
+
# Raises PuppetLint::NoCodeError if no manifest code has been loaded.
|
149
137
|
def run
|
150
|
-
if @
|
138
|
+
if @code.nil?
|
151
139
|
raise PuppetLint::NoCodeError
|
152
140
|
end
|
153
141
|
|
154
142
|
linter = PuppetLint::Checks.new
|
155
|
-
problems = linter.run(@fileinfo, @
|
143
|
+
problems = linter.run(@fileinfo, @code)
|
144
|
+
|
145
|
+
@manifest = linter.manifest if PuppetLint.configuration.fix
|
146
|
+
|
156
147
|
report problems, linter
|
157
148
|
end
|
158
149
|
end
|
data/lib/puppet-lint/bin.rb
CHANGED
@@ -1,10 +1,17 @@
|
|
1
1
|
require 'optparse'
|
2
2
|
|
3
3
|
class PuppetLint::Bin
|
4
|
+
# Public: Initialise a new PuppetLint::Bin.
|
5
|
+
#
|
6
|
+
# args - An Array of command line argument Strings to be passed to the option
|
7
|
+
# parser.
|
4
8
|
def initialize(args)
|
5
9
|
@args = args
|
6
10
|
end
|
7
11
|
|
12
|
+
# Public: Run puppet-lint as a command line tool.
|
13
|
+
#
|
14
|
+
# Returns an Integer exit code to be passed back to the shell.
|
8
15
|
def run
|
9
16
|
help = <<-EOHELP
|
10
17
|
Puppet-lint
|
@@ -41,6 +48,14 @@ class PuppetLint::Bin
|
|
41
48
|
PuppetLint.configuration.error_level = el
|
42
49
|
end
|
43
50
|
|
51
|
+
opts.on("-l", '--load FILE', 'Load a file containing custom puppet-lint checks.') do |f|
|
52
|
+
load f
|
53
|
+
end
|
54
|
+
|
55
|
+
opts.on('-f', '--fix', 'Attempt to automatically fix errors') do
|
56
|
+
PuppetLint.configuration.fix = true
|
57
|
+
end
|
58
|
+
|
44
59
|
opts.on("--log-format FORMAT",
|
45
60
|
"Change the log format.", "Overrides --with-filename.",
|
46
61
|
"The following placeholders can be used:",
|
@@ -111,6 +126,12 @@ class PuppetLint::Bin
|
|
111
126
|
if l.errors? or (l.warnings? and PuppetLint.configuration.fail_on_warnings)
|
112
127
|
return_val = 1
|
113
128
|
end
|
129
|
+
|
130
|
+
if PuppetLint.configuration.fix
|
131
|
+
File.open(f, 'w') do |fd|
|
132
|
+
fd.puts l.manifest
|
133
|
+
end
|
134
|
+
end
|
114
135
|
end
|
115
136
|
return return_val
|
116
137
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class PuppetLint::CheckPlugin
|
2
|
+
# Public: Define a new lint check.
|
3
|
+
#
|
4
|
+
# name - The String name of the check.
|
5
|
+
# b - The Block implementation of the check.
|
6
|
+
#
|
7
|
+
# Returns nothing.
|
8
|
+
def self.check(name, &b)
|
9
|
+
PuppetLint.configuration.add_check(name, &b)
|
10
|
+
end
|
11
|
+
|
12
|
+
# Public: Define a new check helper method.
|
13
|
+
#
|
14
|
+
# name - The String name of the helper.
|
15
|
+
# b - The Block implementation of the helper.
|
16
|
+
#
|
17
|
+
# Returns nothing.
|
18
|
+
def self.helper(name, &b)
|
19
|
+
PuppetLint.configuration.add_helper(name, &b)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -1,7 +1,14 @@
|
|
1
|
+
require 'puppet-lint/checkplugin'
|
2
|
+
|
1
3
|
class PuppetLint::Checks
|
4
|
+
# Public: Get an Array of problem Hashes.
|
2
5
|
attr_reader :problems
|
3
|
-
attr_reader :manifest_lines
|
4
6
|
|
7
|
+
# Public: Get an Array of PuppetLint::Lexer::Token objects.
|
8
|
+
attr_reader :tokens
|
9
|
+
|
10
|
+
# Public: Initialise a new PuppetLint::Checks object and prepare the check
|
11
|
+
# methods.
|
5
12
|
def initialize
|
6
13
|
@problems = []
|
7
14
|
@default_info = {:check => 'unknown', :linenumber => 0, :column => 0}
|
@@ -10,30 +17,39 @@ class PuppetLint::Checks
|
|
10
17
|
method = PuppetLint.configuration.check_method[check]
|
11
18
|
self.class.send(:define_method, "lint_check_#{check}", &method)
|
12
19
|
end
|
20
|
+
|
21
|
+
PuppetLint.configuration.helpers.each do |helper|
|
22
|
+
method = PuppetLint.configuration.helper_method[helper]
|
23
|
+
self.class.send(:define_method, helper, &method)
|
24
|
+
end
|
13
25
|
end
|
14
26
|
|
15
|
-
#
|
16
|
-
#
|
17
|
-
# Adds the message to the problems array.
|
18
|
-
# The _kind_ gets added to the _message_hash_ by setting the key :_kind_.
|
19
|
-
# Typically, the _message_hash_ should contain following keys:
|
20
|
-
# <i>message</i>:: which contains a string value describing the problem
|
21
|
-
# <i>linenumber</i>:: which contains the line number on which the problem occurs.
|
22
|
-
# Besides the :_kind_ value that is being set, some other key/values are also
|
23
|
-
# added. Typically, this is
|
24
|
-
# <i>check</i>:: which contains the name of the check that is being executed.
|
25
|
-
# <i>linenumber</i>:: which defaults to 0 if the message does not already contain one.
|
27
|
+
# Public: Add a message to the problems array.
|
26
28
|
#
|
27
|
-
#
|
28
|
-
#
|
29
|
+
# kind - The kind of problem as a Symbol (:warning, :error).
|
30
|
+
# problem - A Hash containing the attributes of the problem.
|
31
|
+
# :message - The String message describing the problem.
|
32
|
+
# :linenumber - The Integer line number of the location of the problem.
|
33
|
+
# :check - The String name of the check that the problem came from.
|
34
|
+
# :column - The Integer column number of the location of the problem.
|
29
35
|
#
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
@
|
34
|
-
|
36
|
+
# Returns nothing.
|
37
|
+
def notify(kind, problem)
|
38
|
+
problem[:kind] = kind
|
39
|
+
problem.merge!(@default_info) {|key, v1, v2| v1 }
|
40
|
+
@problems << problem
|
35
41
|
end
|
36
42
|
|
43
|
+
# Internal: Tokenise the manifest code and prepare it for checking.
|
44
|
+
#
|
45
|
+
# fileinfo - A Hash containing the following:
|
46
|
+
# :fullpath - The expanded path to the file as a String.
|
47
|
+
# :filename - The name of the file as a String.
|
48
|
+
# :path - The original path to the file as passed to puppet-lint as
|
49
|
+
# a String.
|
50
|
+
# data - The String manifest code to be checked.
|
51
|
+
#
|
52
|
+
# Returns nothing.
|
37
53
|
def load_data(fileinfo, data)
|
38
54
|
lexer = PuppetLint::Lexer.new
|
39
55
|
begin
|
@@ -50,6 +66,16 @@ class PuppetLint::Checks
|
|
50
66
|
@data = data
|
51
67
|
end
|
52
68
|
|
69
|
+
# Internal: Run the lint checks over the manifest code.
|
70
|
+
#
|
71
|
+
# fileinfo - A Hash containing the following:
|
72
|
+
# :fullpath - The expanded path to the file as a String.
|
73
|
+
# :filename - The name of the file as a String.
|
74
|
+
# :path - The original path to the file as passed to puppet-lint as
|
75
|
+
# a String.
|
76
|
+
# data - The String manifest code to be checked.
|
77
|
+
#
|
78
|
+
# Returns an Array of problem Hashes.
|
53
79
|
def run(fileinfo, data)
|
54
80
|
load_data(fileinfo, data)
|
55
81
|
|
@@ -61,6 +87,9 @@ class PuppetLint::Checks
|
|
61
87
|
@problems
|
62
88
|
end
|
63
89
|
|
90
|
+
# Internal: Get a list of checks that have not been disabled.
|
91
|
+
#
|
92
|
+
# Returns an Array of String check names.
|
64
93
|
def enabled_checks
|
65
94
|
@enabled_checks ||= Proc.new do
|
66
95
|
self.public_methods.select { |method|
|
@@ -73,14 +102,16 @@ class PuppetLint::Checks
|
|
73
102
|
end.call
|
74
103
|
end
|
75
104
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
105
|
+
# Public: Get the full expanded path to the file being checked.
|
106
|
+
#
|
107
|
+
# Returns a String path.
|
80
108
|
def fullpath
|
81
109
|
@fileinfo[:fullpath]
|
82
110
|
end
|
83
111
|
|
112
|
+
# Public: Retrieve a list of tokens that represent resource titles.
|
113
|
+
#
|
114
|
+
# Returns an Array of PuppetLint::Lexer::Token objects.
|
84
115
|
def title_tokens
|
85
116
|
@title_tokens ||= Proc.new do
|
86
117
|
result = []
|
@@ -107,7 +138,7 @@ class PuppetLint::Checks
|
|
107
138
|
end.call
|
108
139
|
end
|
109
140
|
|
110
|
-
#
|
141
|
+
# Public: Calculate the positions of all resource declarations within the
|
111
142
|
# tokenised manifest. These positions only point to the content of the
|
112
143
|
# resource declaration, they do not include resource types or
|
113
144
|
# titles/namevars.
|
@@ -146,7 +177,7 @@ class PuppetLint::Checks
|
|
146
177
|
end.call
|
147
178
|
end
|
148
179
|
|
149
|
-
#
|
180
|
+
# Public: Calculate the positions of all class definitions within the
|
150
181
|
# tokenised manifest.
|
151
182
|
#
|
152
183
|
# Returns an Array of Hashes, each containing:
|
@@ -185,7 +216,7 @@ class PuppetLint::Checks
|
|
185
216
|
end.call
|
186
217
|
end
|
187
218
|
|
188
|
-
#
|
219
|
+
# Public: Calculate the positions of all defined type definitions within
|
189
220
|
# the tokenised manifest.
|
190
221
|
#
|
191
222
|
# Returns an Array of Hashes, each containing:
|
@@ -222,18 +253,22 @@ class PuppetLint::Checks
|
|
222
253
|
end.call
|
223
254
|
end
|
224
255
|
|
256
|
+
# Public: Retrieves a list of token types that are considered to be
|
257
|
+
# formatting tokens (ie whitespace, newlines, etc).
|
258
|
+
#
|
259
|
+
# Returns an Array of Symbols.
|
225
260
|
def formatting_tokens
|
226
261
|
@formatting_tokens ||= PuppetLint::Lexer::FORMATTING_TOKENS
|
227
262
|
end
|
228
263
|
|
264
|
+
# Public: Access the lines of the manifest that is being checked.
|
265
|
+
#
|
266
|
+
# Returns an Array of Strings.
|
229
267
|
def manifest_lines
|
230
268
|
@manifest_lines ||= @data.split("\n")
|
231
269
|
end
|
232
|
-
end
|
233
270
|
|
234
|
-
|
235
|
-
|
236
|
-
PuppetLint.configuration.add_check(name, &b)
|
271
|
+
def manifest
|
272
|
+
tokens.map { |t| t.to_manifest }.join('')
|
237
273
|
end
|
238
274
|
end
|
239
|
-
|