reviewer 0.1.4 → 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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.alexignore +1 -0
  3. data/.github/FUNDING.yml +3 -0
  4. data/.github/workflows/main.yml +81 -11
  5. data/.github/workflows/release.yml +98 -0
  6. data/.gitignore +1 -1
  7. data/.inch.yml +3 -1
  8. data/.reek.yml +175 -0
  9. data/.reviewer.example.yml +27 -12
  10. data/.reviewer.future.yml +221 -0
  11. data/.reviewer.yml +191 -28
  12. data/.reviewer_stdout +0 -0
  13. data/.rubocop.yml +34 -1
  14. data/CHANGELOG.md +42 -2
  15. data/Gemfile +39 -1
  16. data/Gemfile.lock +294 -72
  17. data/README.md +315 -7
  18. data/RELEASING.md +190 -0
  19. data/Rakefile +117 -0
  20. data/dependency_decisions.yml +61 -0
  21. data/exe/fmt +1 -1
  22. data/exe/rvw +1 -1
  23. data/lib/reviewer/arguments/files.rb +60 -27
  24. data/lib/reviewer/arguments/keywords.rb +39 -43
  25. data/lib/reviewer/arguments/tags.rb +21 -14
  26. data/lib/reviewer/arguments.rb +107 -29
  27. data/lib/reviewer/batch/formatter.rb +87 -0
  28. data/lib/reviewer/batch.rb +46 -35
  29. data/lib/reviewer/capabilities.rb +81 -0
  30. data/lib/reviewer/command/string/env.rb +16 -6
  31. data/lib/reviewer/command/string/flags.rb +14 -5
  32. data/lib/reviewer/command/string.rb +53 -24
  33. data/lib/reviewer/command.rb +69 -39
  34. data/lib/reviewer/configuration/loader.rb +70 -0
  35. data/lib/reviewer/configuration.rb +14 -4
  36. data/lib/reviewer/context.rb +15 -0
  37. data/lib/reviewer/doctor/config_check.rb +46 -0
  38. data/lib/reviewer/doctor/environment_check.rb +58 -0
  39. data/lib/reviewer/doctor/formatter.rb +75 -0
  40. data/lib/reviewer/doctor/keyword_check.rb +85 -0
  41. data/lib/reviewer/doctor/opportunity_check.rb +88 -0
  42. data/lib/reviewer/doctor/report.rb +63 -0
  43. data/lib/reviewer/doctor/tool_inventory.rb +41 -0
  44. data/lib/reviewer/doctor.rb +28 -0
  45. data/lib/reviewer/history.rb +36 -12
  46. data/lib/reviewer/output/formatting.rb +40 -0
  47. data/lib/reviewer/output/printer.rb +105 -0
  48. data/lib/reviewer/output.rb +54 -65
  49. data/lib/reviewer/prompt.rb +38 -0
  50. data/lib/reviewer/report/formatter.rb +124 -0
  51. data/lib/reviewer/report.rb +100 -0
  52. data/lib/reviewer/runner/failed_files.rb +66 -0
  53. data/lib/reviewer/runner/formatter.rb +103 -0
  54. data/lib/reviewer/runner/guidance.rb +79 -0
  55. data/lib/reviewer/runner/result.rb +150 -0
  56. data/lib/reviewer/runner/strategies/captured.rb +232 -0
  57. data/lib/reviewer/runner/strategies/{verbose.rb → passthrough.rb} +15 -24
  58. data/lib/reviewer/runner.rb +179 -35
  59. data/lib/reviewer/session/formatter.rb +87 -0
  60. data/lib/reviewer/session.rb +208 -0
  61. data/lib/reviewer/setup/catalog.rb +233 -0
  62. data/lib/reviewer/setup/detector.rb +61 -0
  63. data/lib/reviewer/setup/formatter.rb +94 -0
  64. data/lib/reviewer/setup/gemfile_lock.rb +55 -0
  65. data/lib/reviewer/setup/generator.rb +54 -0
  66. data/lib/reviewer/setup/tool_block.rb +112 -0
  67. data/lib/reviewer/setup.rb +41 -0
  68. data/lib/reviewer/shell/result.rb +25 -11
  69. data/lib/reviewer/shell/timer.rb +47 -27
  70. data/lib/reviewer/shell.rb +46 -21
  71. data/lib/reviewer/tool/conversions.rb +20 -0
  72. data/lib/reviewer/tool/file_resolver.rb +54 -0
  73. data/lib/reviewer/tool/settings.rb +107 -56
  74. data/lib/reviewer/tool/test_file_mapper.rb +73 -0
  75. data/lib/reviewer/tool/timing.rb +78 -0
  76. data/lib/reviewer/tool.rb +88 -47
  77. data/lib/reviewer/tools.rb +47 -33
  78. data/lib/reviewer/version.rb +1 -1
  79. data/lib/reviewer.rb +114 -54
  80. data/reviewer.gemspec +21 -20
  81. data/structure.svg +1 -0
  82. metadata +113 -148
  83. data/.ruby-version +0 -1
  84. data/lib/reviewer/command/string/verbosity.rb +0 -51
  85. data/lib/reviewer/command/verbosity.rb +0 -65
  86. data/lib/reviewer/conversions.rb +0 -27
  87. data/lib/reviewer/guidance.rb +0 -73
  88. data/lib/reviewer/keywords/git/staged.rb +0 -48
  89. data/lib/reviewer/keywords/git.rb +0 -14
  90. data/lib/reviewer/keywords.rb +0 -9
  91. data/lib/reviewer/loader.rb +0 -59
  92. data/lib/reviewer/printer.rb +0 -25
  93. data/lib/reviewer/runner/strategies/quiet.rb +0 -90
