puppet-lint-class_alignment-check 0.1.0 → 0.2.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
2
  SHA256:
3
- metadata.gz: 2a840e9e2d88d40af098ce22a8a2ca7d8dde090b727f85af6e05f72c84b79c95
4
- data.tar.gz: be0f893935808ba8c07682dd5bd7457ca686ba8adc973a85a04d40d2785b656d
3
+ metadata.gz: bea9133383ac53f7e568261f0b752c267b49773265c6dd71cbf76b7082cf5326
4
+ data.tar.gz: 7db3d124fb3714902d13da0db06f2ba31baa469b16e0b236cf124f77258b7b2d
5
5
  SHA512:
6
- metadata.gz: 4c312626c1d7b3b23584963c138b324ee11b5c1931c6f2bcf1f34a85a9aa95d99850c1fd31fb6ef96659d2646fa3bc4dfa40b516e102bc82944612bb0c5fcf39
7
- data.tar.gz: 8cd001ccd8620fd4fd4f57ba946d36a23a2115d1ce2c2c0835e30c533f42cc064e426edcbaf87a42ce2d88c2d18ed8efc443bd8f91768fda2c7389329ba29696
6
+ metadata.gz: 538a2f9bb3dbe6575673a5ee8a5207a6ec09f2c1c3f245957f5f4f5149434f24ba7af08da337df97f6fa853158de9459b0332e2df4eceed91a094ec974716ebc
7
+ data.tar.gz: ec62f9ae3a83cbcf445dfd7607ae3aeb4bd70dedf266767a4b26385d18e516689db06dc70db43fbd0f7f7cb6ba87913a15e703a6b92edfd8da41f769e5f4485d
data/README.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  [![License](https://img.shields.io/github/license/anhpt379/puppet-lint-class_alignment-check.svg)](https://github.com/anhpt379/puppet-lint-class_alignment-check/blob/master/LICENSE)
4
4
  [![Test](https://github.com/anhpt379/puppet-lint-class_alignment-check/actions/workflows/test.yml/badge.svg)](https://github.com/anhpt379/puppet-lint-class_alignment-check/actions/workflows/test.yml)
5
+ [![codecov](https://codecov.io/gh/anhpt379/puppet-lint-class_alignment-check/branch/master/graph/badge.svg?token=2DI8JYJ8AZ)](https://codecov.io/gh/anhpt379/puppet-lint-class_alignment-check)
6
+ [![RubyGem Version](https://img.shields.io/gem/v/puppet-lint-class_alignment-check.svg)](https://rubygems.org/gems/puppet-lint-class_alignment-check)
7
+ [![RubyGem Downloads](https://img.shields.io/gem/dt/puppet-lint-class_alignment-check.svg)](https://rubygems.org/gems/puppet-lint-class_alignment-check)
5
8
 
6
9
  A puppet-lint plugin to check and fix class params/equals alignment.
7
10
 
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ begin
4
+ require 'simplecov'
5
+ require 'simplecov-console'
6
+ require 'codecov'
7
+ rescue LoadError
8
+ else
9
+ SimpleCov.start do
10
+ track_files 'lib/**/*.rb'
11
+
12
+ add_filter '/spec'
13
+
14
+ enable_coverage :branch
15
+
16
+ # do not track vendored files
17
+ add_filter '/vendor'
18
+ add_filter '/.vendor'
19
+ end
20
+
21
+ SimpleCov.formatters = [
22
+ SimpleCov::Formatter::Console,
23
+ SimpleCov::Formatter::Codecov
24
+ ]
25
+ end
26
+
3
27
  require 'puppet-lint'
4
28
 
5
29
  PuppetLint::Plugins.load_spec_helper
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-lint-class_alignment-check
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anh Pham
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2022-05-08 00:00:00.000000000 Z
@@ -30,6 +30,20 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '3.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: codecov
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
33
47
  - !ruby/object:Gem::Dependency
34
48
  name: rake
35
49
  requirement: !ruby/object:Gem::Requirement
@@ -87,7 +101,7 @@ dependencies:
87
101
  - !ruby/object:Gem::Version
88
102
  version: '1.0'
89
103
  - !ruby/object:Gem::Dependency
90
- name: simplecov
104
+ name: simplecov-console
91
105
  requirement: !ruby/object:Gem::Requirement
92
106
  requirements:
93
107
  - - ">="
@@ -108,7 +122,6 @@ extra_rdoc_files: []
108
122
  files:
109
123
  - LICENSE
110
124
  - README.md
111
- - lib/puppet-lint/plugins/check_class_params_alignment.rb
112
125
  - spec/puppet-lint/plugins/check_class_equals_alignment_spec.rb
113
126
  - spec/puppet-lint/plugins/check_class_params_alignment_spec.rb
114
127
  - spec/spec_helper.rb
@@ -116,7 +129,7 @@ homepage: https://github.com/anhpt379/puppet-lint-class_alignment-check
116
129
  licenses:
117
130
  - MIT
118
131
  metadata: {}
119
- post_install_message:
132
+ post_install_message:
120
133
  rdoc_options: []
121
134
  require_paths:
122
135
  - lib
@@ -131,8 +144,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
144
  - !ruby/object:Gem::Version
132
145
  version: '0'
133
146
  requirements: []
134
- rubygems_version: 3.2.22
135
- signing_key:
147
+ rubygems_version: 3.2.33
148
+ signing_key:
136
149
  specification_version: 4
137
150
  summary: A puppet-lint plugin to check & fix class params/equals alignment.
138
151
  test_files:
@@ -1,213 +0,0 @@
1
- # Parameters to classes or defined types must be uniformly indented in two
2
- # spaces from the title. The equals sign should be aligned.
3
- #
4
- # https://puppet.com/docs/puppet/7/style_guide.html#style_guide_classes-param-indentation-alignment
5
-
6
- require 'debug'
7
-
8
- def a_param?(token)
9
- if token.prev_code_token.type == :EQUALS
10
- false
11
- elsif token.prev_code_token.type == :FARROW
12
- false
13
- elsif token.type == :VARIABLE && !%i[DQPRE DQMID].include?(token.prev_code_token.type)
14
- true
15
- end
16
- end
17
-
18
- def first_param_on_the_line?(token)
19
- origin = token
20
- while token&.prev_token
21
- token = token.prev_token
22
-
23
- break if token.type == :NEWLINE
24
- end
25
-
26
- while token&.next_token
27
- token = token.next_token
28
-
29
- break if token.type == :VARIABLE
30
- end
31
-
32
- origin == token
33
- end
34
-
35
- def the_one?(token, character)
36
- case character
37
- when '='
38
- true if token.type == :EQUALS
39
- when '$'
40
- true if token.type == :VARIABLE && a_param?(token) && first_param_on_the_line?(token)
41
- end
42
- end
43
-
44
- def get_the_first_param(token)
45
- while token&.prev_code_token
46
- token = token.prev_code_token
47
- break if token.type == :CLASS
48
- end
49
-
50
- while token&.next_code_token
51
- token = token.next_code_token
52
- return token if token.type == :VARIABLE
53
- end
54
- end
55
-
56
- def get_prev_code_token(token, character)
57
- case character
58
- when '='
59
- token.prev_code_token
60
- when '$'
61
- if token.prev_code_token
62
- if %i[CLASSREF RBRACK].include?(token.prev_code_token.type)
63
- token.prev_code_token
64
- elsif token.prev_code_token.type == :LPAREN
65
- token
66
- elsif token.prev_code_token.type == :COMMA
67
- get_the_first_param(token)
68
- end
69
- end
70
- end
71
- end
72
-
73
- # This function is copied & modified from puppet-lint arrow_alignment check
74
- # https://github.com/puppetlabs/puppet-lint/blob/020143b705b023946739eb44e7c7d99fcd087527/lib/puppet-lint/plugins/check_whitespace/arrow_alignment.rb#L8
75
- def check_for(character)
76
- # I intentionally didn't rename `arrow` to another name, to keep the code as
77
- # similar as the original one, to easier to update in the future.
78
- (class_indexes + defined_type_indexes).each do |res_idx|
79
- arrow_column = [0]
80
- level_idx = 0
81
- level_tokens = []
82
- param_column = [nil]
83
- resource_tokens = res_idx[:param_tokens]
84
- next if resource_tokens.nil?
85
-
86
- resource_tokens.reject! do |token|
87
- COMMENT_TYPES.include?(token.type)
88
- end
89
-
90
- # If this is a single line resource, skip it
91
- first_arrow = resource_tokens.index { |r| the_one?(r, character) }
92
- last_arrow = resource_tokens.rindex { |r| the_one?(r, character) }
93
- next if first_arrow.nil?
94
- next if last_arrow.nil?
95
- next if resource_tokens[first_arrow].line == resource_tokens[last_arrow].line
96
-
97
- resource_tokens.each do |token|
98
- if the_one?(token, character)
99
- param_token = get_prev_code_token(token, character)
100
- param_token = token if param_token.nil?
101
-
102
- param_length = param_token.to_manifest.length
103
-
104
- param_column[level_idx] = param_token.column if param_column[level_idx].nil?
105
-
106
- if (level_tokens[level_idx] ||= []).any? { |t| t.line == token.line }
107
- this_arrow_column = param_column[level_idx] + param_length + 1
108
- elsif character == '$' && param_token.type == :VARIABLE
109
- this_arrow_column = param_token.column
110
- else
111
- this_arrow_column = param_token.column + param_token.to_manifest.length
112
- this_arrow_column += 1 if param_token.type != :INDENT
113
- end
114
-
115
- arrow_column[level_idx] = this_arrow_column if arrow_column[level_idx] < this_arrow_column
116
-
117
- (level_tokens[level_idx] ||= []) << token
118
- elsif token.prev_token.type == :LPAREN
119
- level_idx += 1
120
- arrow_column << 0
121
- level_tokens[level_idx] ||= []
122
- param_column << nil
123
- elsif token.next_token.type == :RPAREN
124
- if (level_tokens[level_idx] ||= []).map(&:line).uniq.length > 1
125
- level_tokens[level_idx].each do |arrow_tok|
126
- next if arrow_tok.column == arrow_column[level_idx] || level_tokens[level_idx].size == 1
127
-
128
- arrows_on_line = level_tokens[level_idx].select { |t| t.line == arrow_tok.line }
129
- notify(
130
- :warning,
131
- message: "indentation of #{character} is not properly aligned (expected in column #{arrow_column[level_idx]}, but found it in column #{arrow_tok.column})",
132
- line: arrow_tok.line,
133
- column: arrow_tok.column,
134
- token: arrow_tok,
135
- arrow_column: arrow_column[level_idx],
136
- newline: arrows_on_line.index(arrow_tok) != 0,
137
- newline_indent: param_column[level_idx] - 1
138
- )
139
- end
140
- end
141
- arrow_column[level_idx] = 0
142
- level_tokens[level_idx].clear
143
- param_column[level_idx] = nil
144
- level_idx -= 1
145
- end
146
- end
147
- end
148
- end
149
-
150
- # This function is copied & modified from puppet-lint arrow_alignment fix
151
- # https://github.com/puppetlabs/puppet-lint/blob/020143b705b023946739eb44e7c7d99fcd087527/lib/puppet-lint/plugins/check_whitespace/arrow_alignment.rb#L94
152
- def fix_for(problem)
153
- if problem[:newline]
154
- index = tokens.index(problem[:token].prev_code_token.prev_token)
155
-
156
- # insert newline
157
- tokens.insert(index, PuppetLint::Lexer::Token.new(:NEWLINE, "\n", 0, 0))
158
-
159
- # indent the parameter to the correct depth
160
- problem[:token].prev_code_token.prev_token.type = :INDENT
161
- problem[:token].prev_code_token.prev_token.value = ' ' * problem[:newline_indent]
162
-
163
- end_param_idx = tokens.index(problem[:token].prev_code_token)
164
- start_param_idx = tokens.index(problem[:token].prev_token_of(%i[INDENT NEWLINE]))
165
- param_length = tokens[start_param_idx..end_param_idx].map do |r|
166
- r.to_manifest.length
167
- end.reduce(0) { |sum, x| sum + x } + 1
168
- new_ws_len = problem[:arrow_column] - param_length
169
- else
170
- new_ws_len = if problem[:token].prev_token.type == :WHITESPACE
171
- problem[:token].prev_token.to_manifest.length
172
- else
173
- 0
174
- end
175
- new_ws_len += (problem[:arrow_column] - problem[:token].column)
176
- end
177
-
178
- if new_ws_len.negative?
179
- raise PuppetLint::NoFix if problem[:token].prev_token.type != :INDENT
180
-
181
- new_ws = problem[:token].prev_token.to_manifest[0...new_ws_len]
182
- problem[:token].prev_token.value = new_ws
183
- else
184
- new_ws = ' ' * new_ws_len
185
-
186
- if problem[:token].prev_token.type == :WHITESPACE
187
- problem[:token].prev_token.value = new_ws
188
- else
189
- index = tokens.index(problem[:token].prev_token)
190
- tokens.insert(index + 1, PuppetLint::Lexer::Token.new(:WHITESPACE, new_ws, 0, 0))
191
- end
192
- end
193
- end
194
-
195
- PuppetLint.new_check(:class_params_alignment) do
196
- def check
197
- check_for('$')
198
- end
199
-
200
- def fix(problem)
201
- fix_for(problem)
202
- end
203
- end
204
-
205
- PuppetLint.new_check(:class_equals_alignment) do
206
- def check
207
- check_for('=')
208
- end
209
-
210
- def fix(problem)
211
- fix_for(problem)
212
- end
213
- end