reviewer 0.1.5 → 1.0.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/FUNDING.yml +3 -0
- data/.github/workflows/main.yml +79 -11
- data/.github/workflows/release.yml +98 -0
- data/.gitignore +1 -1
- data/.inch.yml +3 -1
- data/.reek.yml +175 -0
- data/.reviewer.example.yml +7 -2
- data/.reviewer.yml +166 -40
- data/.rubocop.yml +34 -2
- data/CHANGELOG.md +42 -2
- data/Gemfile +39 -1
- data/Gemfile.lock +291 -70
- data/LICENSE.txt +20 -4
- data/README.md +310 -21
- data/RELEASING.md +190 -0
- data/Rakefile +117 -0
- data/dependency_decisions.yml +61 -0
- data/exe/fmt +1 -1
- data/exe/rvw +1 -1
- data/lib/reviewer/arguments/files.rb +47 -20
- data/lib/reviewer/arguments/keywords.rb +34 -41
- data/lib/reviewer/arguments/tags.rb +11 -11
- data/lib/reviewer/arguments.rb +100 -29
- data/lib/reviewer/batch/formatter.rb +87 -0
- data/lib/reviewer/batch.rb +32 -48
- data/lib/reviewer/capabilities.rb +81 -0
- data/lib/reviewer/command/string/env.rb +12 -6
- data/lib/reviewer/command/string/flags.rb +2 -4
- data/lib/reviewer/command/string.rb +47 -12
- data/lib/reviewer/command.rb +65 -10
- data/lib/reviewer/configuration/loader.rb +70 -0
- data/lib/reviewer/configuration.rb +6 -3
- data/lib/reviewer/context.rb +15 -0
- data/lib/reviewer/doctor/config_check.rb +46 -0
- data/lib/reviewer/doctor/environment_check.rb +58 -0
- data/lib/reviewer/doctor/formatter.rb +75 -0
- data/lib/reviewer/doctor/keyword_check.rb +85 -0
- data/lib/reviewer/doctor/opportunity_check.rb +88 -0
- data/lib/reviewer/doctor/report.rb +63 -0
- data/lib/reviewer/doctor/tool_inventory.rb +41 -0
- data/lib/reviewer/doctor.rb +28 -0
- data/lib/reviewer/history.rb +10 -17
- data/lib/reviewer/output/formatting.rb +40 -0
- data/lib/reviewer/output/printer.rb +70 -9
- data/lib/reviewer/output.rb +37 -78
- data/lib/reviewer/prompt.rb +38 -0
- data/lib/reviewer/report/formatter.rb +124 -0
- data/lib/reviewer/report.rb +100 -0
- data/lib/reviewer/runner/failed_files.rb +66 -0
- data/lib/reviewer/runner/formatter.rb +103 -0
- data/lib/reviewer/runner/guidance.rb +79 -0
- data/lib/reviewer/runner/result.rb +150 -0
- data/lib/reviewer/runner/strategies/captured.rb +98 -23
- data/lib/reviewer/runner/strategies/passthrough.rb +2 -11
- data/lib/reviewer/runner.rb +126 -40
- data/lib/reviewer/session/formatter.rb +87 -0
- data/lib/reviewer/session.rb +208 -0
- data/lib/reviewer/setup/catalog.rb +233 -0
- data/lib/reviewer/setup/detector.rb +61 -0
- data/lib/reviewer/setup/formatter.rb +94 -0
- data/lib/reviewer/setup/gemfile_lock.rb +55 -0
- data/lib/reviewer/setup/generator.rb +54 -0
- data/lib/reviewer/setup/tool_block.rb +112 -0
- data/lib/reviewer/setup.rb +41 -0
- data/lib/reviewer/shell/result.rb +14 -15
- data/lib/reviewer/shell/timer.rb +40 -35
- data/lib/reviewer/shell.rb +41 -12
- data/lib/reviewer/tool/conversions.rb +20 -0
- data/lib/reviewer/tool/file_resolver.rb +54 -0
- data/lib/reviewer/tool/settings.rb +88 -44
- data/lib/reviewer/tool/test_file_mapper.rb +73 -0
- data/lib/reviewer/tool/timing.rb +78 -0
- data/lib/reviewer/tool.rb +88 -69
- data/lib/reviewer/tools.rb +47 -33
- data/lib/reviewer/version.rb +1 -1
- data/lib/reviewer.rb +109 -50
- data/reviewer.gemspec +16 -19
- metadata +101 -142
- data/lib/reviewer/conversions.rb +0 -16
- data/lib/reviewer/guidance.rb +0 -77
- data/lib/reviewer/keywords/git/staged.rb +0 -64
- data/lib/reviewer/keywords/git.rb +0 -14
- data/lib/reviewer/keywords.rb +0 -9
- data/lib/reviewer/loader.rb +0 -59
- data/lib/reviewer/output/scrubber.rb +0 -48
- data/lib/reviewer/output/token.rb +0 -85
metadata
CHANGED
|
@@ -1,240 +1,171 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: reviewer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Garrett Dimon
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
13
|
+
name: benchmark
|
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
|
16
15
|
requirements:
|
|
17
|
-
- - "
|
|
16
|
+
- - "~>"
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0'
|
|
18
|
+
version: '0.5'
|
|
20
19
|
type: :runtime
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
|
-
- - "
|
|
23
|
+
- - "~>"
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0'
|
|
25
|
+
version: '0.5'
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
27
|
+
name: pstore
|
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
|
30
29
|
requirements:
|
|
31
|
-
- - "
|
|
30
|
+
- - "~>"
|
|
32
31
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
32
|
+
version: '0.2'
|
|
34
33
|
type: :runtime
|
|
35
34
|
prerelease: false
|
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
36
|
requirements:
|
|
38
|
-
- - "
|
|
37
|
+
- - "~>"
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
39
|
+
version: '0.2'
|
|
41
40
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: codecov
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: flay
|
|
41
|
+
name: rainbow
|
|
71
42
|
requirement: !ruby/object:Gem::Requirement
|
|
72
43
|
requirements:
|
|
73
|
-
- - "
|
|
44
|
+
- - "~>"
|
|
74
45
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '
|
|
76
|
-
type: :
|
|
46
|
+
version: '3.1'
|
|
47
|
+
type: :runtime
|
|
77
48
|
prerelease: false
|
|
78
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
50
|
requirements:
|
|
80
|
-
- - "
|
|
51
|
+
- - "~>"
|
|
81
52
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '
|
|
53
|
+
version: '3.1'
|
|
83
54
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
55
|
+
name: ruby-progressbar
|
|
85
56
|
requirement: !ruby/object:Gem::Requirement
|
|
86
57
|
requirements:
|
|
87
|
-
- - "
|
|
58
|
+
- - "~>"
|
|
88
59
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
90
|
-
type: :
|
|
60
|
+
version: '1.13'
|
|
61
|
+
type: :runtime
|
|
91
62
|
prerelease: false
|
|
92
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
64
|
requirements:
|
|
94
|
-
- - "
|
|
65
|
+
- - "~>"
|
|
95
66
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '
|
|
67
|
+
version: '1.13'
|
|
97
68
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
69
|
+
name: slop
|
|
99
70
|
requirement: !ruby/object:Gem::Requirement
|
|
100
71
|
requirements:
|
|
101
|
-
- - "
|
|
72
|
+
- - "~>"
|
|
102
73
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '
|
|
104
|
-
type: :
|
|
74
|
+
version: '4.10'
|
|
75
|
+
type: :runtime
|
|
105
76
|
prerelease: false
|
|
106
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
78
|
requirements:
|
|
108
|
-
- - "
|
|
79
|
+
- - "~>"
|
|
109
80
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '
|
|
81
|
+
version: '4.10'
|
|
111
82
|
- !ruby/object:Gem::Dependency
|
|
112
83
|
name: minitest
|
|
113
84
|
requirement: !ruby/object:Gem::Requirement
|
|
114
85
|
requirements:
|
|
115
|
-
- - "
|
|
86
|
+
- - "~>"
|
|
116
87
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '
|
|
88
|
+
version: '5.27'
|
|
118
89
|
type: :development
|
|
119
90
|
prerelease: false
|
|
120
91
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
92
|
requirements:
|
|
122
|
-
- - "
|
|
93
|
+
- - "~>"
|
|
123
94
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: '
|
|
95
|
+
version: '5.27'
|
|
125
96
|
- !ruby/object:Gem::Dependency
|
|
126
97
|
name: minitest-heat
|
|
127
98
|
requirement: !ruby/object:Gem::Requirement
|
|
128
99
|
requirements:
|
|
129
|
-
- - "
|
|
100
|
+
- - "~>"
|
|
130
101
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: '
|
|
102
|
+
version: '2.1'
|
|
132
103
|
type: :development
|
|
133
104
|
prerelease: false
|
|
134
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
106
|
requirements:
|
|
136
|
-
- - "
|
|
107
|
+
- - "~>"
|
|
137
108
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: '
|
|
109
|
+
version: '2.1'
|
|
139
110
|
- !ruby/object:Gem::Dependency
|
|
140
|
-
name:
|
|
111
|
+
name: rdoc
|
|
141
112
|
requirement: !ruby/object:Gem::Requirement
|
|
142
113
|
requirements:
|
|
143
|
-
- - "
|
|
114
|
+
- - "~>"
|
|
144
115
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: '
|
|
116
|
+
version: '7.1'
|
|
146
117
|
type: :development
|
|
147
118
|
prerelease: false
|
|
148
119
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
120
|
requirements:
|
|
150
|
-
- - "
|
|
121
|
+
- - "~>"
|
|
151
122
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: '
|
|
123
|
+
version: '7.1'
|
|
153
124
|
- !ruby/object:Gem::Dependency
|
|
154
|
-
name:
|
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
|
156
|
-
requirements:
|
|
157
|
-
- - ">="
|
|
158
|
-
- !ruby/object:Gem::Version
|
|
159
|
-
version: '0'
|
|
160
|
-
type: :development
|
|
161
|
-
prerelease: false
|
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
-
requirements:
|
|
164
|
-
- - ">="
|
|
165
|
-
- !ruby/object:Gem::Version
|
|
166
|
-
version: '0'
|
|
167
|
-
- !ruby/object:Gem::Dependency
|
|
168
|
-
name: rubocop
|
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
|
170
|
-
requirements:
|
|
171
|
-
- - ">="
|
|
172
|
-
- !ruby/object:Gem::Version
|
|
173
|
-
version: '0'
|
|
174
|
-
type: :development
|
|
175
|
-
prerelease: false
|
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
-
requirements:
|
|
178
|
-
- - ">="
|
|
179
|
-
- !ruby/object:Gem::Version
|
|
180
|
-
version: '0'
|
|
181
|
-
- !ruby/object:Gem::Dependency
|
|
182
|
-
name: rubocop-minitest
|
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
|
184
|
-
requirements:
|
|
185
|
-
- - ">="
|
|
186
|
-
- !ruby/object:Gem::Version
|
|
187
|
-
version: '0'
|
|
188
|
-
type: :development
|
|
189
|
-
prerelease: false
|
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
191
|
-
requirements:
|
|
192
|
-
- - ">="
|
|
193
|
-
- !ruby/object:Gem::Version
|
|
194
|
-
version: '0'
|
|
195
|
-
- !ruby/object:Gem::Dependency
|
|
196
|
-
name: rubocop-rake
|
|
125
|
+
name: simplecov
|
|
197
126
|
requirement: !ruby/object:Gem::Requirement
|
|
198
127
|
requirements:
|
|
199
|
-
- - "
|
|
128
|
+
- - "~>"
|
|
200
129
|
- !ruby/object:Gem::Version
|
|
201
|
-
version: '0'
|
|
130
|
+
version: '0.22'
|
|
202
131
|
type: :development
|
|
203
132
|
prerelease: false
|
|
204
133
|
version_requirements: !ruby/object:Gem::Requirement
|
|
205
134
|
requirements:
|
|
206
|
-
- - "
|
|
135
|
+
- - "~>"
|
|
207
136
|
- !ruby/object:Gem::Version
|
|
208
|
-
version: '0'
|
|
137
|
+
version: '0.22'
|
|
209
138
|
- !ruby/object:Gem::Dependency
|
|
210
|
-
name:
|
|
139
|
+
name: simplecov_json_formatter
|
|
211
140
|
requirement: !ruby/object:Gem::Requirement
|
|
212
141
|
requirements:
|
|
213
|
-
- - "
|
|
142
|
+
- - "~>"
|
|
214
143
|
- !ruby/object:Gem::Version
|
|
215
|
-
version: '0'
|
|
144
|
+
version: '0.1'
|
|
216
145
|
type: :development
|
|
217
146
|
prerelease: false
|
|
218
147
|
version_requirements: !ruby/object:Gem::Requirement
|
|
219
148
|
requirements:
|
|
220
|
-
- - "
|
|
149
|
+
- - "~>"
|
|
221
150
|
- !ruby/object:Gem::Version
|
|
222
|
-
version: '0'
|
|
151
|
+
version: '0.1'
|
|
223
152
|
- !ruby/object:Gem::Dependency
|
|
224
153
|
name: yard
|
|
225
154
|
requirement: !ruby/object:Gem::Requirement
|
|
226
155
|
requirements:
|
|
227
|
-
- - "
|
|
156
|
+
- - "~>"
|
|
228
157
|
- !ruby/object:Gem::Version
|
|
229
|
-
version: '0'
|
|
158
|
+
version: '0.9'
|
|
230
159
|
type: :development
|
|
231
160
|
prerelease: false
|
|
232
161
|
version_requirements: !ruby/object:Gem::Requirement
|
|
233
162
|
requirements:
|
|
234
|
-
- - "
|
|
163
|
+
- - "~>"
|
|
235
164
|
- !ruby/object:Gem::Version
|
|
236
|
-
version: '0'
|
|
237
|
-
description:
|
|
165
|
+
version: '0.9'
|
|
166
|
+
description: Run tests, linters, security audits, and formatters with a single command.
|
|
167
|
+
Reviewer wraps your code quality tools into a consistent interface with git-aware
|
|
168
|
+
file targeting, auto-detection, and multiple output formats.
|
|
238
169
|
email:
|
|
239
170
|
- email@garrettdimon.com
|
|
240
171
|
executables:
|
|
@@ -245,9 +176,12 @@ extra_rdoc_files: []
|
|
|
245
176
|
files:
|
|
246
177
|
- ".alexignore"
|
|
247
178
|
- ".flayignore"
|
|
179
|
+
- ".github/FUNDING.yml"
|
|
248
180
|
- ".github/workflows/main.yml"
|
|
181
|
+
- ".github/workflows/release.yml"
|
|
249
182
|
- ".gitignore"
|
|
250
183
|
- ".inch.yml"
|
|
184
|
+
- ".reek.yml"
|
|
251
185
|
- ".reviewer.example.yml"
|
|
252
186
|
- ".reviewer.future.yml"
|
|
253
187
|
- ".reviewer.yml"
|
|
@@ -259,9 +193,11 @@ files:
|
|
|
259
193
|
- Gemfile.lock
|
|
260
194
|
- LICENSE.txt
|
|
261
195
|
- README.md
|
|
196
|
+
- RELEASING.md
|
|
262
197
|
- Rakefile
|
|
263
198
|
- bin/console
|
|
264
199
|
- bin/setup
|
|
200
|
+
- dependency_decisions.yml
|
|
265
201
|
- exe/fmt
|
|
266
202
|
- exe/rvw
|
|
267
203
|
- lib/reviewer.rb
|
|
@@ -270,30 +206,55 @@ files:
|
|
|
270
206
|
- lib/reviewer/arguments/keywords.rb
|
|
271
207
|
- lib/reviewer/arguments/tags.rb
|
|
272
208
|
- lib/reviewer/batch.rb
|
|
209
|
+
- lib/reviewer/batch/formatter.rb
|
|
210
|
+
- lib/reviewer/capabilities.rb
|
|
273
211
|
- lib/reviewer/command.rb
|
|
274
212
|
- lib/reviewer/command/string.rb
|
|
275
213
|
- lib/reviewer/command/string/env.rb
|
|
276
214
|
- lib/reviewer/command/string/flags.rb
|
|
277
215
|
- lib/reviewer/configuration.rb
|
|
278
|
-
- lib/reviewer/
|
|
279
|
-
- lib/reviewer/
|
|
216
|
+
- lib/reviewer/configuration/loader.rb
|
|
217
|
+
- lib/reviewer/context.rb
|
|
218
|
+
- lib/reviewer/doctor.rb
|
|
219
|
+
- lib/reviewer/doctor/config_check.rb
|
|
220
|
+
- lib/reviewer/doctor/environment_check.rb
|
|
221
|
+
- lib/reviewer/doctor/formatter.rb
|
|
222
|
+
- lib/reviewer/doctor/keyword_check.rb
|
|
223
|
+
- lib/reviewer/doctor/opportunity_check.rb
|
|
224
|
+
- lib/reviewer/doctor/report.rb
|
|
225
|
+
- lib/reviewer/doctor/tool_inventory.rb
|
|
280
226
|
- lib/reviewer/history.rb
|
|
281
|
-
- lib/reviewer/keywords.rb
|
|
282
|
-
- lib/reviewer/keywords/git.rb
|
|
283
|
-
- lib/reviewer/keywords/git/staged.rb
|
|
284
|
-
- lib/reviewer/loader.rb
|
|
285
227
|
- lib/reviewer/output.rb
|
|
228
|
+
- lib/reviewer/output/formatting.rb
|
|
286
229
|
- lib/reviewer/output/printer.rb
|
|
287
|
-
- lib/reviewer/
|
|
288
|
-
- lib/reviewer/
|
|
230
|
+
- lib/reviewer/prompt.rb
|
|
231
|
+
- lib/reviewer/report.rb
|
|
232
|
+
- lib/reviewer/report/formatter.rb
|
|
289
233
|
- lib/reviewer/runner.rb
|
|
234
|
+
- lib/reviewer/runner/failed_files.rb
|
|
235
|
+
- lib/reviewer/runner/formatter.rb
|
|
236
|
+
- lib/reviewer/runner/guidance.rb
|
|
237
|
+
- lib/reviewer/runner/result.rb
|
|
290
238
|
- lib/reviewer/runner/strategies/captured.rb
|
|
291
239
|
- lib/reviewer/runner/strategies/passthrough.rb
|
|
240
|
+
- lib/reviewer/session.rb
|
|
241
|
+
- lib/reviewer/session/formatter.rb
|
|
242
|
+
- lib/reviewer/setup.rb
|
|
243
|
+
- lib/reviewer/setup/catalog.rb
|
|
244
|
+
- lib/reviewer/setup/detector.rb
|
|
245
|
+
- lib/reviewer/setup/formatter.rb
|
|
246
|
+
- lib/reviewer/setup/gemfile_lock.rb
|
|
247
|
+
- lib/reviewer/setup/generator.rb
|
|
248
|
+
- lib/reviewer/setup/tool_block.rb
|
|
292
249
|
- lib/reviewer/shell.rb
|
|
293
250
|
- lib/reviewer/shell/result.rb
|
|
294
251
|
- lib/reviewer/shell/timer.rb
|
|
295
252
|
- lib/reviewer/tool.rb
|
|
253
|
+
- lib/reviewer/tool/conversions.rb
|
|
254
|
+
- lib/reviewer/tool/file_resolver.rb
|
|
296
255
|
- lib/reviewer/tool/settings.rb
|
|
256
|
+
- lib/reviewer/tool/test_file_mapper.rb
|
|
257
|
+
- lib/reviewer/tool/timing.rb
|
|
297
258
|
- lib/reviewer/tools.rb
|
|
298
259
|
- lib/reviewer/version.rb
|
|
299
260
|
- reviewer.gemspec
|
|
@@ -309,7 +270,6 @@ metadata:
|
|
|
309
270
|
source_code_uri: https://github.com/garrettdimon/reviewer
|
|
310
271
|
wiki_uri: https://github.com/garrettdimon/reviewer/wiki
|
|
311
272
|
rubygems_mfa_required: 'true'
|
|
312
|
-
post_install_message:
|
|
313
273
|
rdoc_options: []
|
|
314
274
|
require_paths:
|
|
315
275
|
- lib
|
|
@@ -317,15 +277,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
317
277
|
requirements:
|
|
318
278
|
- - ">="
|
|
319
279
|
- !ruby/object:Gem::Version
|
|
320
|
-
version: 2
|
|
280
|
+
version: '3.2'
|
|
321
281
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
322
282
|
requirements:
|
|
323
283
|
- - ">="
|
|
324
284
|
- !ruby/object:Gem::Version
|
|
325
285
|
version: '0'
|
|
326
286
|
requirements: []
|
|
327
|
-
rubygems_version: 3.
|
|
328
|
-
signing_key:
|
|
287
|
+
rubygems_version: 3.6.9
|
|
329
288
|
specification_version: 4
|
|
330
|
-
summary:
|
|
289
|
+
summary: Frictionless code quality. One command for all your review tools.
|
|
331
290
|
test_files: []
|
data/lib/reviewer/conversions.rb
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Reviewer
|
|
4
|
-
# Conversion functions for special types in Reviewer
|
|
5
|
-
module Conversions
|
|
6
|
-
def Tool(value) # rubocop:disable Naming/MethodName
|
|
7
|
-
case value
|
|
8
|
-
when Tool then value
|
|
9
|
-
when Symbol then Tool.new(value)
|
|
10
|
-
when String then Tool.new(value.to_sym)
|
|
11
|
-
else raise TypeError, "Cannot convert #{value} to Tool"
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
module_function :Tool
|
|
15
|
-
end
|
|
16
|
-
end
|
data/lib/reviewer/guidance.rb
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'yaml/store'
|
|
4
|
-
|
|
5
|
-
module Reviewer
|
|
6
|
-
# Handles the logic around what to display after a command has been run
|
|
7
|
-
class Guidance
|
|
8
|
-
attr_reader :command, :result, :output
|
|
9
|
-
|
|
10
|
-
# Create an instance of guidance for suggesting recovery steps after errors
|
|
11
|
-
# @param command: [Command] the command that was run and needs recovery guidance
|
|
12
|
-
# @param result: [Result] the result of the command
|
|
13
|
-
# @param output: Reviewer.output [Output] the output channel for displaying content
|
|
14
|
-
#
|
|
15
|
-
# @return [Guidance] the guidance class to suggest relevant recovery steps
|
|
16
|
-
def initialize(command:, result:, output: Reviewer.output)
|
|
17
|
-
@command = command
|
|
18
|
-
@result = result
|
|
19
|
-
@output = output
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# Prints the relevant guidance based on the command and result context
|
|
23
|
-
#
|
|
24
|
-
# @return [void] prints the relevant guidance to the stream
|
|
25
|
-
def show
|
|
26
|
-
case result
|
|
27
|
-
when executable_not_found? then show_missing_executable_guidance
|
|
28
|
-
when cannot_execute? then show_unrecoverable_guidance
|
|
29
|
-
else show_syntax_guidance
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
private
|
|
34
|
-
|
|
35
|
-
# Conditional check for when the command result was that the executable couldn't be found
|
|
36
|
-
#
|
|
37
|
-
# @return [Boolean] true if the result indicates the command couldn't be found
|
|
38
|
-
def executable_not_found?
|
|
39
|
-
->(result) { result.executable_not_found? }
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
# Conditional check for when the command result was that it was unable to be executed
|
|
43
|
-
#
|
|
44
|
-
# @return [Boolean] true if the result indicates the command couldn't be executed
|
|
45
|
-
def cannot_execute?
|
|
46
|
-
->(result) { result.cannot_execute? }
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Shows the recovery guidance for when a command is missing
|
|
50
|
-
#
|
|
51
|
-
# @return [void] prints missing executable guidance
|
|
52
|
-
def show_missing_executable_guidance
|
|
53
|
-
tool = command.tool
|
|
54
|
-
installation_command = Command.new(tool, :install).string if tool.installable?
|
|
55
|
-
install_link = tool.install_link
|
|
56
|
-
|
|
57
|
-
output.failure("Missing executable for '#{tool}'", command: command)
|
|
58
|
-
output.guidance('Try installing the tool:', installation_command)
|
|
59
|
-
output.guidance('Read the installation guidance:', install_link)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# Shows the recovery guidance for when a command generates an unrecoverable error
|
|
63
|
-
#
|
|
64
|
-
# @return [void] prints unrecoverable error guidance
|
|
65
|
-
def show_unrecoverable_guidance
|
|
66
|
-
output.unrecoverable(result.stderr)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
# Shows suggestions for ignoring or disable rules when a command fails after reviewing code
|
|
70
|
-
#
|
|
71
|
-
# @return [void] prints syntax guidance
|
|
72
|
-
def show_syntax_guidance
|
|
73
|
-
output.guidance('Selectively Ignore a Rule:', command.tool.links[:ignore_syntax])
|
|
74
|
-
output.guidance('Fully Disable a Rule:', command.tool.links[:disable_syntax])
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Reviewer
|
|
4
|
-
module Keywords
|
|
5
|
-
module Git
|
|
6
|
-
# Provides a convenient interface to get the list of staged files via Git
|
|
7
|
-
class Staged
|
|
8
|
-
OPTIONS = [
|
|
9
|
-
'diff',
|
|
10
|
-
'--staged',
|
|
11
|
-
'--name-only'
|
|
12
|
-
].freeze
|
|
13
|
-
|
|
14
|
-
attr_reader :stdout, :stderr, :status, :exit_status
|
|
15
|
-
|
|
16
|
-
def to_a
|
|
17
|
-
stdout.strip.empty? ? [] : stdout.split("\n")
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# Gets the list of staged files
|
|
21
|
-
#
|
|
22
|
-
# @example Get the list of files
|
|
23
|
-
# staged.list #=> ['/Code/example.rb', '/Code/run.rb']
|
|
24
|
-
#
|
|
25
|
-
# @return [Array<String>] the array of staged filenames as strings
|
|
26
|
-
def list
|
|
27
|
-
@stdout, @stderr, @status = Open3.capture3(command)
|
|
28
|
-
@exit_status = @status.exitstatus.to_i
|
|
29
|
-
|
|
30
|
-
@status.success? ? to_a : raise_command_line_error
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# Convenience method for retrieving the list of staged files since there's no parameters
|
|
34
|
-
# for an initializer.
|
|
35
|
-
#
|
|
36
|
-
# @example Get the list of files
|
|
37
|
-
# Reviewer::Keywords::Git::Staged.list #=> ['/Code/example.rb', '/Code/run.rb']
|
|
38
|
-
#
|
|
39
|
-
# @return [Array<String>] the array of staged filenames as strings
|
|
40
|
-
def self.list
|
|
41
|
-
new.list
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# Assembles the pieces of the command that gets the list of staged files
|
|
45
|
-
#
|
|
46
|
-
# @return [String] the full command to run to retrieve the list of staged files
|
|
47
|
-
def command
|
|
48
|
-
command_parts.join(' ')
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
private
|
|
52
|
-
|
|
53
|
-
def raise_command_line_error
|
|
54
|
-
message = "Git Error: #{stderr} (#{command})"
|
|
55
|
-
raise SystemCallError.new(message, exit_status)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def command_parts
|
|
59
|
-
BASE_COMMAND + OPTIONS
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
data/lib/reviewer/keywords.rb
DELETED
data/lib/reviewer/loader.rb
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'yaml'
|
|
4
|
-
|
|
5
|
-
module Reviewer
|
|
6
|
-
# Provides a collection of the configured tools
|
|
7
|
-
class Loader
|
|
8
|
-
class MissingConfigurationError < StandardError; end
|
|
9
|
-
|
|
10
|
-
class InvalidConfigurationError < StandardError; end
|
|
11
|
-
|
|
12
|
-
class MissingReviewCommandError < StandardError; end
|
|
13
|
-
|
|
14
|
-
attr_reader :configuration, :file
|
|
15
|
-
|
|
16
|
-
def initialize(file = Reviewer.configuration.file)
|
|
17
|
-
@file = file
|
|
18
|
-
@configuration = configuration_hash
|
|
19
|
-
|
|
20
|
-
validate_configuration!
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def to_h
|
|
24
|
-
configuration
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def self.configuration
|
|
28
|
-
new.configuration
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
private
|
|
32
|
-
|
|
33
|
-
def validate_configuration!
|
|
34
|
-
# Any additional guidance for configuration issues will live here
|
|
35
|
-
require_review_commands!
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def require_review_commands!
|
|
39
|
-
configuration.each do |key, value|
|
|
40
|
-
commands = value[:commands]
|
|
41
|
-
|
|
42
|
-
next if commands.key?(:review)
|
|
43
|
-
|
|
44
|
-
# Ideally, folks would want to fill out everything to receive the most benefit,
|
|
45
|
-
# but realistically, the 'review' command is the only required value. If the key
|
|
46
|
-
# is missing, or maybe there was a typo, fail right away.
|
|
47
|
-
raise MissingReviewCommandError, "'#{key}' does not have a 'review' key under 'commands' in `#{file}`"
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def configuration_hash
|
|
52
|
-
@configuration_hash ||= Psych.safe_load_file(@file, symbolize_names: true)
|
|
53
|
-
rescue Errno::ENOENT
|
|
54
|
-
raise MissingConfigurationError, "Tools configuration file couldn't be found at `#{file}`"
|
|
55
|
-
rescue Psych::SyntaxError => e
|
|
56
|
-
raise InvalidConfigurationError, "Tools configuration file (#{file}) has a syntax error: #{e.message}"
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|