data/reviewer.gemspec CHANGED
@@ -8,15 +8,21 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ['Garrett Dimon']
9
9
  spec.email = ['email@garrettdimon.com']
10
10
 
11
- spec.summary = 'Provides a unified approach to managing automated code quality tools.'
12
- spec.description = 'Provides a unified approach to managing automated code quality tools.'
11
+ spec.summary = 'Frictionless code quality. One command for all your review tools.'
12
+ spec.description = 'Run tests, linters, security audits, and formatters with a single command. ' \
13
+ 'Reviewer wraps your code quality tools into a consistent interface with ' \
14
+ 'git-aware file targeting, auto-detection, and multiple output formats.'
13
15
  spec.homepage = 'https://github.com/garrettdimon/reviewer'
14
16
  spec.license = 'MIT'
15
- spec.required_ruby_version = Gem::Requirement.new('>= 2.5.9')
17
+ spec.required_ruby_version = Gem::Requirement.new('>= 3.2')
16
18
 
17
19
  spec.metadata['homepage_uri'] = spec.homepage
18
- spec.metadata['source_code_uri'] = 'https://github.com/garrettdimon/reviewer'
20
+ spec.metadata['bug_tracker_uri'] = 'https://github.com/garrettdimon/reviewer/issues'
19
21
  spec.metadata['changelog_uri'] = 'https://github.com/garrettdimon/reviewer/CHANGELOG.md'
22
+ spec.metadata['documentation_uri'] = 'https://www.rubydoc.info/gems/reviewer'
23
+ spec.metadata['source_code_uri'] = 'https://github.com/garrettdimon/reviewer'
24
+ spec.metadata['wiki_uri'] = 'https://github.com/garrettdimon/reviewer/wiki'
25
+ spec.metadata['rubygems_mfa_required'] = 'true'
20
26
 
21
27
  # Specify which files should be added to the gem when it is released.
22
28
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -27,21 +33,16 @@ Gem::Specification.new do |spec|
27
33
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
28
34
  spec.require_paths = ['lib']
29
35
 
30
- spec.add_dependency 'colorize'
31
- spec.add_dependency 'slop'
36
+ spec.add_dependency 'benchmark', '~> 0.5'
37
+ spec.add_dependency 'pstore', '~> 0.2'
38
+ spec.add_dependency 'rainbow', '~> 3.1'
39
+ spec.add_dependency 'ruby-progressbar', '~> 1.13'
40
+ spec.add_dependency 'slop', '~> 4.10'
32
41
 
33
- spec.add_development_dependency 'bundler-audit'
34
- spec.add_development_dependency 'codecov'
35
- spec.add_development_dependency 'dead_end'
36
- spec.add_development_dependency 'flay'
37
- spec.add_development_dependency 'flog'
38
- spec.add_development_dependency 'inch'
39
- spec.add_development_dependency 'minitest'
40
- spec.add_development_dependency 'minitest-color'
41
- spec.add_development_dependency 'psych', '~> 3.3.2'
42
- spec.add_development_dependency 'reek'
43
- spec.add_development_dependency 'rubocop'
44
- spec.add_development_dependency 'rubocop-minitest'
45
- spec.add_development_dependency 'rubocop-rake'
46
- spec.add_development_dependency 'simplecov'
42
+ spec.add_development_dependency 'minitest', '~> 5.27'
43
+ spec.add_development_dependency 'minitest-heat', '~> 2.1'
44
+ spec.add_development_dependency 'rdoc', '~> 7.1'
45
+ spec.add_development_dependency 'simplecov', '~> 0.22'
46
+ spec.add_development_dependency 'simplecov_json_formatter', '~> 0.1'
47
+ spec.add_development_dependency 'yard', '~> 0.9'
47
48
  end
