reviewer 0.1.1 → 0.1.5

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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.alexignore +1 -0
  3. data/.flayignore +1 -0
  4. data/.github/workflows/main.yml +14 -4
  5. data/.gitignore +5 -0
  6. data/.inch.yml +4 -0
  7. data/.reviewer.example.yml +63 -0
  8. data/.reviewer.future.yml +221 -0
  9. data/.reviewer.yml +140 -0
  10. data/.reviewer_stdout +0 -0
  11. data/.rubocop.yml +20 -0
  12. data/CHANGELOG.md +38 -3
  13. data/Gemfile +2 -4
  14. data/Gemfile.lock +103 -20
  15. data/LICENSE.txt +4 -20
  16. data/README.md +23 -29
  17. data/Rakefile +5 -5
  18. data/bin/console +4 -4
  19. data/exe/fmt +7 -0
  20. data/exe/rvw +7 -0
  21. data/lib/reviewer/arguments/files.rb +94 -0
  22. data/lib/reviewer/arguments/keywords.rb +133 -0
  23. data/lib/reviewer/arguments/tags.rb +71 -0
  24. data/lib/reviewer/arguments.rb +54 -10
  25. data/lib/reviewer/batch.rb +91 -0
  26. data/lib/reviewer/command/string/env.rb +44 -0
  27. data/lib/reviewer/command/string/flags.rb +51 -0
  28. data/lib/reviewer/command/string.rb +66 -0
  29. data/lib/reviewer/command.rb +75 -0
  30. data/lib/reviewer/configuration.rb +32 -7
  31. data/lib/reviewer/conversions.rb +16 -0
  32. data/lib/reviewer/guidance.rb +77 -0
  33. data/lib/reviewer/history.rb +69 -0
  34. data/lib/reviewer/keywords/git/staged.rb +64 -0
  35. data/lib/reviewer/keywords/git.rb +14 -0
  36. data/lib/reviewer/keywords.rb +9 -0
  37. data/lib/reviewer/loader.rb +36 -9
  38. data/lib/reviewer/output/printer.rb +44 -0
  39. data/lib/reviewer/output/scrubber.rb +48 -0
  40. data/lib/reviewer/output/token.rb +85 -0
  41. data/lib/reviewer/output.rb +122 -0
  42. data/lib/reviewer/runner/strategies/captured.rb +157 -0
  43. data/lib/reviewer/runner/strategies/passthrough.rb +63 -0
  44. data/lib/reviewer/runner.rb +131 -0
  45. data/lib/reviewer/shell/result.rb +84 -0
  46. data/lib/reviewer/shell/timer.rb +72 -0
  47. data/lib/reviewer/shell.rb +54 -0
  48. data/lib/reviewer/tool/settings.rb +38 -19
  49. data/lib/reviewer/tool.rb +137 -23
  50. data/lib/reviewer/tools.rb +87 -8
  51. data/lib/reviewer/version.rb +1 -1
  52. data/lib/reviewer.rb +107 -28
  53. data/reviewer.gemspec +34 -19
  54. data/structure.svg +1 -0
  55. metadata +244 -12
  56. data/bin/review +0 -5
  57. data/lib/reviewer/tool/command.rb +0 -78
  58. data/lib/reviewer/tool/env.rb +0 -39
  59. data/lib/reviewer/tool/flags.rb +0 -39
  60. data/lib/reviewer/tool/verbosity.rb +0 -39
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a5df0f3247eb105862f40b5092bb3c3b25fa20e87e155cb283fc2fd278933987
4
- data.tar.gz: 06716646a5f980c5d67f89abc4ab4938977c2dd2691101d8cdd924f4481599cf
3
+ metadata.gz: 4269dc4784c9a22232bd47db41cff0bf7d57b023ee50dc5fc455a650fb138b2a
4
+ data.tar.gz: 73d9261188abd69db6aa23aa7db6f76a59696b1dac3e35eb1a5615e013b40354
5
5
  SHA512:
