carioca 2.1.3 → 2.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -4
- data/Gemfile +0 -1
- data/README.md +53 -0
- data/Rakefile +4 -4
- data/VERSION +1 -1
- data/carioca.gemspec +4 -4
- data/lib/carioca/configuration.rb +1 -1
- data/lib/carioca/constants.rb +9 -12
- data/lib/carioca/dependencies.rb +0 -4
- data/lib/carioca/mixin.rb +5 -5
- data/lib/carioca/registry.rb +8 -8
- data/lib/carioca/registry_file.rb +2 -2
- data/lib/carioca/services/debug.rb +3 -3
- data/lib/carioca/services/finisher.rb +108 -115
- data/lib/carioca/services/init.rb +1 -1
- data/lib/carioca/services/output.rb +6 -6
- data/lib/carioca/services/sanitycheck.rb +90 -106
- data/lib/carioca/services/securestore.rb +74 -75
- data/lib/carioca/services/setup.rb +55 -60
- data/lib/carioca/services/toolbox.rb +93 -94
- data/samples/Gemfile +7 -0
- data/samples/test.rb +39 -43
- metadata +19 -19
- data/Gemfile.lock +0 -132
@@ -1,104 +1,103 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# base Carioca namespace
|
4
4
|
module Carioca
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
result = {}
|
13
|
-
self.methods(false).each do |meth|
|
14
|
-
next if meth == :describe
|
15
|
-
result[meth] = self.send meth, **{describe: true}
|
16
|
-
end
|
17
|
-
return result
|
18
|
-
end
|
5
|
+
module Services
|
6
|
+
# Exiter namespace
|
7
|
+
class Toolbox
|
8
|
+
def self.describe
|
9
|
+
result = {}
|
10
|
+
methods(false).each do |meth|
|
11
|
+
next if meth == :describe
|
19
12
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
13
|
+
result[meth] = send meth, describe: true
|
14
|
+
end
|
15
|
+
result
|
16
|
+
end
|
17
|
+
|
18
|
+
# return the 'root' name
|
19
|
+
# @return [String] name
|
20
|
+
def self.user_root(description: 'Get the local system root username ', describe: false)
|
21
|
+
return description if describe
|
22
|
+
|
23
|
+
Etc.getpwuid(0).name
|
24
|
+
end
|
25
|
+
|
26
|
+
# return the 'root' group name : root or wheel
|
27
|
+
# @return [String] name
|
28
|
+
def self.group_root(description: 'Get the local system root groupname ', describe: false)
|
29
|
+
return description if describe
|
30
|
+
|
31
|
+
Etc.getgrgid(0).name
|
32
|
+
end
|
33
|
+
|
34
|
+
# facility for retreiving PID from process query
|
35
|
+
# @option [String] :pattern a regexp to search
|
36
|
+
# @option [Array] :patterns an array of regexp to search
|
37
|
+
# @option [Bool] :full flag to retrieve all process data not only PID
|
38
|
+
# @return [String|Array] PID or data structure
|
39
|
+
def self.get_processes(patterns: [], pattern: nil, full: false, description: 'Get the list of running processus', describe: false)
|
40
|
+
return description if describe
|
41
|
+
|
42
|
+
patterns << pattern if pattern
|
43
|
+
res = ::PS.get_all_processes
|
44
|
+
patterns.each do |item|
|
45
|
+
res = res.find_processes item
|
46
|
+
end
|
47
|
+
if full
|
48
|
+
res
|
49
|
+
else
|
50
|
+
res.pick_attr('PID')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# facility to find a file in gem path
|
55
|
+
# @param [String] _gem a Gem name
|
56
|
+
# @param [String] _file a file relative path in the gem
|
57
|
+
# @return [String] the path of the file, if found.
|
58
|
+
# @return [False] if not found
|
59
|
+
def self.search_file_in_gem(gem: nil, file: nil, description: 'Retrieve absolute path of a file in a specific gem', describe: false)
|
60
|
+
return description if describe
|
61
|
+
|
62
|
+
if Gem::Specification.respond_to?(:find_by_name)
|
63
|
+
begin
|
64
|
+
spec = Gem::Specification.find_by_name(gem)
|
65
|
+
rescue LoadError
|
66
|
+
spec = nil
|
67
|
+
end
|
68
|
+
else
|
69
|
+
spec = Gem.searcher.find(gem)
|
70
|
+
end
|
71
|
+
if spec
|
72
|
+
res = if Gem::Specification.respond_to?(:find_by_name)
|
73
|
+
spec.lib_dirs_glob.split('/')
|
80
74
|
else
|
81
|
-
|
75
|
+
Gem.searcher.lib_dirs_for(spec).split('/')
|
82
76
|
end
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
# facility to verifying if the active process run as root
|
88
|
-
# @return [Bool] status
|
89
|
-
def self.is_root?(description: "Verify if active current processus is running as root", describe: false)
|
90
|
-
return description if describe
|
91
|
-
return Process.uid == 0
|
92
|
-
end
|
77
|
+
res.pop
|
78
|
+
services_path = res.join('/').concat("/#{file}")
|
79
|
+
return services_path if File.exist?(services_path)
|
93
80
|
|
94
|
-
# check if unicode must be used with term ENV
|
95
|
-
# @return [Boolean]
|
96
|
-
def self.check_unicode_term(description: "Check if terminal support unicode", describe: false)
|
97
|
-
return description if describe
|
98
|
-
return false unless ENV.include? "TERM"
|
99
|
-
return (ENV.values_at("LC_ALL","LC_CTYPE","LANG").compact.include?("UTF-8") and ENV.values_at('TERM').include? "xterm")
|
100
|
-
end
|
101
|
-
|
102
81
|
end
|
82
|
+
false
|
83
|
+
end
|
84
|
+
|
85
|
+
# facility to verifying if the active process run as root
|
86
|
+
# @return [Bool] status
|
87
|
+
def self.root?(description: 'Verify if active current processus is running as root', describe: false)
|
88
|
+
return description if describe
|
89
|
+
|
90
|
+
Process.uid.zero?
|
91
|
+
end
|
92
|
+
|
93
|
+
# check if unicode must be used with term ENV
|
94
|
+
# @return [Boolean]
|
95
|
+
def self.check_unicode_term(description: 'Check if terminal support unicode', describe: false)
|
96
|
+
return description if describe
|
97
|
+
return false unless ENV.include? 'TERM'
|
98
|
+
|
99
|
+
(ENV.values_at('LC_ALL', 'LC_CTYPE', 'LANG').compact.include?('UTF-8') and ENV.values_at('TERM').include? 'xterm')
|
100
|
+
end
|
103
101
|
end
|
102
|
+
end
|
104
103
|
end
|
data/samples/Gemfile
ADDED
data/samples/test.rb
CHANGED
@@ -47,7 +47,6 @@ spec = {
|
|
47
47
|
type: :internal
|
48
48
|
}
|
49
49
|
|
50
|
-
|
51
50
|
puts "\nTest 1 : access to registry : adding a internal service MyService"
|
52
51
|
Carioca::Registry.init.add service: :myservice, definition: spec
|
53
52
|
|
@@ -55,24 +54,21 @@ puts "\nTest 2 : list of avaible services : MyService include"
|
|
55
54
|
logger = Carioca::Registry.get.get_service name: :logger
|
56
55
|
logger.info(to_s) { "Available services : #{Carioca::Registry.get.services.keys} " }
|
57
56
|
|
58
|
-
|
59
57
|
puts "\nTest 3 : using MyService "
|
60
58
|
myservice = Carioca::Registry.get.get_service name: :myservice
|
61
59
|
myservice.hello
|
62
60
|
|
63
|
-
|
64
|
-
|
65
61
|
puts "\nTest 4 : Service I18n test :es, :fr, come back :en vi service output"
|
66
62
|
i18n = Carioca::Registry.get.get_service name: :i18n
|
67
63
|
output = Carioca::Registry.get.get_service name: :output
|
68
|
-
[
|
64
|
+
%i[es fr en].each do |locale|
|
69
65
|
i18n.locale = locale
|
70
66
|
output.item i18n.t(:test)
|
71
67
|
end
|
72
68
|
|
73
69
|
puts "\nTest 5 : Service I18n test fallback :en on local :es for missing :es locale"
|
74
70
|
i18n.locale = :es
|
75
|
-
|
71
|
+
output.item i18n.t(:fallback)
|
76
72
|
i18n.locale = :en
|
77
73
|
|
78
74
|
puts "\nTest 5 : Service Configuration test merge runtime form config file"
|
@@ -80,7 +76,6 @@ config = Carioca::Registry.get.get_service name: :configuration
|
|
80
76
|
pp config.settings.to_h
|
81
77
|
config.settings.newkey = 'value'
|
82
78
|
|
83
|
-
|
84
79
|
# template override sample
|
85
80
|
class MyAppli < Carioca::Container
|
86
81
|
def test
|
@@ -98,21 +93,21 @@ class MyAppli < Carioca::Container
|
|
98
93
|
def test2
|
99
94
|
cycle = %i[unknown fatal error ko warn info item arrow scheduling trigger sending calling receive
|
100
95
|
ok success debug flat]
|
101
|
-
puts
|
96
|
+
puts '*** color and Emoji'
|
102
97
|
cycle.each do |verb|
|
103
98
|
output.send verb, verb.to_s
|
104
99
|
end
|
105
|
-
puts
|
100
|
+
puts '*** no-color and Emoji'
|
106
101
|
output.color = false
|
107
102
|
cycle.each do |verb|
|
108
103
|
output.send verb, verb.to_s
|
109
104
|
end
|
110
|
-
puts
|
105
|
+
puts '*** no-color and no-Emoji'
|
111
106
|
output.emoji = false
|
112
107
|
cycle.each do |verb|
|
113
108
|
output.send verb, verb.to_s
|
114
109
|
end
|
115
|
-
puts
|
110
|
+
puts '*** color and no-Emoji'
|
116
111
|
output.color = true
|
117
112
|
cycle.each do |verb|
|
118
113
|
output.send verb, verb.to_s
|
@@ -138,7 +133,7 @@ appli.test3
|
|
138
133
|
output.emoji = true
|
139
134
|
output.color = true
|
140
135
|
|
141
|
-
puts "\nTest 9 : Service toolbox list of
|
136
|
+
puts "\nTest 9 : Service toolbox list of availables methodes"
|
142
137
|
toolbox = Carioca::Registry.get.get_service name: :toolbox
|
143
138
|
pp toolbox.describe
|
144
139
|
|
@@ -146,7 +141,7 @@ puts "\nTest 10 : Service toolbox test of simple methode : :user_root"
|
|
146
141
|
pp toolbox.user_root
|
147
142
|
|
148
143
|
puts "\nTest 11 : Service toolbox test of simple methode : :search_file_in_gem"
|
149
|
-
pp toolbox.search_file_in_gem('carioca','config/locales/en.yml')
|
144
|
+
pp toolbox.search_file_in_gem(gem: 'carioca', file: 'config/locales/en.yml')
|
150
145
|
|
151
146
|
puts "\nTest 12 : Service setup execute setup schema from configuration"
|
152
147
|
setup = Carioca::Registry.get.get_service name: :setup
|
@@ -157,58 +152,59 @@ sanitycheck = Carioca::Registry.get.get_service name: :sanitycheck
|
|
157
152
|
sanitycheck.run
|
158
153
|
|
159
154
|
puts "\nTest 14 : Service SecureStore init or access"
|
160
|
-
|
161
|
-
|
155
|
+
puts 'skipped'
|
156
|
+
# securestore = Carioca::Registry.get.get_service name: :securestore
|
162
157
|
|
163
158
|
puts "\nTest 15 : Service SecureStore getting previous data"
|
164
|
-
res = (securestore.data.empty?)? "first time" : securestore.data.to_s
|
165
|
-
output.info res
|
159
|
+
# res = (securestore.data.empty?)? "first time" : securestore.data.to_s
|
160
|
+
# output.info res
|
161
|
+
puts 'skipped'
|
166
162
|
|
167
163
|
puts "\nTest 16 : Service SecureStore setting new data"
|
168
|
-
securestore.data[:time] = Time.now
|
169
|
-
securestore.save!
|
164
|
+
# securestore.data[:time] = Time.now
|
165
|
+
# securestore.save!
|
166
|
+
puts 'skipped'
|
170
167
|
|
171
168
|
puts "\nTest 17 : Service finisher : test all cases"
|
172
|
-
output.item
|
169
|
+
output.item 'flat api return, no-json, no-structured'
|
173
170
|
finisher = Carioca::Registry.get.get_service name: :finisher
|
174
|
-
test = finisher.secure_api_return(return_case: :status_ok, structured: false, json: false) do
|
175
|
-
|
171
|
+
test = finisher.secure_api_return(return_case: :status_ok, structured: false, json: false) do
|
172
|
+
'test'
|
176
173
|
end
|
177
174
|
puts test
|
178
175
|
|
179
|
-
output.item
|
180
|
-
test = finisher.secure_api_return(return_case: :status_ok, structured: false, json: false) do
|
181
|
-
finisher.secure_raise message:
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
test = finisher.secure_api_return(return_case: :status_ok, structured: true, json: true) do
|
188
|
-
finisher.secure_raise message:
|
189
|
-
|
176
|
+
output.item 'api return, no-json, no-structured but with secure_raise'
|
177
|
+
test = finisher.secure_api_return(return_case: :status_ok, structured: false, json: false) do
|
178
|
+
finisher.secure_raise message: 'error !', error_case: :status_ko
|
179
|
+
'test'
|
180
|
+
end
|
181
|
+
puts test
|
182
|
+
|
183
|
+
output.item 'api return, json, structured but with secure_raise'
|
184
|
+
test = finisher.secure_api_return(return_case: :status_ok, structured: true, json: true) do
|
185
|
+
finisher.secure_raise message: 'error !', error_case: :status_ko
|
186
|
+
'test'
|
190
187
|
end
|
191
188
|
puts test[:status]
|
192
189
|
puts test[:data]
|
193
190
|
|
194
|
-
output.item
|
195
|
-
test = finisher.secure_api_return(return_case: :status_ok, structured: true, json: true) do
|
196
|
-
|
191
|
+
output.item 'api return, json, structured'
|
192
|
+
test = finisher.secure_api_return(return_case: :status_ok, structured: true, json: true) do
|
193
|
+
'test'
|
197
194
|
end
|
198
195
|
puts test[:status]
|
199
196
|
puts test[:data]
|
200
197
|
|
201
|
-
|
202
|
-
|
203
|
-
test
|
204
|
-
"test"
|
198
|
+
output.item 'api return, json, structured with status=false'
|
199
|
+
test = finisher.secure_api_return(return_case: :status_ok, structured: true, json: true, status: false) do
|
200
|
+
'test'
|
205
201
|
end
|
206
202
|
puts test
|
207
203
|
|
208
204
|
puts "\nTest 18 : Service finisher : exit case in success"
|
209
205
|
i18n.locale = :fr
|
210
|
-
finisher.secure_execute! exit_case: :success_exit do
|
206
|
+
finisher.secure_execute! exit_case: :success_exit do
|
211
207
|
puts 'finishing action'
|
212
|
-
#finisher.secure_raise message: "error !", error_case: :status_ko
|
208
|
+
# finisher.secure_raise message: "error !", error_case: :status_ko
|
213
209
|
'message'
|
214
|
-
end
|
210
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carioca
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Romain GEORGES
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: deep_merge
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.23.1
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: bundle-audit
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.1.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.1.0
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: code_statistics
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,20 +178,6 @@ dependencies:
|
|
164
178
|
- - "~>"
|
165
179
|
- !ruby/object:Gem::Version
|
166
180
|
version: '0.1'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: bundle-audit
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - "~>"
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: 0.1.0
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - "~>"
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: 0.1.0
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: version
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -235,7 +235,6 @@ files:
|
|
235
235
|
- ".rspec"
|
236
236
|
- ".rubocop.yml"
|
237
237
|
- Gemfile
|
238
|
-
- Gemfile.lock
|
239
238
|
- LICENSE.txt
|
240
239
|
- README.md
|
241
240
|
- Rakefile
|
@@ -284,6 +283,7 @@ files:
|
|
284
283
|
- lib/carioca/services/toolbox.rb
|
285
284
|
- lib/carioca/validator.rb
|
286
285
|
- lib/carioca/version.rb
|
286
|
+
- samples/Gemfile
|
287
287
|
- samples/Rakefile
|
288
288
|
- samples/config/carioca.registry
|
289
289
|
- samples/config/locales/en.yml
|
@@ -308,14 +308,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
308
308
|
requirements:
|
309
309
|
- - ">="
|
310
310
|
- !ruby/object:Gem::Version
|
311
|
-
version: 2.
|
311
|
+
version: 3.2.3
|
312
312
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
313
313
|
requirements:
|
314
314
|
- - ">="
|
315
315
|
- !ruby/object:Gem::Version
|
316
316
|
version: '0'
|
317
317
|
requirements: []
|
318
|
-
rubygems_version: 3.
|
318
|
+
rubygems_version: 3.4.19
|
319
319
|
signing_key:
|
320
320
|
specification_version: 4
|
321
321
|
summary: 'Carioca : Container And Registry with Inversion Of Control for your Applications'
|
data/Gemfile.lock
DELETED
@@ -1,132 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
carioca (2.1.0)
|
5
|
-
deep_merge (~> 1.2)
|
6
|
-
i18n (~> 1.10)
|
7
|
-
locale (~> 2.1)
|
8
|
-
pastel (~> 0.8.0)
|
9
|
-
ps-ruby (~> 0.0.4)
|
10
|
-
tty-prompt (~> 0.23.1)
|
11
|
-
version (~> 1.1)
|
12
|
-
|
13
|
-
GEM
|
14
|
-
remote: https://rubygems.org/
|
15
|
-
specs:
|
16
|
-
ast (2.4.2)
|
17
|
-
bundle-audit (0.1.0)
|
18
|
-
bundler-audit
|
19
|
-
bundler-audit (0.9.1)
|
20
|
-
bundler (>= 1.2.0, < 3)
|
21
|
-
thor (~> 1.0)
|
22
|
-
code_statistics (0.2.13)
|
23
|
-
concurrent-ruby (1.2.2)
|
24
|
-
cyclonedx-ruby (1.1.0)
|
25
|
-
json (~> 2.2)
|
26
|
-
nokogiri (~> 1.8)
|
27
|
-
ostruct (~> 0.1)
|
28
|
-
rest-client (~> 2.0)
|
29
|
-
deep_merge (1.2.2)
|
30
|
-
diff-lcs (1.5.0)
|
31
|
-
domain_name (0.5.20190701)
|
32
|
-
unf (>= 0.0.5, < 1.0.0)
|
33
|
-
http-accept (1.7.0)
|
34
|
-
http-cookie (1.0.5)
|
35
|
-
domain_name (~> 0.5)
|
36
|
-
i18n (1.14.1)
|
37
|
-
concurrent-ruby (~> 1.0)
|
38
|
-
json (2.6.2)
|
39
|
-
locale (2.1.3)
|
40
|
-
mime-types (3.4.1)
|
41
|
-
mime-types-data (~> 3.2015)
|
42
|
-
mime-types-data (3.2023.0218.1)
|
43
|
-
mini_portile2 (2.8.2)
|
44
|
-
netrc (0.11.0)
|
45
|
-
nokogiri (1.15.2)
|
46
|
-
mini_portile2 (~> 2.8.2)
|
47
|
-
racc (~> 1.4)
|
48
|
-
nokogiri (1.15.2-arm64-darwin)
|
49
|
-
racc (~> 1.4)
|
50
|
-
ostruct (0.5.5)
|
51
|
-
parallel (1.22.1)
|
52
|
-
parser (3.1.2.0)
|
53
|
-
ast (~> 2.4.1)
|
54
|
-
pastel (0.8.0)
|
55
|
-
tty-color (~> 0.5)
|
56
|
-
ps-ruby (0.0.4)
|
57
|
-
racc (1.7.1)
|
58
|
-
rainbow (3.1.1)
|
59
|
-
rake (13.0.6)
|
60
|
-
regexp_parser (2.5.0)
|
61
|
-
rest-client (2.1.0)
|
62
|
-
http-accept (>= 1.7.0, < 2.0)
|
63
|
-
http-cookie (>= 1.0.2, < 2.0)
|
64
|
-
mime-types (>= 1.16, < 4.0)
|
65
|
-
netrc (~> 0.8)
|
66
|
-
rexml (3.2.5)
|
67
|
-
rspec (3.9.0)
|
68
|
-
rspec-core (~> 3.9.0)
|
69
|
-
rspec-expectations (~> 3.9.0)
|
70
|
-
rspec-mocks (~> 3.9.0)
|
71
|
-
rspec-core (3.9.3)
|
72
|
-
rspec-support (~> 3.9.3)
|
73
|
-
rspec-expectations (3.9.4)
|
74
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
75
|
-
rspec-support (~> 3.9.0)
|
76
|
-
rspec-mocks (3.9.1)
|
77
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
78
|
-
rspec-support (~> 3.9.0)
|
79
|
-
rspec-support (3.9.4)
|
80
|
-
rubocop (1.32.0)
|
81
|
-
json (~> 2.3)
|
82
|
-
parallel (~> 1.10)
|
83
|
-
parser (>= 3.1.0.0)
|
84
|
-
rainbow (>= 2.2.2, < 4.0)
|
85
|
-
regexp_parser (>= 1.8, < 3.0)
|
86
|
-
rexml (>= 3.2.5, < 4.0)
|
87
|
-
rubocop-ast (>= 1.19.1, < 2.0)
|
88
|
-
ruby-progressbar (~> 1.7)
|
89
|
-
unicode-display_width (>= 1.4.0, < 3.0)
|
90
|
-
rubocop-ast (1.19.1)
|
91
|
-
parser (>= 3.1.1.0)
|
92
|
-
ruby-progressbar (1.11.0)
|
93
|
-
thor (1.2.2)
|
94
|
-
tty-color (0.6.0)
|
95
|
-
tty-cursor (0.7.1)
|
96
|
-
tty-prompt (0.23.1)
|
97
|
-
pastel (~> 0.8)
|
98
|
-
tty-reader (~> 0.8)
|
99
|
-
tty-reader (0.9.0)
|
100
|
-
tty-cursor (~> 0.7)
|
101
|
-
tty-screen (~> 0.8)
|
102
|
-
wisper (~> 2.0)
|
103
|
-
tty-screen (0.8.1)
|
104
|
-
unf (0.1.4)
|
105
|
-
unf_ext
|
106
|
-
unf_ext (0.0.8.2)
|
107
|
-
unicode-display_width (2.2.0)
|
108
|
-
version (1.1.1)
|
109
|
-
webrick (1.7.0)
|
110
|
-
wisper (2.0.1)
|
111
|
-
yard (0.9.28)
|
112
|
-
webrick (~> 1.7.0)
|
113
|
-
yard-rspec (0.1)
|
114
|
-
yard
|
115
|
-
|
116
|
-
PLATFORMS
|
117
|
-
arm64-darwin-20
|
118
|
-
ruby
|
119
|
-
|
120
|
-
DEPENDENCIES
|
121
|
-
bundle-audit (~> 0.1.0)
|
122
|
-
carioca!
|
123
|
-
code_statistics (~> 0.2.13)
|
124
|
-
cyclonedx-ruby (~> 1.1)
|
125
|
-
rake (~> 13.0)
|
126
|
-
rspec (~> 3.0)
|
127
|
-
rubocop (~> 1.32)
|
128
|
-
yard (~> 0.9.27)
|
129
|
-
yard-rspec (~> 0.1)
|
130
|
-
|
131
|
-
BUNDLED WITH
|
132
|
-
2.3.24
|