data/structure.svg ADDED
@@ -0,0 +1 @@
1
+ <svg width="1000" height="1000" style="background:white;font-family:sans-serif;overflow:visible" xmlns="http://www.w3.org/2000/svg"><defs><filter id="glow" x="-50%" y="-50%" width="200%" height="200%"><feGaussianBlur stdDeviation="4" result="coloredBlur"></feGaussianBlur><feMerge><feMergeNode in="coloredBlur"></feMergeNode><feMergeNode in="SourceGraphic"></feMergeNode></feMerge></filter></defs><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(458.1684758396736, 402.8013409019584)"><circle r="352.40190201003946" style="transition:all 0.5s ease-out" stroke="#290819" opacity="0.2" stroke-width="1" fill="none"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(520.8364435594557, 806.4990877668961)"><circle r="36.11178860447648" style="transition:all 0.5s ease-out" stroke="#290819" opacity="0.2" stroke-width="1" fill="none"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(409.6517236116371, 402.8013409019584)"><circle r="294.1473077312859" style="transition:all 0.5s ease-out" stroke="#290819" opacity="0.2" stroke-width="1" fill="none"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(757.1847045963179, 402.8013409019584)"><circle style="transition:all 0.5s ease-out" r="43.64783120267789" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#6473F2;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(687.4299657134559, 856.9423846447222)"><circle style="transition:all 0.5s ease-out" r="51.31612086796417" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(788.9846757350268, 859.3421087760426)"><circle style="transition:all 0.5s ease-out" r="46.2472197118418" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(726.4250919182904, 947.0721172937218)"><circle style="transition:all 0.5s ease-out" r="42.86782312801615" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(726.687090398783, 755.9238323654778)"><circle style="transition:all 0.5s ease-out" r="35.01102176297566" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(656.2776843121794, 774.053081197875)"><circle style="transition:all 0.5s ease-out" r="34.05582985803832" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#6473F2;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(646.3075304917123, 935.5086582680074)"><circle style="transition:all 0.5s ease-out" r="33.36112099562045" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#6473F2;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(792.4478568898579, 778.7047877445898)"><circle style="transition:all 0.5s ease-out" r="30.75334019375212" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(795.2808076405827, 932.7721040738809)"><circle style="transition:all 0.5s ease-out" r="23.450700366199015" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(628.2012046638729, 818.8498773291199)"><circle style="transition:all 0.5s ease-out" r="15.087376074028514" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(625.1052165805941, 879.58232371161)"><circle style="transition:all 0.5s ease-out" r="10.993857902246123" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(759.9605608023857, 807.5923921321375)"><circle style="transition:all 0.5s ease-out" r="9.032375950599938" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(740.4589615675088, 893.1073074759857)"><circle style="transition:all 0.5s ease-out" r="8.891894979240078" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(697.4389756167642, 792.4331053326879)"><circle style="transition:all 0.5s ease-out" r="7.7087773473446" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#FFC312;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(739.3959953779754, 800.9150363761469)"><circle style="transition:all 0.5s ease-out" r="7.6760435377025455" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(754.6373603648877, 899.7098713097646)"><circle style="transition:all 0.5s ease-out" r="2.7484644755615304" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(688.9313125250869, 914.8390531135157)"><circle style="transition:all 0.5s ease-out" r="2.5586811792341817" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(506.1084751770936, 806.4990877668961)"><circle style="transition:all 0.5s ease-out" r="16.95752838087938" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(540.0071178609526, 806.4990877668961)"><circle style="transition:all 0.5s ease-out" r="12.514822461744519" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(355.4184691733666, 395.8977440745981)"><circle style="transition:all 0.5s ease-out" r="48.297958480594644" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(453.66003516638904, 395.8977440745981)"><circle style="transition:all 0.5s ease-out" r="45.517315671192776" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(407.83945742807794, 501.6014766854548)"><circle r="65.2640503586534" style="transition:all 0.5s ease-out" stroke="#290819" opacity="0.2" stroke-width="1" fill="none"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(408.44899912286195, 266.8449117959501)"><circle r="86.7994775020254" style="transition:all 0.5s ease-out" stroke="#290819" opacity="0.2" stroke-width="1" fill="none"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(277.6542041828907, 480.50667705487933)"><circle r="62.19290440091251" style="transition:all 0.5s ease-out" stroke="#290819" opacity="0.2" stroke-width="1" fill="none"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(578.9817228671643, 482.6836693665573)"><circle r="102.49432161596253" style="transition:all 0.5s ease-out" stroke="#290819" opacity="0.2" stroke-width="1" fill="none"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(231.7281199383259, 318.8649338109235)"><circle r="92.99244862172178" style="transition:all 0.5s ease-out" stroke="#290819" opacity="0.2" stroke-width="1" fill="none"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(523.1975630378445, 335.21636724206417)"><circle style="transition:all 0.5s ease-out" r="42.347764114422745" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(176.26520220161186, 445.3500189745872)"><circle style="transition:all 0.5s ease-out" r="40.692128091001564" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(605.0441527585806, 342.75082556501854)"><circle style="transition:all 0.5s ease-out" r="35.41859767673708" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(327.59590900349434, 569.4790692623358)"><circle style="transition:all 0.5s ease-out" r="35.41148765003155" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(534.3474887230652, 253.8625225793911)"><circle style="transition:all 0.5s ease-out" r="35.34030870841474" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(476.4643386600166, 578.911911443936)"><circle style="transition:all 0.5s ease-out" r="33.68411134954049" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(299.4858839094448, 207.73782607508076)"><circle style="transition:all 0.5s ease-out" r="32.73635414382169" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(390.0098532010105, 598.7827521061267)"><circle style="transition:all 0.5s ease-out" r="29.11297292304826" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(440.3851018289799, 634.7060029474101)"><circle style="transition:all 0.5s ease-out" r="28.332745267196174" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(598.6034010548337, 275.2555582441296)"><circle style="transition:all 0.5s ease-out" r="27.956986512323546" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(502.704659203589, 194.16981738111775)"><circle style="transition:all 0.5s ease-out" r="27.79439199698623" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(266.51867408166913, 567.6833977935446)"><circle style="transition:all 0.5s ease-out" r="21.265846110817378" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(346.18721110272986, 174.45592016501854)"><circle style="transition:all 0.5s ease-out" r="20.184535485530812" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(523.0058458149439, 583.8411735366119)"><circle style="transition:all 0.5s ease-out" r="8.691407810834628" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(351.1758829983302, 609.7245028990388)"><circle style="transition:all 0.5s ease-out" r="6.806728247623728" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(383.5814103897357, 501.6014766854548)"><circle style="transition:all 0.5s ease-out" r="36.57971147907614" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(446.6323148277716, 501.6014766854548)"><circle style="transition:all 0.5s ease-out" r="22.044901117724688" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(370.84570420293034, 266.8449117959501)"><circle style="transition:all 0.5s ease-out" r="44.76989074085872" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(455.4320357843382, 266.8449117959501)"><circle style="transition:all 0.5s ease-out" r="35.39014899931409" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(265.3052220935813, 480.50667705487933)"><circle style="transition:all 0.5s ease-out" r="45.41763047036804" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(325.2849805738762, 480.50667705487933)"><circle style="transition:all 0.5s ease-out" r="10.135836168691887" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(544.5152135162864, 471.920566006636)"><circle r="61.960071361511915" style="transition:all 0.5s ease-out" stroke="#290819" opacity="0.2" stroke-width="1" fill="none"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(643.5300677882587, 471.920566006636)"><circle style="transition:all 0.5s ease-out" r="32.62849106922531" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(618.710163320952, 535.9504578797049)"><circle style="transition:all 0.5s ease-out" r="31.617298105357957" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(191.4503126965002, 309.1431465377067)"><circle style="transition:all 0.5s ease-out" r="47.13169160962506" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(281.17799339890166, 309.1431465377067)"><circle style="transition:all 0.5s ease-out" r="38.16969725154132" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(244.21679860063716, 373.9896454048579)"><circle style="transition:all 0.5s ease-out" r="32.04447135758986" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(519.6457545955952, 464.8290172745834)"><circle style="transition:all 0.5s ease-out" r="31.672997427945933" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(578.5313449242576, 464.8290172745834)"><circle style="transition:all 0.5s ease-out" r="22.78630105948141" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(556.9214342696687, 507.08309517374425)"><circle style="transition:all 0.5s ease-out" r="20.246814360728305" stroke-width="0" stroke="#374151"></circle></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(757.1847045963179, 402.8013409019584)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">reviewer.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">reviewer.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">reviewer.rb</text></g><g style="fill:#6473F2;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(687.4299657134559, 856.9423846447222)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">CODE_OF_CONDU...</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">CODE_OF_CONDU...</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">CODE_OF_CONDU...</text></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(788.9846757350268, 859.3421087760426)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">.reviewer.exa...</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">.reviewer.exa...</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">.reviewer.exa...</text></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(726.4250919182904, 947.0721172937218)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">.reviewer.yml</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">.reviewer.yml</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">.reviewer.yml</text></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(726.687090398783, 755.9238323654778)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">Gemfile.lock</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">Gemfile.lock</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">Gemfile.lock</text></g><g style="fill:#CED6E0;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(656.2776843121794, 774.053081197875)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">reviewer.gemspec</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">reviewer.gemspec</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">reviewer.gemspec</text></g><g style="fill:#6473F2;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(646.3075304917123, 935.5086582680074)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">CHANGELOG.md</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">CHANGELOG.md</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">CHANGELOG.md</text></g><g style="fill:#6473F2;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(792.4478568898579, 778.7047877445898)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">README.md</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">README.md</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">README.md</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(355.4184691733666, 395.8977440745981)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">tool.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">tool.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">tool.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(453.66003516638904, 395.8977440745981)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">tool/settings.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">tool/settings.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">tool/settings.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(523.1975630378445, 335.21636724206417)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">command.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">command.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">command.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(176.26520220161186, 445.3500189745872)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">tools.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">tools.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">tools.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(605.0441527585806, 342.75082556501854)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">guidance.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">guidance.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">guidance.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(327.59590900349434, 569.4790692623358)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">history.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">history.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">history.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(534.3474887230652, 253.8625225793911)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">arguments.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">arguments.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">arguments.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(476.4643386600166, 578.911911443936)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">output.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">output.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">output.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(299.4858839094448, 207.73782607508076)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">runner.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">runner.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">runner.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(383.5814103897357, 501.6014766854548)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">result.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">result.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">result.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(370.84570420293034, 266.8449117959501)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">quiet.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">quiet.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">quiet.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(455.4320357843382, 266.8449117959501)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">verbose.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">verbose.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">verbose.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(265.3052220935813, 480.50667705487933)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">git/staged.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">git/staged.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">git/staged.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(643.5300677882587, 471.920566006636)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">verbosity.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">verbosity.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">verbosity.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(618.710163320952, 535.9504578797049)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">string.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">string.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">string.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(191.4503126965002, 309.1431465377067)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">keywords.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">keywords.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">keywords.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(281.17799339890166, 309.1431465377067)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">files.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">files.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">files.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(244.21679860063716, 373.9896454048579)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">tags.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">tags.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">tags.rb</text></g><g style="fill:#eb4d4b;transition:transform 0s ease-out, fill 0.1s ease-out" transform="translate(519.6457545955952, 464.8290172745834)"><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;transition:all 0.5s ease-out" fill="#4B5563" text-anchor="middle" dominant-baseline="middle" stroke="white" stroke-width="3" stroke-linejoin="round">verbosity.rb</text><text style="pointer-events:none;opacity:1;font-size:14px;font-weight:500;transition:all 0.5s ease-out" text-anchor="middle" dominant-baseline="middle">verbosity.rb</text><text style="pointer-events:none;opacity:0.9;font-size:14px;font-weight:500;mix-blend-mode:color-burn;transition:all 0.5s ease-out" fill="#110101" text-anchor="middle" dominant-baseline="middle">verbosity.rb</text></g><g style="pointer-events:none;transition:all 0.5s ease-out" transform="translate(458.1684758396736, 402.8013409019584)"><path fill="none" d="M 0 349.40190201003946 A 349.40190201003946 349.40190201003946 0 0 1 0 -349.40190201003946 A 349.40190201003946 349.40190201003946 0 0 1 0 349.40190201003946" id="CircleText--1" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151" stroke="white" stroke-width="6"><textPath href="#CircleText--1" startOffset="50%">lib</textPath></text><path fill="none" d="M 0 349.40190201003946 A 349.40190201003946 349.40190201003946 0 0 1 0 -349.40190201003946 A 349.40190201003946 349.40190201003946 0 0 1 0 349.40190201003946" id="CircleText--2" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151"><textPath href="#CircleText--2" startOffset="50%">lib</textPath></text></g><g style="pointer-events:none;transition:all 0.5s ease-out" transform="translate(520.8364435594557, 806.4990877668961)"><path fill="none" d="M 0 33.11178860447648 A 33.11178860447648 33.11178860447648 0 0 1 0 -33.11178860447648 A 33.11178860447648 33.11178860447648 0 0 1 0 33.11178860447648" id="CircleText--3" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151" stroke="white" stroke-width="6"><textPath href="#CircleText--3" startOffset="50%">.github/workf...</textPath></text><path fill="none" d="M 0 33.11178860447648 A 33.11178860447648 33.11178860447648 0 0 1 0 -33.11178860447648 A 33.11178860447648 33.11178860447648 0 0 1 0 33.11178860447648" id="CircleText--4" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151"><textPath href="#CircleText--4" startOffset="50%">.github/workf...</textPath></text></g><g style="pointer-events:none;transition:all 0.5s ease-out" transform="translate(409.6517236116371, 402.8013409019584)"><path fill="none" d="M 0 291.1473077312859 A 291.1473077312859 291.1473077312859 0 0 1 0 -291.1473077312859 A 291.1473077312859 291.1473077312859 0 0 1 0 291.1473077312859" id="CircleText--5" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151" stroke="white" stroke-width="6"><textPath href="#CircleText--5" startOffset="50%">reviewer</textPath></text><path fill="none" d="M 0 291.1473077312859 A 291.1473077312859 291.1473077312859 0 0 1 0 -291.1473077312859 A 291.1473077312859 291.1473077312859 0 0 1 0 291.1473077312859" id="CircleText--6" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151"><textPath href="#CircleText--6" startOffset="50%">reviewer</textPath></text></g><g style="pointer-events:none;transition:all 0.5s ease-out" transform="translate(407.83945742807794, 501.6014766854548)"><path fill="none" d="M 0 62.26405035865341 A 62.26405035865341 62.26405035865341 0 0 1 0 -62.26405035865341 A 62.26405035865341 62.26405035865341 0 0 1 0 62.26405035865341" id="CircleText--7" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151" stroke="white" stroke-width="6"><textPath href="#CircleText--7" startOffset="50%">shell</textPath></text><path fill="none" d="M 0 62.26405035865341 A 62.26405035865341 62.26405035865341 0 0 1 0 -62.26405035865341 A 62.26405035865341 62.26405035865341 0 0 1 0 62.26405035865341" id="CircleText--8" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151"><textPath href="#CircleText--8" startOffset="50%">shell</textPath></text></g><g style="pointer-events:none;transition:all 0.5s ease-out" transform="translate(408.44899912286195, 266.8449117959501)"><path fill="none" d="M 0 83.7994775020254 A 83.7994775020254 83.7994775020254 0 0 1 0 -83.7994775020254 A 83.7994775020254 83.7994775020254 0 0 1 0 83.7994775020254" id="CircleText--9" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151" stroke="white" stroke-width="6"><textPath href="#CircleText--9" startOffset="50%">runner/strate...</textPath></text><path fill="none" d="M 0 83.7994775020254 A 83.7994775020254 83.7994775020254 0 0 1 0 -83.7994775020254 A 83.7994775020254 83.7994775020254 0 0 1 0 83.7994775020254" id="CircleText--10" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151"><textPath href="#CircleText--10" startOffset="50%">runner/strate...</textPath></text></g><g style="pointer-events:none;transition:all 0.5s ease-out" transform="translate(277.6542041828907, 480.50667705487933)"><path fill="none" d="M 0 59.19290440091251 A 59.19290440091251 59.19290440091251 0 0 1 0 -59.19290440091251 A 59.19290440091251 59.19290440091251 0 0 1 0 59.19290440091251" id="CircleText--11" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151" stroke="white" stroke-width="6"><textPath href="#CircleText--11" startOffset="50%">keywords</textPath></text><path fill="none" d="M 0 59.19290440091251 A 59.19290440091251 59.19290440091251 0 0 1 0 -59.19290440091251 A 59.19290440091251 59.19290440091251 0 0 1 0 59.19290440091251" id="CircleText--12" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151"><textPath href="#CircleText--12" startOffset="50%">keywords</textPath></text></g><g style="pointer-events:none;transition:all 0.5s ease-out" transform="translate(578.9817228671643, 482.6836693665573)"><path fill="none" d="M 0 99.49432161596253 A 99.49432161596253 99.49432161596253 0 0 1 0 -99.49432161596253 A 99.49432161596253 99.49432161596253 0 0 1 0 99.49432161596253" id="CircleText--13" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151" stroke="white" stroke-width="6"><textPath href="#CircleText--13" startOffset="50%">command</textPath></text><path fill="none" d="M 0 99.49432161596253 A 99.49432161596253 99.49432161596253 0 0 1 0 -99.49432161596253 A 99.49432161596253 99.49432161596253 0 0 1 0 99.49432161596253" id="CircleText--14" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151"><textPath href="#CircleText--14" startOffset="50%">command</textPath></text></g><g style="pointer-events:none;transition:all 0.5s ease-out" transform="translate(231.7281199383259, 318.8649338109235)"><path fill="none" d="M 0 89.99244862172178 A 89.99244862172178 89.99244862172178 0 0 1 0 -89.99244862172178 A 89.99244862172178 89.99244862172178 0 0 1 0 89.99244862172178" id="CircleText--15" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151" stroke="white" stroke-width="6"><textPath href="#CircleText--15" startOffset="50%">arguments</textPath></text><path fill="none" d="M 0 89.99244862172178 A 89.99244862172178 89.99244862172178 0 0 1 0 -89.99244862172178 A 89.99244862172178 89.99244862172178 0 0 1 0 89.99244862172178" id="CircleText--16" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151"><textPath href="#CircleText--16" startOffset="50%">arguments</textPath></text></g><g style="pointer-events:none;transition:all 0.5s ease-out" transform="translate(544.5152135162864, 471.920566006636)"><path fill="none" d="M 0 58.960071361511915 A 58.960071361511915 58.960071361511915 0 0 1 0 -58.960071361511915 A 58.960071361511915 58.960071361511915 0 0 1 0 58.960071361511915" id="CircleText--17" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151" stroke="white" stroke-width="6"><textPath href="#CircleText--17" startOffset="50%">string</textPath></text><path fill="none" d="M 0 58.960071361511915 A 58.960071361511915 58.960071361511915 0 0 1 0 -58.960071361511915 A 58.960071361511915 58.960071361511915 0 0 1 0 58.960071361511915" id="CircleText--18" transform="rotate(0)" style="pointer-events:none"></path><text text-anchor="middle" style="font-size:14px;transition:all 0.5s ease-out" fill="#374151"><textPath href="#CircleText--18" startOffset="50%">string</textPath></text></g><g transform="translate(920, 935)"><g transform="translate(0, 0)"><circle r="5" fill="#6473F2"></circle><text x="10" style="font-size:14px;font-weight:300" dominant-baseline="middle">.md</text></g><g transform="translate(0, 15)"><circle r="5" fill="#eb4d4b"></circle><text x="10" style="font-size:14px;font-weight:300" dominant-baseline="middle">.rb</text></g><g transform="translate(0, 30)"><circle r="5" fill="#FFC312"></circle><text x="10" style="font-size:14px;font-weight:300" dominant-baseline="middle">.svg</text></g><div class="w-20 whitespace-nowrap text-sm text-gray-500 font-light italic">each dot sized by file size</div></g></svg>
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.1.4
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: 2021-08-05 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
- name: colorize
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: slop
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
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: bundler-audit
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: dead_end
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
37
+ - - "~>"
81
38
  - !ruby/object:Gem::Version
