skunk 0.3.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "net/http"
4
+ require "net/https"
5
+ require "json"
6
+
7
+ require "skunk/cli/commands/status_reporter"
8
+
9
+ module Skunk
10
+ module Command
11
+ # Knows how to share status to an API
12
+ class StatusSharer < Skunk::Command::StatusReporter
13
+ attr_reader :status_message
14
+
15
+ DEFAULT_URL = "https://skunk.fastruby.io"
16
+ def status_reporter=(status_reporter)
17
+ self.analysed_modules = status_reporter.analysed_modules
18
+ self.score = analysed_modules.score
19
+ end
20
+
21
+ def share
22
+ return "" if not_sharing?
23
+
24
+ response = post_payload
25
+
26
+ @status_message =
27
+ if Net::HTTPOK === response
28
+ data = JSON.parse response.body
29
+ "Shared at: #{File.join(base_url, data['id'])}"
30
+ else
31
+ "Error sharing report: #{response}"
32
+ end
33
+ end
34
+
35
+ private
36
+
37
+ # :reek:UtilityFunction
38
+ def base_url
39
+ ENV["SHARE_URL"] || DEFAULT_URL
40
+ end
41
+
42
+ def json_summary
43
+ result = {
44
+ total_skunk_score: total_skunk_score,
45
+ analysed_modules_count: analysed_modules_count,
46
+ skunk_score_average: skunk_score_average,
47
+ skunk_version: Skunk::VERSION
48
+ }
49
+
50
+ if worst
51
+ result[:worst_skunk_score] = {
52
+ file: worst.pathname.to_s,
53
+ skunk_score: worst.skunk_score
54
+ }
55
+ end
56
+
57
+ result
58
+ end
59
+
60
+ def json_results
61
+ sorted_modules.map(&:to_hash)
62
+ end
63
+
64
+ # :reek:UtilityFunction
65
+ def not_sharing?
66
+ ENV["SHARE"] != "true" && ENV["SHARE_URL"].to_s == ""
67
+ end
68
+
69
+ def payload
70
+ JSON.generate(
71
+ "entries" => json_results,
72
+ "summary" => json_summary,
73
+ "options" => {
74
+ "compare" => "false"
75
+ }
76
+ )
77
+ end
78
+
79
+ # :reek:TooManyStatements
80
+ def post_payload
81
+ req = Net::HTTP::Post.new(url)
82
+ req.body = payload
83
+
84
+ http = Net::HTTP.new(url.hostname, url.port)
85
+ if url.scheme == "https"
86
+ http.use_ssl = true
87
+ http.ssl_version = :TLSv1_2
88
+ end
89
+
90
+ http.start do |connection|
91
+ connection.request req
92
+ end
93
+ end
94
+
95
+ def url
96
+ URI(File.join(base_url, "reports"))
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rubycritic/commands/version"
4
+
5
+ # nodoc #
6
+ module Skunk
7
+ module Command
8
+ # Shows skunk version
9
+ class Version < RubyCritic::Command::Version
10
+ def execute
11
+ print Skunk::VERSION
12
+ status_reporter
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,10 +1,34 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rubycritic/cli/options"
3
+ require "skunk/cli/options/argv"
4
+ require "rubycritic/cli/options/file"
4
5
 
5
6
  module Skunk
6
7
  module Cli
7
- class Options < RubyCritic::Cli::Options
8
+ # Knows how to parse options passed to the CLI application
9
+ class Options
10
+ attr_reader :argv_options, :file_options
11
+
12
+ def initialize(argv)
13
+ @argv_options = Argv.new(argv)
14
+ @file_options = RubyCritic::Cli::Options::File.new
15
+ end
16
+
17
+ def parse
18
+ argv_options.parse
19
+ file_options.parse
20
+ self
21
+ end
22
+
23
+ # :reek:NilCheck
24
+ def to_h
25
+ file_hash = file_options.to_h
26
+ argv_hash = argv_options.to_h
27
+
28
+ file_hash.merge(argv_hash) do |_, file_option, argv_option|
29
+ Array(argv_option).empty? ? file_option : argv_option
30
+ end
31
+ end
8
32
  end
9
33
  end
10
34
  end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rubycritic/cli/options/argv"