6
- metadata.gz: 57ca3df253ec35a5544f9a2145733c535688f8be8f0ed6820973563f758563e08a6f3aa729e8743be49945d931cc63a27a21a75e4512d2f9855f1ecad055a9ac
7
- data.tar.gz: 5b06953f74f63aff8410b27470a37044d764b87b07289554d0ddc3581575d8a6849603a78f656d392273ac6e4d3d358acd91a84cae49a7d49fd427800536d5cb
6
+ metadata.gz: 66894ea63a67d4964e93a5ab83ce92b95e0757d38af05a1587e136d0cc2d61fcf146d2c30534ce3f58aa4f08ed406e328ecad1293a617df73b2d1167c6146782
7
+ data.tar.gz: 0614f40cbd184e0e20aad58a8f4c320af3a5db358078cecdfac236047a0c85060b15b7dccbade7c599c4ebc030ea0eb4348d239fbbf3f25a48079f6f3a0464f7
data/.alexignore ADDED
@@ -0,0 +1 @@
1
+ CODE_OF_CONDUCT.md
data/.flayignore ADDED
@@ -0,0 +1 @@
1
+ ./test/**/*.rb
@@ -1,16 +1,26 @@
1
- name: Ruby
1
+ name: Review
2
2
 
3
3
  on: [push,pull_request]
4
4
 
5
+ env:
6
+ CI: true
7
+
5
8
  jobs:
6
9
  build:
10
+ strategy:
11
+ matrix:
12
+ ruby: [2.5.9, 2.6.9, 2.7.5, 3.0.3]
7
13
  runs-on: ubuntu-latest
8
14
  steps:
9
15
  - uses: actions/checkout@v2
10
16
  - name: Set up Ruby
11
17
  uses: ruby/setup-ruby@v1
12
18
  with:
13
- ruby-version: 2.6.6
19
+ ruby-version: ${{ matrix.ruby }}
14
20
  bundler-cache: true