82
- version: '0'
39
+ version: '0.2'
83
40
  - !ruby/object:Gem::Dependency
84
- name: flay
41
+ name: rainbow
85
42
  requirement: !ruby/object:Gem::Requirement
86
43
  requirements:
87
- - - ">="
44
+ - - "~>"
88
45
  - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
46
+ version: '3.1'
47
+ type: :runtime
91
48
  prerelease: false
92
49
  version_requirements: !ruby/object:Gem::Requirement
93
50
  requirements:
94
- - - ">="
51
+ - - "~>"
95
52
  - !ruby/object:Gem::Version
96
- version: '0'
53
+ version: '3.1'
97
54
  - !ruby/object:Gem::Dependency
98
- name: flog
55
+ name: ruby-progressbar
99
56
  requirement: !ruby/object:Gem::Requirement
100
57
  requirements:
101
- - - ">="
58
+ - - "~>"
102
59
  - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
60
+ version: '1.13'
61
+ type: :runtime
105
62
  prerelease: false
106
63
  version_requirements: !ruby/object:Gem::Requirement
107
64
  requirements:
108
- - - ">="
65
+ - - "~>"
109
66
  - !ruby/object:Gem::Version
110
- version: '0'
67
+ version: '1.13'
111
68
  - !ruby/object:Gem::Dependency