4
+
5
+ module Skunk
6
+ module Cli
7
+ # :nodoc:
8
+ class Options
9
+ # Extends RubyCritic::Cli::Options::Argv to parse a subset of the
10
+ # parameters accepted by RubyCritic
11
+ class Argv < RubyCritic::Cli::Options::Argv
12
+ # :reek:Attribute
13
+ attr_accessor :output_filename
14
+
15
+ def parse # rubocop:disable Metrics/MethodLength
16
+ parser.new do |opts|
17
+ opts.banner = "Usage: skunk [options] [paths]\n"
18
+
19
+ opts.on("-b", "--branch BRANCH", "Set branch to compare") do |branch|
20
+ self.base_branch = String(branch)
21
+ set_current_branch
22
+ self.mode = :compare_branches
23
+ end
24
+
25
+ opts.on("-o", "--out FILE", "Output report to file") do |filename|
26
+ self.output_filename = filename
27
+ end
28
+
29
+ opts.on_tail("-v", "--version", "Show gem's version") do
30
+ self.mode = :version
31
+ end
32
+
33
+ opts.on_tail("-h", "--help", "Show this message") do
34
+ self.mode = :help
35
+ end
36
+ end.parse!(@argv)
37
+ end
38
+
39
+ def to_h
40
+ super.merge(output_filename: output_filename)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -3,34 +3,34 @@
3
3
  require "rubycritic/core/analysed_module"
4
4
 
5
5
  module RubyCritic
6
- # Monkey-patches RubyCritic::AnalysedModule to add a stink_score method
6
+ # Monkey-patches RubyCritic::AnalysedModule to add a skunk_score method
7
7
  class AnalysedModule
8
8
  PERFECT_COVERAGE = 100
9
9
 
10
- # Returns a numeric value that represents the stink_score of a module:
10
+ # Returns a numeric value that represents the skunk_score of a module:
11
11
  #
12
- # If module is perfectly covered, stink score is the same as the
12
+ # If module is perfectly covered, skunk score is the same as the
13
13
  # `churn_times_cost`
14
14
  #
15
- # If module has no coverage, stink score is a penalized value of
15
+ # If module has no coverage, skunk score is a penalized value of
16
16
  # `churn_times_cost`
17
17
  #
18
- # For now the stink_score is calculated by multiplying `churn_times_cost`
18
+ # For now the skunk_score is calculated by multiplying `churn_times_cost`
19
19
  # times the lack of coverage.
20
20
  #
21
21
  # For example:
22
22
  #
23
23
  # When `churn_times_cost` is 100 and module is perfectly covered:
24
- # stink_score => 100
24
+ # skunk_score => 100
25
25
  #
26
26
  # When `churn_times_cost` is 100 and module is not covered at all:
27
- # stink_score => 100 * 100 = 10_000
27
+ # skunk_score => 100 * 100 = 10_000
28
28
  #
29
29
  # When `churn_times_cost` is 100 and module is covered at 75%:
30
- # stink_score => 100 * 25 (percentage uncovered) = 2_500
30
+ # skunk_score => 100 * 25 (percentage uncovered) = 2_500
31
31
  #
32
32
  # @return [Float]
33
- def stink_score
33
+ def skunk_score
34
34
  return cost.round(2) if coverage == PERFECT_COVERAGE
35
35
 
36
36
  (cost * (PERFECT_COVERAGE - coverage.to_i)).round(2)
@@ -41,7 +41,27 @@ module RubyCritic
41
41
  # @return [Integer]
42
42
  def churn_times_cost
43
43
  safe_churn = churn.positive? ? churn : 1
44
- @churn_times_cost ||= safe_churn * cost
44
+ @churn_times_cost ||= (safe_churn * cost).round(2)
45
+ end
46
+
47
+ # Returns a hash with these attributes:
48
+ # - file
49
+ # - skunk_score
50
+ # - churn_times_cost
51
+ # - churn
52
+ # - cost
53
+ # - coverage
54
+ #
55
+ # @return [Hash]
56
+ def to_hash
57
+ {
58
+ file: pathname.to_s,
59
+ skunk_score: skunk_score,
60
+ churn_times_cost: churn_times_cost,
61
+ churn: churn,
62
+ cost: cost.round(2),
63
+ coverage: coverage.round(2)
64
+ }
45
65
  end
46
66
  end
47
67
  end
@@ -5,10 +5,10 @@ require "rubycritic/core/analysed_modules_collection"
5
5
  module RubyCritic
6
6
  # nodoc #
7
7
  class AnalysedModulesCollection
8
- def stink_score_average
8
+ def skunk_score_average
9
9
  num_modules = @modules.size