15
- - name: Run the default task
16
- run: bundle exec rake
21
+ - name: Bundle Audit
22
+ run: bundle exec ./exe/rvw bundle_audit
23
+ - name: Test Review
24
+ run: bundle exec ./exe/rvw tests
25
+ - name: Multiple Command Review
26
+ run: bundle exec ./exe/rvw bundle_audit tests
data/.gitignore CHANGED
@@ -6,3 +6,8 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /rubocop_cache/
10
+ .reviewer_history.yml
11
+ .reviewer_history_test.yml
12
+ coverage
13
+ Gemfile.lock
data/.inch.yml ADDED
@@ -0,0 +1,4 @@
1
+ files:
2
+ # define files included in the analysis (defaults to ["{app,lib}/**/*.rb"])
3
+ included:
4
+ - lib/**/*.rb
@@ -0,0 +1,63 @@
1
+ # Quick overview of the options configuration for command-line tools.
2
+ # It can be handy to leave this section in your configuration file as a convenient reference.
3
+ #
4
+ # <command_key>: // ex. 'rubocop', 'bundler-audit', etc.
5
+ # disabled: true // Optional. Tools are enabled by default
6
+ # name: // Optional. Will use the `command_key` if name isn't provided.
7
+ # description: // Optional. Serves as a handy reminder for the purpose of the command.
8
+ # tags: [ruby, dependencies] // Optional. Lets you run commands tagged with the same word.
9
+ # links:
10
+ # home: // Optional. A link to the home page for the tool.
11
+ # install: // Optional. A link to the installation instructions for the tool.
12
+ # usage: // Optional. A link to the general usage instructions for the tool.
13
+ # ignore_syntax: // Optional. A link to the syntax for ignoring some rules for small sections of code.
14
+ # disable_syntax: // Optional. A link to the syntax for disabling entire rules for a tool.
15
+ # commands:
16
+ # install: // Optional. Command to run to install the tool.
17
+ # prepare: // Optional. Command to run prior to the review phase. ex. 'bundle exec bundle-audit update'
18
+ # review: // Required. The only truly required field because this is the whole point.
19
+ # format: // Optional. Command to auto-update rule violations when possible.
20
+ # serve: // Optional. Command to start a local server with reports generated by the tool.
21
+ # generate: // Optional. Command to generate artifacts from the tool for viewing separately.
22
+ # max_exit_status: // Optional, defaults to 0. Some tools like Yarn Audit essentially won't return less than a 3. This specifies the threshold that's still considered passing.
23
+ # files:
24
+ # flag: // Optional, defaults to '' (empty string). The name of the flag used to pass subsets of files to the command.
25
+ # separator: // Optional, defaults to ' ' (single space). The character used to separate lists of files and directories.
26
+ # env: // Optional. A way to specify necessary environment variables for the tools commands. The key is the variable name, and the value is, well, the value.
27
+ # example_one: value // - The names will automatically be capitalized, so you can freely use lower-case here.
28
+ # example_one: value // - Reviewer is smart enough to handle string values with spaces and automatically quote them.
29
+ # flags: // Optional. A way to specify flags *only for the review command*. The key is the flag name, and the value is, well, the value.
30
+ # example_one: value // - Reviewer is smart enough to handle single-letter (-f) and multi-letter (--format) flags.
31
+ # example_two: value // - It's highly-recommended to use the longer-name format for flags when possible to serve as self-documentation.
32
+ # example_three: // - If the flag doesn't need or have a value, leaving it blank will translate it to a flag without a value.
33
+ # other: // Optional. A way to specify paramters that don't follow the standard flags conventions.
34
+ # description: value // - The key (ex. 'description') only serves as documentation and won't be used. Instead, the raw value will be applied
35
+
36
+
37
+ # In practice, a configuration block would look something like the block below.
38
+ tool-name-key:
39
+ disabled: true
40
+ name: Tool
41
+ description: A tool that finds issues and fixes code.
42
+ tags: [syntax, security]
43
+ links:
44
+ home: https://example.com
45
+ install: https://example.com/install
46
+ ignore_syntax: https://example.com/ignore
47
+ disable_syntax: https://example.com/disable
48
+ commands:
49
+ install: 'bundle install tool'
50
+ prepare: 'bundle exec tool update'
51
+ review: 'bundle exec tool'
52
+ format: 'bundle exec tool --format'
53
+ max_exit_status: 1
54
+ files:
55
+ flag: 'files'
56
+ separator: ','
57
+ env:
58
+ report: false
59
+ flags:
60
+ format: json
61
+ verbose:
62
+ other:
63
+ example: '--example | other'
@@ -0,0 +1,221 @@
1
+ # This represents the long-term vision for reviewer. It's a sort of documentation-driven design, but
2
+ # it's also heavily based on the initial exploration and iteration to determine what's possible and
3
+ # what's practical based on testing out a variety of command types and structures.
4
+
5
+ # Options for `rvw` command
6
+ # -c <file>, --config=<file>
7
+ # -f <file>,<file>..., --files=<file>,<file>...
8
+ # -t <tag>,<tag>..., --tags=<tag>,<tag>...
9
+ # -l <tool_key>,<tool_key>..., --tools=<tool_key>,<tool_key>...
10
+ # -c <command>, --command=<command>
11
+ # -k, --keywords
12
+ # -s, --settings
13
+ # -h, --help
14
+ # -v, --version
15
+ # <keyword>
16
+
17
+ # Implicit Keywords:
18
+ # - every <tag>
19
+ # - every <tool_key>
20
+ # - <tool_key>:settings
21
+ # - <tool_key>:links
22
+ # - every <tool_key>:<link>
23
+ # - <tool_key>:commands
24
+ # - every <tool_key>:<command>
25
+
26
+ # Reserved Keywords:
27
+ # - every link type
28
+ # - every command type
29
+ # - staged // currently staged git files
30
+ # - untracked // currently untracked git files
31
+ # - fresh // untracked files updated in last 5 minutes
32
+ # - fresh_15 // ... 15 minutes
33
+ # - fresh_30 // ... 30 minutes
34
+ # - fresh_60 // ... 60 minutes
35
+ # - stale // untracked files updated more than 5 minutes ago
36
+ # - stale_15 // ... 15 minutes
37
+ # - stale_30 // ... 30 minutes
38
+ # - stale_60 // ... 60 minutes
39
+ # - branch|diff // All files created or updated on the current branch
40
+ # - last_commit // All files created or updated in the last commit
41
+ # - current // alias for branch or diff?
42
+
43
+ # Command Examples:
44
+
45
+ # The Basics
46
+ # - rvw // runs :review command for all enabled tools
47
+ # - rvw <command> // runs <command> for all enabled tools (not disabled or solo)
48
+ # - rvw <keyword> // runs :review command for all enabled tools and translates the <keyword>
49
+ # - rvw <tag> // runs :review command for all enabled tools tagged with <tag>
50
+
51
+ # Tools
52
+ # - rvw <tool_key> // shortcut for `rvw <tool_key>:review`
53
+ # - rvw <tool_key>:<command> // runs <command> for <tool_key> in passthrough mode
54
+ # - rvw <tool_key>:<link> // opens the <link> via `open <link>` if present, otherwise, shares that it's not configured
55
+ # - rvw <tool_key>:settings // displays all settings for <tool_key>
56
+ # - rvw <tool_key>:commands // displays all configured commands for <tool_key>
57
+ # - rvw <tool_key>:links // displays all configured links for <tool_key>
58
+
59
+ # Combos
60
+ # - rvw <keyword> <tag> // ex. `rvw staged ruby` -> `rvw review staged ruby`
61
+ # - rvw <command> <tag> // ex. `rvw format ruby` -> `rvw format ruby`
62
+ # - rvw <command> <reserved_keyword> // ex. `rvw install ruby`
63
+ # - rvw <command> <reserved_keyword> <tag> // ex. `rvw format last_commit ruby`
64
+ # - rvw <command> <reserved_keyword> <tag> <tag> // ex. `rvw format last_commit ruby erb`
65
+
66
+ reviewer:
67
+ # Whether to run tools consecutively or in parallel if available
68
+ # :linear - It would suck if your first command is `bundle audit` and fails but 6 other tools
69
+ # are running in parallel but will take time to fail. So :linear with :stop as the behavior
70
+ # ensures you don't attepmt commands.
71
+ # :parallel - Reviewer will attempt to run commands on multiple threads/processors for more speed.
72
+ # Best used when groups of commands are not dependent on each other.
73
+ default_batch_mode: <:linear|:safe, :parallel|:fast>
74
+
75
+ # Fallback failure behavior for all commands where it isn't explicitly defined. Applies to
76
+ # linear runs independent of each other. So if you have two batches (ex. ruby, javascript), and
77
+ # one batch fails immediately, the remaining commands willn ot be run. But the other batch will
78
+ # safely continue independently.
79
+ # Optional. Defaults to :fast.
80
+ # :stop - Don't run any additional commands in that batch.
81
+ # :continue - Keep running the other commands.
82
+ default_command_failure_behavior_in_batch: <:stop, :continue>
83
+
84
+ # Fallback install behavior for all commands where it isn't explicitly defined.
85
+ # Maybe if the install command is present, `:auto` is implied?
86
+ # Optional. Defaults to :guidance.
87
+ # - :guidance shows the installation command and/or link for manual installation.
88
+ # - :auto attempts to automatically install if the command is missing
89
+ # - :skip quietly moves on without worrying about it
90
+ default_install_behavior: <:guidance, :auto, :skip>
91
+
92
+ # Fallback behavior for displaying results.
93
+ # Optional. Defaults to :full
94
+ # - :full - Re-run the command directly so you see the full output
95
+ # - :fast - Show the results, but potentially lose colorizing and some formatting
96
+ default_results_behavior: <:full, :fast, :timer>
97
+
98
+ # Fallback definition for determining whether a command is slow.
99
+ # Only used if :default_results_behavior is :timer
100
+ # Optional. Defaults to 10 seconds
101
+ default_slow_window: <integer seconds>
102
+
103
+ # Fallback defintion for determining whether a command needs to be prepped again.
104
+ # Optional. Defaults to 6 hours
105
+ default_prep_window: <integer hours>
106
+
107
+ # Primarily for debugging/improving performance of reviewer. But if low-level performance info is
108
+ # interesting, it can be enabled.
109
+ # Optional. Defaults to :min
110
+ # :min - Shows simply the total time for each command. Breaks out install/prep % if relevant.
111
+ timer_detail: <:min, :max>
112
+
113
+ # Custom-defined keywords for shortcuts
114
+ keywords:
115
+ # Compact version
116
+ mgc: 'format last_commit ruby erb'
117
+ # Long-form version of `mgc` (a little more self-documenting and explicit)
118
+ magic: '--command=format --keywords=last_commit --tags=ruby,erb'
119
+ # Long-form of `mgc` (most self-documentating and explicit)
120
+ magic:
121
+ - '--command=format'
122
+ - '--keywords=last_commit'
123
+ - '--tags=ruby,erb'
124
+
125
+ # The real core of the configuration for each individual tool.
126
+ tools:
127
+ <tool_key>: # Required. ex. 'rubocop', 'bundler-audit', etc.
128
+ status: <:enabled, :disabled, :solo> # Optional. Tools are enabled by default
129
+ name: # Optional. Defaults to <tool_key> capitalized
130
+ description: # Optional. Remind folks of the specific task this tool performs.
131
+ tags: [one, two, three] # Optional. For running groups of commands.
132
+ batch: # Optional. Only used if run in batch mode. ex. Run ruby commands on one thread and yarn commands on another.
133
+ install_behavior: <:auto, :guidance> # Optional. Defaults to Reviewer default.
134
+ failure_behavior: <:continue, :fast, :informative> # Optional
135
+ links:
136
+ home:
137
+ repo:
138
+ support:
139
+ install:
140
+ usage:
141
+ options:
142
+ syntax:
143
+ ignore:
144
+ disable:
145
+ files_syntax:
146
+ flag:
147
+ separator:
148
+ quotes:
149
+ shared_options: # Optional. Used for all commands.
150
+ prefix: 'bundle exec'
151
+ stale: <hours>
152
+ base: '<command>'
153
+ quiet: '--quiet'
154
+ max_exit_status:
155
+ flags:
156
+ <flag>: '<value>'
157
+ env:
158
+ <env_var>: '<value>'
159
+ raw:
160
+ - '<value>'
161
+ commands:
162
+ install:
163
+ desc:
164
+ stale:
165
+ prefix:
166
+ base:
167
+ quiet:
168
+ max_exit_status:
169
+ flags:
170
+ env:
171
+ raw:
172
+ prepare:
173
+ desc:
174
+ stale:
175
+ prefix:
176
+ base:
177
+ quiet:
178
+ max_exit_status:
179
+ flags:
180
+ env:
181
+ raw:
182
+ review:
183
+ desc:
184
+ stale:
185
+ prefix:
186
+ base:
187
+ quiet:
188
+ max_exit_status:
189
+ flags:
190
+ env:
191
+ raw:
192
+ format:
193
+ desc:
194
+ stale:
195
+ prefix:
196
+ base:
197
+ quiet:
198
+ max_exit_status:
199
+ flags:
200
+ env:
201
+ raw:
202
+ serve:
203
+ desc:
204
+ stale:
205
+ prefix:
206
+ base:
207
+ quiet:
208
+ max_exit_status:
209
+ flags:
210
+ env:
211
+ raw:
212
+ generate:
213
+ desc:
214
+ stale:
215
+ prefix:
216
+ base:
217
+ quiet:
218
+ max_exit_status:
219
+ flags:
220
+ env:
221
+ raw:
data/.reviewer.yml ADDED
@@ -0,0 +1,140 @@
1
+ bundle_audit:
2
+ name: Bundle Audit
3
+ description: Review Gem Dependencies for Security Issues
4
+ tags: [critical, dependencies, ruby, dev]
5
+ links:
6
+ home: https://github.com/rubysec/bundler-audit
7
+ install: https://github.com/rubysec/bundler-audit#install
8
+ commands:
9
+ install: 'bundle exec gem install bundler-audit'
10
+ prepare: 'bundle exec bundle-audit update'
11
+ review: 'bundle exec bundle-audit check --no-update'
12
+
13
+ tests:
14
+ name: Minitest
15
+ description: Unit Tests & Coverage
16
+ tags: [ruby, tests, dev]
17
+ links:
18
+ home:
19
+ commands:
20
+ review: "bundle exec rake"
21
+ reports:
22
+ open_on_fail: true
23
+ local_file: coverage/index.html
24
+ local_uri: 'file:///Users/garrettdimon/Code/reviewer/coverage/index.html#_AllFiles'
25
+ env:
26
+ testopts: --seed=$SEED
27
+ # coverage: false
28
+
29
+ reek:
30
+ name: Reek
31
+ description: Examine Ruby Classes for Code Smells
32
+ tags: [ruby, quality, dev]
33
+ links:
34
+ home: https://github.com/troessner/reek
35
+ install: https://github.com/troessner/reek#quickstart
36
+ commands:
37
+ install: 'bundle exec gem install reek'
38
+ review: 'bundle exec reek'
39
+ flags:
40
+ color:
41
+ documentation:
42
+
43
+ flog:
44
+ disabled: true # Flog provides guidance and is generally run solo
45
+ name: Flog
46
+ description: Reports your most tortured ruby code in an easy to read pain report.
47
+ tags: [ruby, quality, dev]
48
+ links:
49
+ home: https://ruby.sadi.st/Flog.html
50
+ install: https://ruby.sadi.st/Flog.html
51
+ commands:
52
+ install: 'bundle exec gem install flog'
53
+ review: 'bundle exec flog -g lib'
54
+ flags:
55
+ threshold: 10 # Percentage. i.e. Show the most concerning 10% of results
56
+ group:
57
+ methods-only:
58
+
59
+ flay:
60
+ disabled: true # Flay provides guidance and is generally run solo
61
+ name: Flay
62
+ description: Review ruby code for structural similarities and refactoring opportunities.
63
+ tags: [ruby, quality, dev]
64
+ links:
65
+ home: https://ruby.sadi.st/Flay.html
66
+ install: https://ruby.sadi.st/Flay.html
67
+ commands:
68
+ install: 'bundle exec gem install flay'
69
+ review: 'bundle exec flay ./lib'
70
+ flags:
71
+ liberal:
72
+ summary:
73
+
74
+
75
+ rubocop:
76
+ name: Rubocop
77
+ description: Review Ruby Syntax & Formatting for Consistency
78
+ tags: [ruby, syntax]
79
+ links:
80
+ home: https://rubocop.org
81
+ install: https://docs.rubocop.org/rubocop/1.13/installation.html
82
+ ignore_syntax: https://docs.rubocop.org/rubocop/configuration.html#ignoredmethods
83
+ disable_syntax: https://docs.rubocop.org/rubocop/configuration.html#disabling-cops-within-source-code
84
+ commands:
85
+ install: 'bundle exec gem install rubocop'
86
+ review: 'bundle exec rubocop --parallel'
87
+ format: 'bundle exec rubocop --auto-correct'
88
+ files:
89
+ flag: ''
90
+ separator: ' '
91
+ flags:
92
+ color:
93
+
94
+
95
+ # The YARD Parser can also come in handy:
96
+ # https://yardoc.org/types
97
+ inch:
98
+ disabled: true
99
+ tags: [docs, ruby, dev]
100
+ name: Inch
101
+ description: Review Ruby Documentation Quality
102
+ links:
103
+ home: https://rrrene.org/inch/
104
+ usage: https://www.rubydoc.info/gems/yard/file/docs/Tags.md
105
+ commands:
106
+ install: 'bundle exec gem install inch'
107
+ review: 'bundle exec inch'
108
+
109
+
110
+ yard:
111
+ disabled: true
112
+ tags: [docs, ruby, dev]
113
+ name: Yard
114
+ description: Generates Documentation
115
+ links:
116
+ home: https://yardoc.org
117
+ usage: https://www.rubydoc.info/gems/yard/file/docs/GettingStarted.md#using
118
+ install: https://github.com/lsegal/yard#installing
119
+ commands:
120
+ install: 'bundle exec gem install yard'
121
+ prepare: "yard doc 'lib/**/*.rb'"
122
+ review: 'yard stats'
123
+ serve: 'yard server --reload && open http://0.0.0.0:8808'
124
+ generate:
125
+ quiet_flag: '--quiet'
126
+
127
+
128
+ alex:
129
+ disabled: true
130
+ tags: [language, docs]
131
+ name: Yard
132
+ description: Generates Documentation
133
+ links:
134
+ home:
135
+ usage:
136
+ install:
137
+ commands:
138
+ install: 'yarn global add alex'
139
+ review: 'alex .'
140
+ quiet_flag: '--quiet'
data/.reviewer_stdout ADDED
Binary file
data/.rubocop.yml ADDED
@@ -0,0 +1,20 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.5
3
+ NewCops: enable
4
+ UseCache: true
5
+ CacheRootDirectory: './'
6
+ Exclude:
7
+ - 'bin/**/*'
8
+
9
+ # Let's aim for 80, but we don't need to be nagged if we judiciously go over.
10
+ Layout/LineLength:
11
+ Enabled: false
12
+
13
+ # One case statement in a single method isn't complex.
14
+ Metrics/CyclomaticComplexity:
15
+ IgnoredMethods: ['case']
16
+
17
+ # 10 is a good goal but a little draconian
18
+ Metrics/MethodLength:
19
+ CountAsOne: ['array', 'hash', 'heredoc']
20
+ Max: 15
data/CHANGELOG.md CHANGED
@@ -1,8 +1,43 @@
1
1
  ## [Unreleased]
