skunk 0.3.1 → 0.5.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.
@@ -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: []