112
- name: inch
69
+ name: slop
113
70
  requirement: !ruby/object:Gem::Requirement
114
71
  requirements:
115
- - - ">="
72
+ - - "~>"
116
73
  - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
74
+ version: '4.10'
75
+ type: :runtime
119
76
  prerelease: false
120
77
  version_requirements: !ruby/object:Gem::Requirement
121
78
  requirements:
122
- - - ">="
79
+ - - "~>"
123
80
  - !ruby/object:Gem::Version
124
- version: '0'
81
+ version: '4.10'
125
82
  - !ruby/object:Gem::Dependency
126
83
  name: minitest
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: minitest-color
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: psych
155
84
  requirement: !ruby/object:Gem::Requirement
156
85
  requirements:
157
86
  - - "~>"
158
87
  - !ruby/object:Gem::Version
159
- version: 3.3.2
88
+ version: '5.27'
160
89
  type: :development
161
90
  prerelease: false
162
91
  version_requirements: !ruby/object:Gem::Requirement
163
92
  requirements:
164
93
  - - "~>"
165
94
  - !ruby/object:Gem::Version
166
- version: 3.3.2
95
+ version: '5.27'
167
96
  - !ruby/object:Gem::Dependency
168
- name: reek
97
+ name: minitest-heat
169
98
  requirement: !ruby/object:Gem::Requirement
