dldinternet-mixlib-thor 0.6.0 → 0.7.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.
- 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:
|