dldinternet-mixlib-thor 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +17 -3
- data/dldinternet-mixlib-thor.gemspec +3 -1
- data/lib/dldinternet/thor/command.rb +12 -0
- data/lib/dldinternet/thor/dynamic_command.rb +34 -0
- data/lib/dldinternet/thor/mixins/no_commands.rb +148 -43
- data/lib/dldinternet/thor/vcr.rb +20 -0
- data/lib/dldinternet/thor/vcr/logger.rb +24 -0
- data/lib/dldinternet/thor/version.rb +1 -1
- metadata +47 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92e001459d25a189e5430f6794b22de3a9729853
|
4
|
+
data.tar.gz: c3f18989af8e2419050f606b07ba417a7589f0b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a80c92d83ba89917814d6c7581895bc1ff568e562ffee76b60f81f84821ef84a8ce6f31cab26f865ce18adfd52eca8c53b92b3a554ffbb95595b6a54079a859
|
7
|
+
data.tar.gz: c3e32340ceeae019939d0853366c89e1b226ac24d61c693b0610a11af676c6a41e37a96569960def018a6753e165b7395f9f92c0e93bc688b7b455f5f4cca2c7
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
dldinternet-mixlib-thor (0.
|
4
|
+
dldinternet-mixlib-thor (0.7.0)
|
5
|
+
activesupport (~> 5.1, >= 5.1.4)
|
5
6
|
awesome_print
|
6
7
|
command_line_reporter (~> 3.3, >= 3.3.6)
|
7
8
|
config-factory
|
@@ -9,16 +10,23 @@ PATH
|
|
9
10
|
hashie
|
10
11
|
inifile
|
11
12
|
paint-shortcuts
|
12
|
-
thor (~> 0.19, >= 0)
|
13
|
+
thor (~> 0.19, >= 0.19.4)
|
14
|
+
vcr (~> 3.0, >= 3.0.3)
|
13
15
|
|
14
16
|
GEM
|
15
17
|
remote: https://rubygems.org/
|
16
18
|
specs:
|
19
|
+
activesupport (5.1.4)
|
20
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
21
|
+
i18n (~> 0.7)
|
22
|
+
minitest (~> 5.1)
|
23
|
+
tzinfo (~> 1.1)
|
17
24
|
awesome_print (1.8.0)
|
18
25
|
builder (3.2.3)
|
19
26
|
colored (1.2)
|
20
27
|
command_line_reporter (3.3.6)
|
21
28
|
colored (>= 1.2)
|
29
|
+
concurrent-ruby (1.0.5)
|
22
30
|
config-factory (0.0.9)
|
23
31
|
cucumber (0.10.7)
|
24
32
|
builder (>= 2.1.2)
|
@@ -32,13 +40,15 @@ GEM
|
|
32
40
|
gherkin (2.4.21)
|
33
41
|
json (>= 1.4.6)
|
34
42
|
hashie (3.5.6)
|
43
|
+
i18n (0.8.6)
|
35
44
|
inifile (3.0.0)
|
36
45
|
json (2.0.3)
|
37
46
|
little-plugger (1.1.4)
|
38
47
|
logging (2.2.2)
|
39
48
|
little-plugger (~> 1.1)
|
40
49
|
multi_json (~> 1.10)
|
41
|
-
|
50
|
+
minitest (5.10.3)
|
51
|
+
multi_json (1.12.2)
|
42
52
|
paint (2.0.0)
|
43
53
|
paint-shortcuts (2.0.0)
|
44
54
|
paint (>= 1.0, < 3.0)
|
@@ -47,7 +57,11 @@ GEM
|
|
47
57
|
term-ansicolor (1.4.0)
|
48
58
|
tins (~> 1.0)
|
49
59
|
thor (0.20.0)
|
60
|
+
thread_safe (0.3.6)
|
50
61
|
tins (1.13.2)
|
62
|
+
tzinfo (1.2.3)
|
63
|
+
thread_safe (~> 0.1)
|
64
|
+
vcr (3.0.3)
|
51
65
|
|
52
66
|
PLATFORMS
|
53
67
|
ruby
|
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ['lib']
|
19
19
|
|
20
|
-
gem.add_runtime_dependency 'thor', '~> 0.19', '>= 0'
|
20
|
+
gem.add_runtime_dependency 'thor', '~> 0.19', '>= 0.19.4'
|
21
21
|
gem.add_dependency 'awesome_print' #, '~> 1.2'
|
22
22
|
gem.add_dependency 'paint-shortcuts', '>= 0'
|
23
23
|
gem.add_dependency 'inifile' #, '~> '
|
@@ -25,6 +25,8 @@ Gem::Specification.new do |gem|
|
|
25
25
|
gem.add_dependency 'command_line_reporter', '~> 3.3', '>= 3.3.6'
|
26
26
|
gem.add_dependency 'dldinternet-mixlib-logging', '>= 0.7.0'
|
27
27
|
gem.add_dependency 'config-factory' #, '~> '
|
28
|
+
gem.add_dependency 'vcr', '~> 3.0', '>= 3.0.3'
|
29
|
+
gem.add_dependency 'activesupport', '~> 5.1', '>= 5.1.4'
|
28
30
|
|
29
31
|
gem.add_development_dependency 'bundler', '~> 1.0'
|
30
32
|
gem.add_development_dependency 'rake', '~> 10'
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'thor'
|
2
|
+
require 'dldinternet/thor/dynamic_command'
|
2
3
|
require 'awesome_print'
|
3
4
|
|
4
5
|
module DLDInternet
|
@@ -11,6 +12,8 @@ module DLDInternet
|
|
11
12
|
|
12
13
|
end
|
13
14
|
|
15
|
+
attr_reader :cassette,:vcr_logger
|
16
|
+
|
14
17
|
class << self
|
15
18
|
attr_accessor :invocations
|
16
19
|
|
@@ -33,6 +36,10 @@ module DLDInternet
|
|
33
36
|
0
|
34
37
|
end
|
35
38
|
|
39
|
+
def dynamic_command_class #:nodoc:
|
40
|
+
::DLDInternet::Thor::DynamicCommand
|
41
|
+
end
|
42
|
+
|
36
43
|
def handle_argument_error(command, error, args, arity) #:nodoc:
|
37
44
|
command_s = banner(command)
|
38
45
|
# msg = "ERROR: \"#{basename} #{command.name}\" was called with "
|
@@ -43,6 +50,11 @@ module DLDInternet
|
|
43
50
|
raise ::Thor::InvocationError, msg
|
44
51
|
end
|
45
52
|
|
53
|
+
def handle_no_command_error(command, has_namespace = $thor_runner) #:nodoc:
|
54
|
+
raise ::Thor::UndefinedCommandError, "Could not find command #{command.inspect} in #{namespace.inspect} namespace." if has_namespace
|
55
|
+
raise ::Thor::UndefinedCommandError, "Could not find command #{command.inspect}."
|
56
|
+
end
|
57
|
+
|
46
58
|
protected
|
47
59
|
|
48
60
|
def banner(command, namespace = nil, subcommand = false)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'thor/command'
|
3
|
+
|
4
|
+
module DLDInternet
|
5
|
+
module Thor
|
6
|
+
class DynamicCommand < ::Thor::DynamicCommand
|
7
|
+
# By default, a command invokes a method in the thor class. You can change this
|
8
|
+
# implementation to create custom commands.
|
9
|
+
def run(instance, args = [])
|
10
|
+
arity = nil
|
11
|
+
|
12
|
+
if private_method?(instance)
|
13
|
+
instance.class.handle_no_command_error(name)
|
14
|
+
elsif public_method?(instance)
|
15
|
+
arity = instance.method(name).arity
|
16
|
+
instance.__send__(name, *args)
|
17
|
+
elsif local_method?(instance, :method_missing)
|
18
|
+
instance.__send__(:method_missing, name.to_sym, *args)
|
19
|
+
else
|
20
|
+
if instance.class.instance_methods.include?(:handle_no_command_error)
|
21
|
+
instance.handle_no_command_error(name)
|
22
|
+
else
|
23
|
+
instance.class.handle_no_command_error(name)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
rescue ArgumentError => e
|
27
|
+
handle_argument_error?(instance, e, caller) ? instance.class.handle_argument_error(self, e, args, arity) : (raise e)
|
28
|
+
rescue ::Thor::NoMethodError => e
|
29
|
+
handle_no_method_error?(instance, e, caller) ? instance.class.handle_no_command_error(name) : (raise e)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -6,6 +6,39 @@ require 'hashie/mash'
|
|
6
6
|
require 'dldinternet/thor/version'
|
7
7
|
require 'inifile'
|
8
8
|
require 'config/factory'
|
9
|
+
require 'dldinternet/thor/vcr'
|
10
|
+
require 'active_support/core_ext/object/blank'
|
11
|
+
|
12
|
+
class String
|
13
|
+
def to_bool
|
14
|
+
return true if self == true || !self.match(/^(true|t|yes|y|1|on)$/i).nil?
|
15
|
+
return false if self == false || self.blank? || !self.match(/^(false|f|no|n|0|off)$/i).nil?
|
16
|
+
raise ArgumentError.new("invalid value for Boolean: \"#{self}\"")
|
17
|
+
end
|
18
|
+
alias :to_b :to_bool
|
19
|
+
|
20
|
+
def class_from
|
21
|
+
self.split('::').inject(Object) do |mod, class_name|
|
22
|
+
mod.const_get(class_name)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
alias :to_class :class_from
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
class TrueClass
|
30
|
+
def to_bool
|
31
|
+
true
|
32
|
+
end
|
33
|
+
alias :to_b :to_bool
|
34
|
+
end
|
35
|
+
|
36
|
+
class FalseClass
|
37
|
+
def to_bool
|
38
|
+
false
|
39
|
+
end
|
40
|
+
alias :to_b :to_bool
|
41
|
+
end
|
9
42
|
|
10
43
|
module DLDInternet
|
11
44
|
module Thor
|
@@ -19,8 +52,7 @@ module DLDInternet
|
|
19
52
|
include DLDInternet::Mixlib::Logging
|
20
53
|
|
21
54
|
def validate_options
|
22
|
-
|
23
|
-
@options = OptionsMash.new(@options.to_h)
|
55
|
+
writeable_options
|
24
56
|
if options[:log_level]
|
25
57
|
log_level = options[:log_level].to_sym
|
26
58
|
raise "Invalid log-level: #{log_level}" unless LOG_LEVELS.include?(log_level)
|
@@ -31,8 +63,14 @@ module DLDInternet
|
|
31
63
|
@options[:output] ||= @options[:format]
|
32
64
|
end
|
33
65
|
|
66
|
+
def writeable_options
|
67
|
+
return if @options.is_a?(OptionsMash)
|
68
|
+
OptionsMash.disable_warnings
|
69
|
+
@options = OptionsMash.new(@options.to_h)
|
70
|
+
end
|
71
|
+
|
34
72
|
def load_inifile
|
35
|
-
unless File.exist?(@options[:inifile])
|
73
|
+
unless !@options[:inifile].blank? && File.exist?(@options[:inifile])
|
36
74
|
raise "#{@options[:inifile]} not found!"
|
37
75
|
end
|
38
76
|
begin
|
@@ -75,36 +113,73 @@ module DLDInternet
|
|
75
113
|
end
|
76
114
|
|
77
115
|
def load_config
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
if yaml
|
86
|
-
yaml.each {|key, value|
|
87
|
-
@options[key.to_s.gsub(%r{[-]}, '_').to_sym]=value
|
88
|
-
}
|
116
|
+
unless @options[:config].blank?
|
117
|
+
@options[:config] = File.expand_path(@options[:config])
|
118
|
+
if ::File.exist?(@options[:config])
|
119
|
+
begin
|
120
|
+
envs = ::Config::Factory::Environments.load_file(@options[:config])
|
121
|
+
if envs and envs.is_a?(Hash) and @options[:environment]
|
122
|
+
@options[:environments] = ::Hashie::Mash.new(envs)
|
89
123
|
else
|
90
|
-
|
91
|
-
|
92
|
-
|
124
|
+
yaml = ::YAML.load(File.read(@options[:config]))
|
125
|
+
if yaml
|
126
|
+
yaml.each {|key, value|
|
127
|
+
@options[key.to_s.gsub(%r{[-]}, '_').to_sym]=value
|
128
|
+
}
|
129
|
+
else
|
130
|
+
msg = "#{options.config} is not a valid configuration!"
|
131
|
+
@logger.error msg
|
132
|
+
raise StandardError.new(msg)
|
133
|
+
end
|
93
134
|
end
|
135
|
+
rescue ::Exception => e
|
136
|
+
@logger.error "#{e.class.name} #{e.message}"
|
137
|
+
raise e
|
94
138
|
end
|
95
|
-
|
96
|
-
@logger.
|
97
|
-
|
139
|
+
else
|
140
|
+
@logger.warn "#{options.config} not found"
|
141
|
+
@logger.error "Invalid/No configuration file specified"
|
142
|
+
exit 2
|
143
|
+
#@options[:environments] = ::Hashie::Mash.new
|
98
144
|
end
|
99
145
|
else
|
100
|
-
@logger.
|
146
|
+
@logger.error 'Invalid/No configuration file specified'
|
101
147
|
end
|
102
148
|
end
|
103
149
|
|
104
150
|
def parse_options
|
105
151
|
validate_options
|
106
152
|
|
107
|
-
|
153
|
+
get_logger(true)
|
154
|
+
|
155
|
+
if @options[:inifile]
|
156
|
+
@options[:inifile] = File.expand_path(@options[:inifile])
|
157
|
+
load_inifile
|
158
|
+
elsif @options[:config]
|
159
|
+
if @options[:config] =~ /\.ini/i
|
160
|
+
@options[:inifile] = @options[:config]
|
161
|
+
load_inifile
|
162
|
+
else
|
163
|
+
load_config
|
164
|
+
end
|
165
|
+
end
|
166
|
+
if options[:debug]
|
167
|
+
@logger.info "Options:\n#{options.ai}"
|
168
|
+
end
|
169
|
+
if options[:stubber].is_a?(String)
|
170
|
+
options[:stubber] = options[:stubber].split(/\s*,\s*/).map(&:to_sym)
|
171
|
+
elsif options[:stubber].is_a?(Array) && options[:stubber].size == 1 && options[:stubber][0].is_a?(String)
|
172
|
+
options[:stubber] = options[:stubber][0].split(/\s*,\s*/).map(&:to_sym)
|
173
|
+
elsif options[:stubber].is_a?(Array) && options[:stubber].size > 1 && options[:stubber][0].is_a?(String)
|
174
|
+
options[:stubber] = options[:stubber].map(&:to_sym)
|
175
|
+
end
|
176
|
+
|
177
|
+
end
|
178
|
+
|
179
|
+
def get_logger(force=false)
|
180
|
+
return unless force || @logger.nil?
|
181
|
+
writeable_options
|
182
|
+
lcs = ::Logging::ColorScheme.new('compiler', :levels => {
|
108
183
|
:trace => :blue,
|
109
184
|
:debug => :cyan,
|
110
185
|
:info => :green,
|
@@ -114,13 +189,13 @@ module DLDInternet
|
|
114
189
|
:fatal => :red,
|
115
190
|
:todo => :purple,
|
116
191
|
})
|
117
|
-
scheme
|
192
|
+
scheme = lcs.scheme
|
118
193
|
scheme['trace'] = "\e[38;5;33m"
|
119
194
|
scheme['fatal'] = "\e[38;5;89m"
|
120
195
|
scheme['todo'] = "\e[38;5;55m"
|
121
196
|
lcs.scheme scheme
|
122
|
-
@config
|
123
|
-
@config[:log_opts]
|
197
|
+
@config = @options.dup
|
198
|
+
@config[:log_opts] = lambda {|mlll| {
|
124
199
|
:pattern => "%#{mlll}l: %m %g\n",
|
125
200
|
:date_pattern => '%Y-%m-%d %H:%M:%S',
|
126
201
|
:color_scheme => 'compiler',
|
@@ -130,27 +205,10 @@ module DLDInternet
|
|
130
205
|
# :level => @config[:log_level],
|
131
206
|
}
|
132
207
|
}
|
133
|
-
@config[:log_levels]
|
208
|
+
@config[:log_levels] ||= LOG_LEVELS
|
134
209
|
@options[:log_config] = @config
|
135
210
|
# initLogging(@config)
|
136
211
|
@logger = getLogger(@config)
|
137
|
-
|
138
|
-
if @options[:inifile]
|
139
|
-
@options[:inifile] = File.expand_path(@options[:inifile])
|
140
|
-
load_inifile
|
141
|
-
elsif @options[:config]
|
142
|
-
@options[:config] = File.expand_path(@options[:config])
|
143
|
-
if @options[:config] =~ /\.ini/i
|
144
|
-
@options[:inifile] = @options[:config]
|
145
|
-
load_inifile
|
146
|
-
else
|
147
|
-
load_config
|
148
|
-
end
|
149
|
-
end
|
150
|
-
if options[:debug]
|
151
|
-
@logger.info "Options:\n#{options.ai}"
|
152
|
-
end
|
153
|
-
|
154
212
|
end
|
155
213
|
|
156
214
|
def abort!(msg)
|
@@ -233,8 +291,16 @@ module DLDInternet
|
|
233
291
|
end
|
234
292
|
|
235
293
|
def command_pre(*args)
|
294
|
+
args.flatten!
|
236
295
|
parse_options
|
237
296
|
@logger.info @_invocations.map{ |_,v| v[0]}.join(' ') if options[:verbose]
|
297
|
+
command_pre_start_vcr(args)
|
298
|
+
end
|
299
|
+
|
300
|
+
def command_post(rc=0)
|
301
|
+
command_post_stop_vcr
|
302
|
+
@command_post = true
|
303
|
+
rc
|
238
304
|
end
|
239
305
|
|
240
306
|
def command_out(res, fmtr=nil)
|
@@ -284,6 +350,45 @@ module DLDInternet
|
|
284
350
|
super
|
285
351
|
end
|
286
352
|
|
353
|
+
def handle_no_command_error(command, has_namespace = $thor_runner)
|
354
|
+
get_logger unless @logger#:nodoc:
|
355
|
+
@logger.error "Could not find command #{command.inspect} in #{namespace.inspect} namespace." if has_namespace
|
356
|
+
@logger.error "Could not find command #{command.inspect}."
|
357
|
+
1
|
358
|
+
end
|
359
|
+
|
360
|
+
protected
|
361
|
+
|
362
|
+
def command_pre_start_vcr(*args)
|
363
|
+
args.flatten!
|
364
|
+
if options[:vcr]
|
365
|
+
unless options[:cassette_path].match(%r{^#{File::SEPARATOR}})
|
366
|
+
if File.dirname($0).eql?(Dir.pwd)
|
367
|
+
@logger.error "Saving fixtures to #{Dir.pwd}!"
|
368
|
+
exit 1
|
369
|
+
end
|
370
|
+
end
|
371
|
+
|
372
|
+
@vcr_logger ||= ::DLDInternet::Thor::VCR::Logger.new(nil, @logger)
|
373
|
+
::VCR.configure do |config|
|
374
|
+
config.cassette_library_dir = options[:cassette_path]
|
375
|
+
config.hook_into *options[:stubber]
|
376
|
+
config.logger = @vcr_logger
|
377
|
+
end
|
378
|
+
opts = args[0].is_a?(Hash) ? args.shift : {}
|
379
|
+
options[:cassette] ||= @_invocations.map{ |_,v| v[0]}.join('-')
|
380
|
+
@cassette = ::VCR.insert_cassette(opts[:cassette] || options[:cassette], match_requests_on: [:method,:uri,:headers,:body], record: options[:record_mode])
|
381
|
+
end
|
382
|
+
yield if block_given?
|
383
|
+
end
|
384
|
+
|
385
|
+
def command_post_stop_vcr
|
386
|
+
if options[:vcr]
|
387
|
+
::VCR.eject_cassette
|
388
|
+
@cassette = nil
|
389
|
+
@vcr_logger = nil
|
390
|
+
end
|
391
|
+
end
|
287
392
|
end
|
288
393
|
end
|
289
394
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'vcr'
|
2
|
+
require 'dldinternet/thor/vcr/logger'
|
3
|
+
|
4
|
+
|
5
|
+
module VCR
|
6
|
+
class Configuration
|
7
|
+
|
8
|
+
attr_accessor :logger
|
9
|
+
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module VCR
|
14
|
+
# The media VCR uses to store HTTP interactions for later re-use.
|
15
|
+
class Cassette
|
16
|
+
|
17
|
+
attr_reader :options
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'vcr/util/logger'
|
2
|
+
|
3
|
+
module DLDInternet
|
4
|
+
module Thor
|
5
|
+
module VCR
|
6
|
+
class Logger < ::VCR::Logger
|
7
|
+
attr_reader :options
|
8
|
+
|
9
|
+
def initialize(stream, logger=nil, options = {})
|
10
|
+
super(stream)
|
11
|
+
@logger = logger
|
12
|
+
@options = options
|
13
|
+
end
|
14
|
+
|
15
|
+
def log(message, log_prefix, indentation_level = 0)
|
16
|
+
indentation = ' ' * indentation_level
|
17
|
+
log_message = indentation + log_prefix + message
|
18
|
+
@logger.debug(log_message)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dldinternet-mixlib-thor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christo De Lange
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '0.19'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: 0.19.4
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '0.19'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: 0.19.4
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: awesome_print
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,6 +134,46 @@ dependencies:
|
|
134
134
|
- - ">="
|
135
135
|
- !ruby/object:Gem::Version
|
136
136
|
version: '0'
|
137
|
+
- !ruby/object:Gem::Dependency
|
138
|
+
name: vcr
|
139
|
+
requirement: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - "~>"
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '3.0'
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: 3.0.3
|
147
|
+
type: :runtime
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - "~>"
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '3.0'
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: 3.0.3
|
157
|
+
- !ruby/object:Gem::Dependency
|
158
|
+
name: activesupport
|
159
|
+
requirement: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - "~>"
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '5.1'
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 5.1.4
|
167
|
+
type: :runtime
|
168
|
+
prerelease: false
|
169
|
+
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '5.1'
|
174
|
+
- - ">="
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: 5.1.4
|
137
177
|
- !ruby/object:Gem::Dependency
|
138
178
|
name: bundler
|
139
179
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,7 +238,10 @@ files:
|
|
198
238
|
- lib/dldinternet/formatters/errors.rb
|
199
239
|
- lib/dldinternet/formatters/table.rb
|
200
240
|
- lib/dldinternet/thor/command.rb
|
241
|
+
- lib/dldinternet/thor/dynamic_command.rb
|
201
242
|
- lib/dldinternet/thor/mixins/no_commands.rb
|
243
|
+
- lib/dldinternet/thor/vcr.rb
|
244
|
+
- lib/dldinternet/thor/vcr/logger.rb
|
202
245
|
- lib/dldinternet/thor/version.rb
|
203
246
|
homepage: https://rubygems.org/gems/dldinternet-mixlib-thor
|
204
247
|
licenses:
|