10
10
  if num_modules.positive?
11
- map(&:stink_score).reduce(:+) / num_modules.to_f
11
+ sum(&:skunk_score) / num_modules.to_f
12
12
  else
13
13
  0.0
14
14
  end
data/lib/skunk/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Skunk
4
- VERSION = "0.3.1"
4
+ VERSION = "0.5.0"
5
5
  end
data/logo.png ADDED
Binary file
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ def hello
4
+ puts "hello world"
5
+ end
@@ -3,34 +3,34 @@
3
3
  require "rubycritic/core/analysed_module"
4
4
 
5
5
  module RubyCritic
6
- # Monkey-patches RubyCritic::AnalysedModule to add a stink_score method
6
+ # Monkey-patches RubyCritic::AnalysedModule to add a skunk_score method
7
7
  class AnalysedModule
8
8
  PERFECT_COVERAGE = 100
9
9
 
10
- # Returns a numeric value that represents the stink_score of a module:
10
+ # Returns a numeric value that represents the skunk_score of a module:
11
11
  #
12
- # If module is perfectly covered, stink score is the same as the
12
+ # If module is perfectly covered, skunk score is the same as the
13
13
  # `churn_times_cost`
14
14
  #
15
- # If module has no coverage, stink score is a penalized value of
15
+ # If module has no coverage, skunk score is a penalized value of
16
16
  # `churn_times_cost`
17
17
  #
18
- # For now the stink_score is calculated by multiplying `churn_times_cost`
18
+ # For now the skunk_score is calculated by multiplying `churn_times_cost`
19
19
  # times the lack of coverage.
20
20
  #
21
21
  # For example:
22
22
  #
23
23
  # When `churn_times_cost` is 100 and module is perfectly covered:
24
- # stink_score => 100
24
+ # skunk_score => 100
25
25
  #
26
26
  # When `churn_times_cost` is 100 and module is not covered at all:
27
- # stink_score => 100 * 100 = 10_000
27
+ # skunk_score => 100 * 100 = 10_000
28
28
  #
29
29
  # When `churn_times_cost` is 100 and module is covered at 75%:
30
- # stink_score => 100 * 25 (percentage uncovered) = 2_500
30
+ # skunk_score => 100 * 25 (percentage uncovered) = 2_500
31
31
  #
32
32
  # @return [Float]
33
- def stink_score
33
+ def skunk_score
34
34
  return cost.round(2) if coverage == PERFECT_COVERAGE
35
35
 
36
36
  (cost * (PERFECT_COVERAGE - coverage.to_i)).round(2)
data/skunk.gemspec CHANGED
@@ -11,9 +11,11 @@ Gem::Specification.new do |spec|
11
11
  spec.email = ["ernesto+github@ombulabs.com"]
12
12
  spec.licenses = ["MIT"]
13
13
  spec.summary = "A library to assess code quality vs. code coverage"
14
- spec.description = "Knows how to calculate the StinkScore for a Ruby file"
14
+ spec.description = "Knows how to calculate the SkunkScore for a set of Ruby modules"
15
15
  spec.homepage = "https://github.com/fastruby/skunk"
16
16
 
17
+ spec.required_ruby_version = [">= 2.4.0", "< 3.1.0"]
18
+
17
19
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
20
  # to allow pushing to a single host or delete this section to allow pushing to any host.
19
21
  if spec.respond_to?(:metadata)
@@ -30,22 +32,26 @@ Gem::Specification.new do |spec|
30
32
  # Specify which files should be added to the gem when it is released.
31
33
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
32
34
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
33
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
35
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(bin|test|spec|features)/}) }
34
36
  end
35
37
  spec.bindir = "exe"
36
38
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
37
39
  spec.require_paths = ["lib"]
38
40
 
39
- spec.add_dependency "rubycritic", "~> 4.2.1"
41
+ spec.add_dependency "rubycritic", ">= 4.5.2", "< 5.0"
40
42
  spec.add_dependency "terminal-table", "~> 1.8.0"
41
43
 
42
- spec.add_development_dependency "bundler", "~> 2.0"
43
44
  spec.add_development_dependency "byebug", "~> 11"
45
+ spec.add_development_dependency "codecov", "~> 0.1.16"
44
46
  spec.add_development_dependency "minitest", "~> 5.8.4"
45
47
  spec.add_development_dependency "minitest-around", "~> 0.5.0"