170
99
  requirements:
171
- - - ">="
100
+ - - "~>"
172
101
  - !ruby/object:Gem::Version
173
- version: '0'
102
+ version: '2.1'
174
103
  type: :development
175
104
  prerelease: false
176
105
  version_requirements: !ruby/object:Gem::Requirement
177
106
  requirements:
178
- - - ">="
107
+ - - "~>"
179
108
  - !ruby/object:Gem::Version
180
- version: '0'
109
+ version: '2.1'
181
110
  - !ruby/object:Gem::Dependency
182
- name: rubocop
111
+ name: rdoc
183
112
  requirement: !ruby/object:Gem::Requirement
184
113
  requirements:
185
- - - ">="
114
+ - - "~>"
186
115
  - !ruby/object:Gem::Version
187
- version: '0'
116
+ version: '7.1'
188
117
  type: :development
189
118
  prerelease: false
190
119
  version_requirements: !ruby/object:Gem::Requirement
191
120
  requirements:
192
- - - ">="
121
+ - - "~>"
193
122
  - !ruby/object:Gem::Version
194
- version: '0'
123
+ version: '7.1'
195
124
  - !ruby/object:Gem::Dependency
196
- name: rubocop-minitest
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: rubocop-rake
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
- name: simplecov
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: Provides a unified approach to managing automated code quality tools.
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:
@@ -243,23 +174,30 @@ executables:
243
174
  extensions: []