2
2
 
3
- - TODO: Add Runner to handle timing, logging, and exit status
4
- - TODO: Add Targets to handle targeting specific files
5
- - TODO: Add support for Targets in Tool/Command generator
3
+ - TODO: Improve and streamline installation
4
+ - TODO: Add support for targeting specific files
5
+
6
+ ## [0.1.4] - 2021-07-08
7
+
8
+ On the surface, this release doesn't change much or provide drastically new functionality, but it begins to lay the foundation for something that could evolve in the long-term.
9
+
10
+ - Mostly refactoring to support the long-term vision
11
+ - Add Reek to dev dependencies
12
+ - Enable Inch in the default commands
13
+ - Reduce external dependencies
14
+ - Broaden official support Ruby 2.5.9, 2.6.8, 2.7.4, and 3.0.2
15
+ - Add more robust GitHub Actions integration
16
+ - Add Code Coverage via SimpleCov and set the bar at 100%
17
+ - Begin to expand documentation coverage
18
+ - Improve UX of results, timing, output, and error recovery guidance
19
+
20
+ ## [0.1.3] - 2021-07-07
21
+
22
+ The most significant update to how the core commands work and how the command-line arguments are handled. Most of the overall structure is starting to feel stable enough to begin documenting and adding comments.
23
+
24
+ - Commands are now `rvw` and `fmt`
25
+ - Adds command-line arguments support
26
+ - Adds support for specifying tags via the command-line
27
+ - Adds support for specifying files via the command-line
28
+ - Adds support for handling keywords via the command-line
29
+ - Improved configuration and loading
30
+ - Adds Tools class for more convenient filtering of tools based on arguments
31
+ - Begins the process of adding documentation comments
32
+
33
+ ## [0.1.2] - 2021-05-04
34
+
35
+ The bare minimum works now, but it's not quite there for day-to-day use. It works well enough that it's being used to review this project, but there's much more to do.
36
+
37
+ - Add Runner to wrap individual commands
38
+ - Add benchmark/timing to Runner
39
+ - Extract Logging to a dedicated class
40
+ - Intelligently handle non-zero exit statuses
6
41
 
7
42
  ## [0.1.1] - 2021-04-17
8
43
 
data/Gemfile CHANGED
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in reviewer.gemspec
6
6
  gemspec
7
7
 
8
- gem "rake", "~> 13.0"
9
-
10
- gem "minitest", "~> 5.0"
8
+ gem 'rake', '~> 13.0'