46
- spec.add_development_dependency "rake", "~> 10.0"
47
- spec.add_development_dependency "reek", "~> 5.4.0"
48
- spec.add_development_dependency "rubocop", "< 1.0"
49
- spec.add_development_dependency "simplecov", "~> 0.17.1"
48
+ spec.add_development_dependency "minitest-stub_any_instance", "~> 1.0.2"
49
+ spec.add_development_dependency "minitest-stub-const", "~> 0.6"
50
+ spec.add_development_dependency "rake", "~> 13.0"
51
+ spec.add_development_dependency "reek", "~> 6.0.0"
52
+ spec.add_development_dependency "rubocop", "~> 1.0"
53
+ spec.add_development_dependency "simplecov", "~> 0.18"
50
54
  spec.add_development_dependency "simplecov-console", "0.5.0"
55
+ spec.add_development_dependency "vcr", "~> 6.0.0"
56
+ spec.add_development_dependency "webmock", "~> 3.10.0"
51
57
  end
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skunk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ernesto Tagwerker
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-19 00:00:00.000000000 Z
11
+ date: 2021-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubycritic
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 4.5.2
20
+ - - "<"
18
21
  - !ruby/object:Gem::Version
19
- version: 4.2.1
22
+ version: '5.0'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: 4.2.1
29
+ version: 4.5.2
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.0'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: terminal-table
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,33 +45,33 @@ dependencies:
39
45
  - !ruby/object:Gem::Version
40
46
  version: 1.8.0
41
47
  - !ruby/object:Gem::Dependency
42
- name: bundler
48
+ name: byebug
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '2.0'
53
+ version: '11'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: '2.0'
60
+ version: '11'
55
61
  - !ruby/object:Gem::Dependency
56
- name: byebug
62
+ name: codecov
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: '11'
67
+ version: 0.1.16
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
- version: '11'
74
+ version: 0.1.16
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: minitest
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -94,46 +100,74 @@ dependencies:
94
100
  - - "~>"
95
101
  - !ruby/object:Gem::Version
96
102
  version: 0.5.0
103
+ - !ruby/object:Gem::Dependency
104
+ name: minitest-stub_any_instance
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 1.0.2
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: 1.0.2
117
+ - !ruby/object:Gem::Dependency
118
+ name: minitest-stub-const
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '0.6'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '0.6'
97
131
  - !ruby/object:Gem::Dependency
98
132
  name: rake
99
133
  requirement: !ruby/object:Gem::Requirement
100
134
  requirements:
101
135
  - - "~>"
102
136
  - !ruby/object:Gem::Version
103
- version: '10.0'
137
+ version: '13.0'
104
138
  type: :development
105
139
  prerelease: false
106
140
  version_requirements: !ruby/object:Gem::Requirement
107
141
  requirements:
108
142
  - - "~>"
109
143
  - !ruby/object:Gem::Version
110
- version: '10.0'
144
+ version: '13.0'
111
145
  - !ruby/object:Gem::Dependency
112
146
  name: reek
113
147
  requirement: !ruby/object:Gem::Requirement
114
148
  requirements:
115
149
  - - "~>"
116
150
  - !ruby/object:Gem::Version
117
- version: 5.4.0
151
+ version: 6.0.0
118
152
  type: :development
119
153
  prerelease: false
120
154
  version_requirements: !ruby/object:Gem::Requirement
121
155
  requirements:
122
156
  - - "~>"
123
157
  - !ruby/object:Gem::Version
124
- version: 5.4.0
158
+ version: 6.0.0
125
159
  - !ruby/object:Gem::Dependency
126
160
  name: rubocop
127
161
  requirement: !ruby/object:Gem::Requirement
128
162
  requirements:
129
- - - "<"
163
+ - - "~>"
130
164
  - !ruby/object:Gem::Version
131
165
  version: '1.0'
132
166
  type: :development
133
167
  prerelease: false
134
168
  version_requirements: !ruby/object:Gem::Requirement
135
169
  requirements:
136
- - - "<"
170
+ - - "~>"
137
171
  - !ruby/object:Gem::Version
138
172
  version: '1.0'
139
173
  - !ruby/object:Gem::Dependency
@@ -142,14 +176,14 @@ dependencies:
142
176
  requirements:
143
177
  - - "~>"
144
178
  - !ruby/object:Gem::Version
145
- version: 0.17.1
179
+ version: '0.18'
146
180
  type: :development
147
181
  prerelease: false
148
182
  version_requirements: !ruby/object:Gem::Requirement