244
175
  extra_rdoc_files: []
245
176
  files:
177
+ - ".alexignore"
246
178
  - ".flayignore"
179
+ - ".github/FUNDING.yml"
247
180
  - ".github/workflows/main.yml"
181
+ - ".github/workflows/release.yml"
248
182
  - ".gitignore"
249
183
  - ".inch.yml"
184
+ - ".reek.yml"
250
185
  - ".reviewer.example.yml"
186
+ - ".reviewer.future.yml"
251
187
  - ".reviewer.yml"
188
+ - ".reviewer_stdout"
252
189
  - ".rubocop.yml"
253
- - ".ruby-version"
254
190
  - CHANGELOG.md
255
191
  - CODE_OF_CONDUCT.md
256
192
  - Gemfile
257
193
  - Gemfile.lock
258
194
  - LICENSE.txt
259
195
  - README.md
196
+ - RELEASING.md
260
197
  - Rakefile
261
198
  - bin/console
262
199
  - bin/setup
200
+ - dependency_decisions.yml
263
201
  - exe/fmt
264
202
  - exe/rvw
265
203
  - lib/reviewer.rb
@@ -268,41 +206,70 @@ files:
268
206
  - lib/reviewer/arguments/keywords.rb
269
207
  - lib/reviewer/arguments/tags.rb
270
208
  - lib/reviewer/batch.rb
209
+ - lib/reviewer/batch/formatter.rb
210
+ - lib/reviewer/capabilities.rb
271
211
  - lib/reviewer/command.rb
272
212
  - lib/reviewer/command/string.rb
273
213
  - lib/reviewer/command/string/env.rb
274
214
  - lib/reviewer/command/string/flags.rb
275
- - lib/reviewer/command/string/verbosity.rb
276
- - lib/reviewer/command/verbosity.rb
277
215
  - lib/reviewer/configuration.rb
278
- - lib/reviewer/conversions.rb
279
- - lib/reviewer/guidance.rb
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
286
- - lib/reviewer/printer.rb
228
+ - lib/reviewer/output/formatting.rb
229
+ - lib/reviewer/output/printer.rb
230
+ - lib/reviewer/prompt.rb
231
+ - lib/reviewer/report.rb
232
+ - lib/reviewer/report/formatter.rb
287
233
  - lib/reviewer/runner.rb
288
- - lib/reviewer/runner/strategies/quiet.rb
289
- - lib/reviewer/runner/strategies/verbose.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
238
+ - lib/reviewer/runner/strategies/captured.rb
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
290
249
  - lib/reviewer/shell.rb
291
250
  - lib/reviewer/shell/result.rb
292
251
  - lib/reviewer/shell/timer.rb
293
252
  - lib/reviewer/tool.rb
253
+ - lib/reviewer/tool/conversions.rb
254
+ - lib/reviewer/tool/file_resolver.rb
294
255
  - lib/reviewer/tool/settings.rb
256
+ - lib/reviewer/tool/test_file_mapper.rb
257
+ - lib/reviewer/tool/timing.rb
295
258
  - lib/reviewer/tools.rb
296
259
  - lib/reviewer/version.rb
297
260
  - reviewer.gemspec
261
+ - structure.svg
298
262
  homepage: https://github.com/garrettdimon/reviewer
299
263
  licenses:
300
264
  - MIT
301
265
  metadata:
302
266
  homepage_uri: https://github.com/garrettdimon/reviewer
303
- source_code_uri: https://github.com/garrettdimon/reviewer
267
+ bug_tracker_uri: https://github.com/garrettdimon/reviewer/issues
304
268
  changelog_uri: https://github.com/garrettdimon/reviewer/CHANGELOG.md
305
- post_install_message:
269
+ documentation_uri: https://www.rubydoc.info/gems/reviewer
270
+ source_code_uri: https://github.com/garrettdimon/reviewer
271
+ wiki_uri: https://github.com/garrettdimon/reviewer/wiki
272
+ rubygems_mfa_required: 'true'
306
273
  rdoc_options: []
307
274
  require_paths:
308
275
  - lib
@@ -310,16 +277,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
310
277
  requirements:
311
278
  - - ">="
312
279
  - !ruby/object:Gem::Version
313
- version: 2.5.9
280
+ version: '3.2'
314
281
  required_rubygems_version: !ruby/object:Gem::Requirement
315
282
  requirements:
316
283
  - - ">="
317
284
  - !ruby/object:Gem::Version
318
285
  version: '0'
319
286
  requirements: []
320
- rubyforge_project:
321
- rubygems_version: 2.7.6.3
322
- signing_key:
287
+ rubygems_version: 3.6.9
323
288
  specification_version: 4
324
- summary: Provides a unified approach to managing automated code quality tools.
289
+ summary: Frictionless code quality. One command for all your review tools.
325
290
  test_files: []
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.5.9