149
183
  requirements:
150
184
  - - "~>"
151
185
  - !ruby/object:Gem::Version
152
- version: 0.17.1
186
+ version: '0.18'
153
187
  - !ruby/object:Gem::Dependency
154
188
  name: simplecov-console
155
189
  requirement: !ruby/object:Gem::Requirement
@@ -164,7 +198,35 @@ dependencies:
164
198
  - - '='
165
199
  - !ruby/object:Gem::Version
166
200
  version: 0.5.0
167
- description: Knows how to calculate the StinkScore for a Ruby file
201
+ - !ruby/object:Gem::Dependency
202
+ name: vcr
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: 6.0.0
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: 6.0.0
215
+ - !ruby/object:Gem::Dependency
216
+ name: webmock
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: 3.10.0
222
+ type: :development
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "~>"
227
+ - !ruby/object:Gem::Version
228
+ version: 3.10.0
229
+ description: Knows how to calculate the SkunkScore for a set of Ruby modules
168
230
  email:
169
231
  - ernesto+github@ombulabs.com
170
232
  executables:
@@ -172,33 +234,43 @@ executables:
172
234
  extensions: []
173
235
  extra_rdoc_files: []
174
236
  files:
237
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
238
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
239
+ - ".github/workflows/main.yml"
240
+ - ".github/workflows/skunk.yml"
175
241
  - ".gitignore"
176
242
  - ".reek.yml"
177
243
  - ".rubocop.yml"
178
244
  - ".rubocop_todo.yml"
179
- - ".travis.yml"
180
245
  - CHANGELOG.md
246
+ - CODEOWNERS
181
247
  - CODE_OF_CONDUCT.md
182
248
  - Gemfile
183
- - Gemfile.lock
249
+ - Gemfile-Ruby-2-4
184
250
  - LICENSE.txt
185
251
  - README.md
186
252
  - Rakefile
187
- - bin/console
188
- - bin/setup
189
253
  - exe/skunk
254
+ - fastruby-logo.png
190
255
  - lib/skunk.rb
191
256
  - lib/skunk/cli/application.rb
192
257
  - lib/skunk/cli/command_factory.rb
193
258
  - lib/skunk/cli/commands/base.rb
194
259
  - lib/skunk/cli/commands/compare.rb
260
+ - lib/skunk/cli/commands/compare_score.rb
195
261
  - lib/skunk/cli/commands/default.rb
196
262
  - lib/skunk/cli/commands/help.rb
263
+ - lib/skunk/cli/commands/output.rb
197
264
  - lib/skunk/cli/commands/status_reporter.rb
265
+ - lib/skunk/cli/commands/status_sharer.rb
266
+ - lib/skunk/cli/commands/version.rb
198
267
  - lib/skunk/cli/options.rb
268
+ - lib/skunk/cli/options/argv.rb
199
269
  - lib/skunk/rubycritic/analysed_module.rb
200
270
  - lib/skunk/rubycritic/analysed_modules_collection.rb
201
271
  - lib/skunk/version.rb
272
+ - logo.png
273
+ - samples/engines/spec/nested_sample_spec.rb
202
274
  - samples/rubycritic/analysed_module.rb
203
275
  - skunk.gemspec
204
276
  homepage: https://github.com/fastruby/skunk
@@ -209,7 +281,7 @@ metadata:
209
281
  homepage_uri: https://github.com/fastruby/skunk
210
282
  source_code_uri: https://github.com/fastruby/skunk
211
283
  changelog_uri: https://github.com/fastruby/skunk/changelog
212
- post_install_message:
284
+ post_install_message:
213
285
  rdoc_options: []
214
286
  require_paths:
215
287
  - lib
@@ -217,15 +289,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
217
289
  requirements:
218
290
  - - ">="
219
291
  - !ruby/object:Gem::Version
220
- version: '0'
292
+ version: 2.4.0
293
+ - - "<"
294
+ - !ruby/object:Gem::Version
295
+ version: 3.1.0
221
296
  required_rubygems_version: !ruby/object:Gem::Requirement
222
297
  requirements:
223
298
  - - ">="
224
299
  - !ruby/object:Gem::Version
225
300
  version: '0'
226
301
  requirements: []
227
- rubygems_version: 3.0.6
228
- signing_key:
302
+ rubygems_version: 3.2.3
303
+ signing_key:
229
304
  specification_version: 4
230
305
  summary: A library to assess code quality vs. code coverage
231
306
  test_files: []