dtk-client 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/command_helpers/service_importer.rb +8 -43
- data/lib/commands/common/thor/assembly_workspace.rb +3 -5
- data/lib/commands/common/thor/module.rb +17 -16
- data/lib/commands/thor/node.rb +12 -16
- data/lib/commands/thor/service.rb +3 -3
- data/lib/commands/thor/service_module.rb +4 -4
- data/lib/commands/thor/target.rb +30 -0
- data/lib/commands/thor/workspace.rb +1 -1
- data/lib/configurator.rb +5 -2
- data/lib/dtk-client/version.rb +1 -1
- data/lib/util/os_util.rb +6 -5
- data/lib/util/remote_dependency_util.rb +5 -1
- metadata +20 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d46ddda1f2067a87c86d33e8ca4c9f5a296240a7
|
4
|
+
data.tar.gz: 52dc5c9d3fdcd9bfcd7eb61187b0af43033d7ae2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14b2a72db3ec12725521967a979e5645e5072212d73a84ad02159aef55d51c60591e5757ca8018ccbfc4e3113a414c4adb44fd24e7115b087545aec9d1389911
|
7
|
+
data.tar.gz: 9f0d95dbbb042c5059eb375bb001451d60863c17b7860e00ef72d31270cc9074ee98bd82dbbbda5af6c7d7257f3b713f357410910d884f2484390693e0b07a6e
|
@@ -19,30 +19,26 @@ module DTK::Client
|
|
19
19
|
# Method will trigger import for each missing module component
|
20
20
|
#
|
21
21
|
def trigger_module_component_import(missing_component_list, required_components, opts={})
|
22
|
-
puts "Auto-importing missing
|
23
|
-
|
24
|
-
|
25
|
-
unless does_not_exist.empty?
|
26
|
-
module_names = does_not_exist.collect{|x| "#{x['namespace']}/#{x['name']}"}
|
27
|
-
OsUtil.print("You do no have access to component modules '#{module_names}' required by service module, or they do not exist on repo manager and will not be imported!", :yellow)
|
28
|
-
return false unless Console.confirmation_prompt("Do you want to continue with import of available component modules and service module"+'?')
|
29
|
-
end
|
22
|
+
puts "Auto-importing missing module(s)"
|
23
|
+
modules_to_import = missing_component_list
|
30
24
|
|
31
25
|
required_components.each do |r_module|
|
32
26
|
module_name = "#{r_module['namespace']}/#{r_module['name']}"
|
33
27
|
module_name += "-#{r_module['version']}" if r_module['version']
|
34
|
-
|
28
|
+
module_type = r_module['type']
|
29
|
+
print "Using #{module_type.gsub('_',' ')} '#{module_name}'\n"
|
35
30
|
end
|
36
31
|
|
37
32
|
modules_to_import.each do |m_module|
|
38
33
|
module_name = "#{m_module['namespace']}/#{m_module['name']}"
|
39
34
|
module_name += "-#{m_module['version']}" if m_module['version']
|
40
|
-
|
35
|
+
module_type = m_module['type']
|
36
|
+
print "Importing #{module_type.gsub('_',' ')} '#{module_name}' ... "
|
41
37
|
new_context_params = ::DTK::Shell::ContextParams.new([module_name])
|
42
38
|
new_context_params.override_method_argument!('option_2', m_module['version'])
|
43
|
-
new_context_params.forward_options( {
|
39
|
+
new_context_params.forward_options( { :skip_cloning => false, :skip_auto_install => true, :module_type => module_type}).merge!(opts)
|
44
40
|
|
45
|
-
response = ContextRouter.routeTask(
|
41
|
+
response = ContextRouter.routeTask(module_type, "install", new_context_params, @conn)
|
46
42
|
puts(response.data(:does_not_exist) ? response.data(:does_not_exist) : "Done.")
|
47
43
|
raise DTK::Client::DtkError, response.error_message unless response.ok?
|
48
44
|
end
|
@@ -50,37 +46,6 @@ module DTK::Client
|
|
50
46
|
Response::Ok.new()
|
51
47
|
end
|
52
48
|
|
53
|
-
# check if component modules dependencies specified in service module exist on repo manager
|
54
|
-
def validate_missing_components(missing_component_list)
|
55
|
-
thor_options = {}
|
56
|
-
thor_options["remote"] = true
|
57
|
-
new_context_params = ::DTK::Shell::ContextParams.new
|
58
|
-
new_context_params.forward_options(thor_options)
|
59
|
-
new_context_params.add_context_to_params(:"component-module", :"component-module")
|
60
|
-
response = ContextRouter.routeTask("component_module", "list", new_context_params, @conn)
|
61
|
-
return response unless response.ok?
|
62
|
-
|
63
|
-
does_not_exist, modules_to_import = [], []
|
64
|
-
|
65
|
-
missing_component_list.each do |missing_cmp|
|
66
|
-
cmp = response.data.select{|x| x['display_name'].eql?("#{missing_cmp['namespace']}/#{missing_cmp['name']}")}
|
67
|
-
if cmp.empty?
|
68
|
-
does_not_exist << missing_cmp
|
69
|
-
else
|
70
|
-
cmp = cmp.first
|
71
|
-
if remote_version = cmp['versions']
|
72
|
-
missing_version = missing_cmp['version']||'CURRENT'
|
73
|
-
does_not_exist << missing_cmp unless (remote_version.include?(missing_version))
|
74
|
-
else
|
75
|
-
does_not_exist << missing_cmp if missing_cmp['version']
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
modules_to_import = missing_component_list - does_not_exist
|
81
|
-
return does_not_exist, modules_to_import
|
82
|
-
end
|
83
|
-
|
84
49
|
def resolve_missing_components(service_module_id, service_module_name, namespace_to_use, force_clone=false)
|
85
50
|
# Get dependency component modules and cross reference them with local component modules
|
86
51
|
module_component_list = post rest_url("service_module/list_component_modules"), { :service_module_id => service_module_id }
|
@@ -52,7 +52,7 @@ module DTK::Client
|
|
52
52
|
# mode will be :create or :update
|
53
53
|
# service_module_name_x can be name or fullname (NS:MOduleName)
|
54
54
|
def promote_assembly_aux(mode,assembly_or_workspace_id,service_module_name_x=nil,assembly_template_name=nil,opts={})
|
55
|
-
namespace = nil
|
55
|
+
namespace,local_clone_dir_exists = nil, nil
|
56
56
|
post_body = {
|
57
57
|
:assembly_id => assembly_or_workspace_id,
|
58
58
|
:mode => mode.to_s
|
@@ -67,12 +67,10 @@ module DTK::Client
|
|
67
67
|
end
|
68
68
|
|
69
69
|
namespace ||= opts[:default_namespace]
|
70
|
-
local_clone_dir_exists = Helper(:git_repo).local_clone_dir_exists?(:service_module, service_module_name, :namespace => namespace)
|
71
|
-
|
72
70
|
if namespace
|
71
|
+
local_clone_dir_exists = Helper(:git_repo).local_clone_dir_exists?(:service_module, service_module_name, :namespace => namespace)
|
73
72
|
post_body.merge!(:namespace => namespace)
|
74
73
|
post_body.merge!(:local_clone_dir_exists => true) if local_clone_dir_exists
|
75
|
-
# post_body.merge!(:local_clone_dir_exists => true) if Helper(:git_repo).local_clone_dir_exists?(:service_module, service_module_name, :namespace => namespace)
|
76
74
|
end
|
77
75
|
|
78
76
|
post_body.merge!(:assembly_template_name => assembly_template_name) if assembly_template_name
|
@@ -85,7 +83,7 @@ module DTK::Client
|
|
85
83
|
service_module_name ||= response.data(:module_name)
|
86
84
|
opts = {:local_branch=>workspace_branch, :namespace => namespace}
|
87
85
|
|
88
|
-
if local_clone_dir_exists
|
86
|
+
if (mode == :update) || local_clone_dir_exists
|
89
87
|
response = Helper(:git_repo).synchronize_clone(:service_module,service_module_name,commit_sha,opts)
|
90
88
|
else
|
91
89
|
response = Helper(:git_repo).create_clone_with_branch(:service_module, service_module_name, repo_url, workspace_branch, version, namespace)
|
@@ -257,9 +257,10 @@ module DTK::Client
|
|
257
257
|
|
258
258
|
unless response.ok?
|
259
259
|
response.set_data_hash({ :full_module_name => new_module_name })
|
260
|
-
# remove new directory if import failed
|
261
|
-
|
262
|
-
|
260
|
+
# remove new directory and leave the old one if import without namespace failed
|
261
|
+
if old_dir and (old_dir != module_final_dir)
|
262
|
+
FileUtils.rm_rf(module_final_dir) unless (namespace && git_import)
|
263
|
+
end
|
263
264
|
return response
|
264
265
|
end
|
265
266
|
|
@@ -283,19 +284,14 @@ module DTK::Client
|
|
283
284
|
response = push_module_aux(context_params, true)
|
284
285
|
|
285
286
|
unless response.ok?
|
286
|
-
# remove new directory if import failed
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
# FileUtils.rm_rf(module_final_dir) unless (namespace && git_import)
|
287
|
+
# remove new directory and leave the old one if import without namespace failed
|
288
|
+
if old_dir and (old_dir != module_final_dir)
|
289
|
+
FileUtils.rm_rf(module_final_dir) unless (namespace && git_import)
|
290
|
+
end
|
291
291
|
return response
|
292
292
|
end
|
293
293
|
|
294
|
-
# remove
|
295
|
-
# DTK-1768: removed below; and replaced by removing old dir if unequal to final dir
|
296
|
-
# was not sure why clause namespace && git_import was in so kept this condition
|
297
|
-
# FileUtils.rm_rf(old_dir) unless (namespace && git_import)
|
298
|
-
# New:
|
294
|
+
# remove source directory if no errors while importing
|
299
295
|
if old_dir and (old_dir != module_final_dir)
|
300
296
|
FileUtils.rm_rf(old_dir) unless (namespace && git_import)
|
301
297
|
end
|
@@ -319,6 +315,7 @@ module DTK::Client
|
|
319
315
|
# in case of auto-import via service import, we skip cloning to speed up a process
|
320
316
|
skip_cloning = context_params.get_forwarded_options()['skip_cloning'] if context_params.get_forwarded_options()
|
321
317
|
do_not_raise = context_params.get_forwarded_options()[:do_not_raise] if context_params.get_forwarded_options()
|
318
|
+
skip_ainstall = context_params.get_forwarded_options() ? context_params.get_forwarded_options()[:skip_auto_install] : false
|
322
319
|
module_type = get_module_type(context_params)
|
323
320
|
|
324
321
|
# ignore_component_error = context_params.get_forwarded_options()[:ignore_component_error]||options.ignore? if context_params.get_forwarded_options()
|
@@ -344,14 +341,18 @@ module DTK::Client
|
|
344
341
|
post_body.merge!(:additional_message => additional_message) if additional_message
|
345
342
|
|
346
343
|
response = post rest_url("#{module_type}/import"), post_body
|
347
|
-
RemoteDependencyUtil.print_dependency_warnings(response)
|
344
|
+
are_there_warnings = RemoteDependencyUtil.print_dependency_warnings(response)
|
345
|
+
|
346
|
+
# prompt to see if user is ready to continue with warnings/errors
|
347
|
+
if are_there_warnings
|
348
|
+
return false unless Console.confirmation_prompt("Do you want to ignore the warnings and proceed with import"+'?')
|
349
|
+
end
|
348
350
|
|
349
351
|
# case when we need to import additional components
|
350
|
-
if (response.ok? && (missing_components = response.data(:missing_module_components)))
|
352
|
+
if (response.ok? && !skip_ainstall && (missing_components = response.data(:missing_module_components)))
|
351
353
|
required_components = response.data(:required_modules)
|
352
354
|
opts = {:do_not_raise=>true}
|
353
355
|
module_opts = ignore_component_error ? opts.merge(:ignore_component_error => true) : opts.merge(:additional_message=>true)
|
354
|
-
module_opts.merge!(:module_type => 'component-module')
|
355
356
|
|
356
357
|
continue = trigger_module_component_import(missing_components, required_components, module_opts)
|
357
358
|
return unless continue
|
data/lib/commands/thor/node.rb
CHANGED
@@ -93,8 +93,8 @@ module DTK::Client
|
|
93
93
|
post rest_url("node/info"), post_body
|
94
94
|
end
|
95
95
|
|
96
|
-
desc "NODE-NAME/ID ssh REMOTE-USER [
|
97
|
-
method_option "--
|
96
|
+
desc "NODE-NAME/ID ssh REMOTE-USER [-i PATH-TO-PEM]","SSH into node, optional parameters are path to indentity file."
|
97
|
+
method_option "--identity-file",:aliases => '-i',:type => :string, :desc => "Identity-File used for connection, if not provided default is used", :banner => "IDENTITY-FILE"
|
98
98
|
def ssh(context_params)
|
99
99
|
if OsUtil.is_windows?
|
100
100
|
puts "[NOTICE] SSH functionality is currenly not supported on Windows."
|
@@ -102,11 +102,10 @@ module DTK::Client
|
|
102
102
|
end
|
103
103
|
|
104
104
|
node_id, remote_user = context_params.retrieve_arguments([:node_id!,:option_1!],method_argument_names)
|
105
|
-
keypair_location = options.keypair
|
106
105
|
|
107
|
-
if
|
108
|
-
unless File.exists?(
|
109
|
-
raise ::DTK::Client::DtkError, "Not able to find
|
106
|
+
if identity_file_location = options['identity-file']
|
107
|
+
unless File.exists?(identity_file_location)
|
108
|
+
raise ::DTK::Client::DtkError, "Not able to find identity file, '#{identity_file_location}'"
|
110
109
|
end
|
111
110
|
end
|
112
111
|
|
@@ -121,23 +120,20 @@ module DTK::Client
|
|
121
120
|
|
122
121
|
connection_string = "#{remote_user}@#{public_dns}"
|
123
122
|
|
124
|
-
|
125
|
-
|
126
|
-
# vanilla ssh command using only pub key
|
127
|
-
vanilla_ssh =
|
123
|
+
default_identity_file = OsUtil.dtk_identity_file_location()
|
128
124
|
|
129
125
|
ssh_command = nil
|
130
126
|
|
131
|
-
if
|
127
|
+
if identity_file_location
|
132
128
|
# provided PEM key
|
133
|
-
ssh_command = "ssh -o \"StrictHostKeyChecking no\" -o \"UserKnownHostsFile /dev/null\" -i #{
|
129
|
+
ssh_command = "ssh -o \"StrictHostKeyChecking no\" -o \"UserKnownHostsFile /dev/null\" -i #{identity_file_location} #{connection_string}"
|
134
130
|
elsif SSHUtil.ssh_reachable?(remote_user, public_dns)
|
135
131
|
# it has PUB key access
|
136
132
|
ssh_command = "ssh -o \"StrictHostKeyChecking no\" -o \"UserKnownHostsFile /dev/null\" #{connection_string}"
|
137
133
|
else
|
138
|
-
# using default
|
139
|
-
if
|
140
|
-
ssh_command = "ssh -o \"StrictHostKeyChecking no\" -o \"UserKnownHostsFile /dev/null\" -i #{
|
134
|
+
# using default identity_file
|
135
|
+
if default_identity_file
|
136
|
+
ssh_command = "ssh -o \"StrictHostKeyChecking no\" -o \"UserKnownHostsFile /dev/null\" -i #{default_identity_file} #{connection_string}"
|
141
137
|
end
|
142
138
|
end
|
143
139
|
|
@@ -147,7 +143,7 @@ module DTK::Client
|
|
147
143
|
Kernel.system(ssh_command)
|
148
144
|
OsUtil.print("You are leaving SSH terminal, and returning to DTK Shell ...", :yellow)
|
149
145
|
else
|
150
|
-
|
146
|
+
response
|
151
147
|
end
|
152
148
|
end
|
153
149
|
|
@@ -167,7 +167,7 @@ TODO: overlaps with different meaning
|
|
167
167
|
['set-attribute',"set-attribute ATTRIBUTE-NAME [VALUE] [-u]","# (Un)Set attribute value. The option -u will unset the attribute's value."],
|
168
168
|
['start', "start", "# Start node instance."],
|
169
169
|
['stop', "stop", "# Stop node instance."],
|
170
|
-
['ssh', "ssh REMOTE-USER [
|
170
|
+
['ssh', "ssh REMOTE-USER [-i PATH-TO-PEM]","# SSH into node, optional parameters are path to identity file."]
|
171
171
|
],
|
172
172
|
:component => [
|
173
173
|
['info',"info","# Return info about component instance belonging to given node."],
|
@@ -449,7 +449,7 @@ TODO: will put in dot release and will rename to 'extend'
|
|
449
449
|
# post rest_url("assembly/list_smoketests"), post_body
|
450
450
|
#end
|
451
451
|
|
452
|
-
desc "SERVICE-NAME/ID grant-access
|
452
|
+
desc "SERVICE-NAME/ID grant-access USER-ACCOUNT PUB-KEY-NAME [PATH-TO-PUB-KEY] [--nodes NODE-NAMES]", "Grants ssh access to user account USER-ACCOUNT for nodes in service instance"
|
453
453
|
method_option :nodes, :type => :string, :default => nil
|
454
454
|
def grant_access(context_params)
|
455
455
|
service_id, system_user, rsa_key_name, path_to_rsa_pub_key = context_params.retrieve_arguments([:service_id!,:option_1!, :option_2!, :option_3],method_argument_names)
|
@@ -475,7 +475,7 @@ TODO: will put in dot release and will rename to 'extend'
|
|
475
475
|
nil
|
476
476
|
end
|
477
477
|
|
478
|
-
desc "SERVICE-NAME/ID revoke-access
|
478
|
+
desc "SERVICE-NAME/ID revoke-access USER-ACCOUNT PUB-KEY-NAME [PATH-TO-PUB-KEY] [--nodes NODE-NAMES]", "Revokes ssh access to user account USER-ACCOUNT for nodes in service instance"
|
479
479
|
method_option :nodes, :type => :string, :default => nil
|
480
480
|
def revoke_access(context_params)
|
481
481
|
service_id, system_user, rsa_key_name = context_params.retrieve_arguments([:service_id!,:option_1!, :option_2!],method_argument_names)
|
@@ -431,10 +431,10 @@ module DTK::Client
|
|
431
431
|
response = push(context_params,true)
|
432
432
|
|
433
433
|
unless response.ok?
|
434
|
-
# remove new directory if import failed
|
435
|
-
|
436
|
-
|
437
|
-
|
434
|
+
# remove new directory and leave the old one if import without namespace failed
|
435
|
+
if old_dir and (old_dir != module_final_dir)
|
436
|
+
FileUtils.rm_rf(module_final_dir) unless namespace
|
437
|
+
end
|
438
438
|
return response
|
439
439
|
end
|
440
440
|
|
data/lib/commands/thor/target.rb
CHANGED
@@ -197,5 +197,35 @@ module DTK::Client
|
|
197
197
|
|
198
198
|
return post rest_url("target/delete"), post_body
|
199
199
|
end
|
200
|
+
|
201
|
+
desc "TARGET-NAME/ID edit-target [--keypair KEYPAIR] [--security-group SECURITY-GROUP(S)]","Edit keypair or security-group for given target"
|
202
|
+
method_option :keypair, :type => :string
|
203
|
+
method_option :security_group, :type => :string, :aliases => '--security-groups'
|
204
|
+
def edit_target(context_params)
|
205
|
+
target_id = context_params.retrieve_arguments([:target_id!],method_argument_names)
|
206
|
+
keypair, security_group = context_params.retrieve_thor_options([:keypair, :security_group], options)
|
207
|
+
|
208
|
+
raise ::DTK::Client::DtkValidationError.new("You have to provide security-group or keypair to edit target!") unless keypair || security_group
|
209
|
+
|
210
|
+
security_groups, iaas_properties = [], {}
|
211
|
+
iaas_properties.merge!(:keypair => keypair) if keypair
|
212
|
+
|
213
|
+
if security_group
|
214
|
+
raise ::DTK::Client::DtkValidationError.new("Multiple security groups should be separated with ',' and without spaces between them (e.g. --security_groups gr1,gr2,gr3,...) ") if security_group.end_with?(',')
|
215
|
+
security_groups = security_group.split(',')
|
216
|
+
if (security_groups.empty? || security_groups.size==1)
|
217
|
+
iaas_properties.merge!(:security_group => security_group)
|
218
|
+
else
|
219
|
+
iaas_properties.merge!(:security_group_set => security_groups)
|
220
|
+
end
|
221
|
+
end
|
222
|
+
@@invalidate_map << :target
|
223
|
+
|
224
|
+
post_body = {
|
225
|
+
:target_id => target_id,
|
226
|
+
:iaas_properties => iaas_properties
|
227
|
+
}
|
228
|
+
return post rest_url("target/edit_target"), post_body
|
229
|
+
end
|
200
230
|
end
|
201
231
|
end
|
@@ -140,7 +140,7 @@ module DTK::Client
|
|
140
140
|
['set-attribute',"set-attribute ATTRIBUTE-NAME [VALUE] [-u]","# (Un)Set attribute value. The option -u will unset the attribute's value."],
|
141
141
|
['start', "start", "# Start node instance."],
|
142
142
|
['stop', "stop", "# Stop node instance."],
|
143
|
-
['ssh', "ssh REMOTE-USER [
|
143
|
+
['ssh', "ssh REMOTE-USER [-i PATH-TO-PEM]","# SSH into node, optional parameters are path to identity file."]
|
144
144
|
],
|
145
145
|
|
146
146
|
:component => [
|
data/lib/configurator.rb
CHANGED
@@ -144,8 +144,11 @@ module DTK
|
|
144
144
|
|
145
145
|
def self.enter_catalog_credentials()
|
146
146
|
property_template = {}
|
147
|
-
|
148
|
-
|
147
|
+
# needed to preserve the order for ruby 1.8.7
|
148
|
+
# ruby 1.8 does not preserve order of insertation
|
149
|
+
wizard_values = { :username => 'Catalog Username', :password => 'Catalog Password' }
|
150
|
+
[:username, :password].each do |p|
|
151
|
+
value = ask("#{wizard_values[p]}: ") { |q| q.echo = false if p == :password }
|
149
152
|
property_template.store(p, value)
|
150
153
|
end
|
151
154
|
property_template
|
data/lib/dtk-client/version.rb
CHANGED
data/lib/util/os_util.rb
CHANGED
@@ -9,7 +9,7 @@ module DTK
|
|
9
9
|
|
10
10
|
extend Auxiliary
|
11
11
|
|
12
|
-
|
12
|
+
DTK_IDENTITY_FILE = 'dtk.pem'
|
13
13
|
|
14
14
|
class << self
|
15
15
|
def is_mac?
|
@@ -181,10 +181,10 @@ module DTK
|
|
181
181
|
#
|
182
182
|
# Checks to find dtk.pem in configuration node, if not found displays tip message
|
183
183
|
#
|
184
|
-
def
|
185
|
-
|
186
|
-
return
|
187
|
-
print("TIP: You can save your
|
184
|
+
def dtk_identity_file_location()
|
185
|
+
path_to_identity_file = "#{dtk_local_folder}#{DTK_IDENTITY_FILE}"
|
186
|
+
return path_to_identity_file if File.exists?(path_to_identity_file)
|
187
|
+
print("TIP: You can save your identity file as '#{path_to_identity_file}' and it will be used as default identityfile.", :yellow)
|
188
188
|
nil
|
189
189
|
end
|
190
190
|
|
@@ -279,6 +279,7 @@ module DTK
|
|
279
279
|
load File.expand_path('../../lib/shell/domain.rb', File.dirname(__FILE__))
|
280
280
|
load File.expand_path('../../lib/domain/git_adapter.rb', File.dirname(__FILE__))
|
281
281
|
load File.expand_path('../../lib/command_helpers/git_repo.rb', File.dirname(__FILE__))
|
282
|
+
load File.expand_path('../../lib/command_helpers/service_importer.rb', File.dirname(__FILE__))
|
282
283
|
paths = []
|
283
284
|
paths << File.expand_path('../../lib/commands/thor/*.rb', File.dirname(__FILE__))
|
284
285
|
paths << File.expand_path('../../lib/commands/common/thor/*.rb', File.dirname(__FILE__))
|
@@ -10,14 +10,18 @@ module DTK
|
|
10
10
|
class << self
|
11
11
|
|
12
12
|
def print_dependency_warnings(response, success_msg=nil)
|
13
|
-
|
13
|
+
are_there_warnings = false
|
14
|
+
return are_there_warnings if response.nil? || response.data.nil?
|
15
|
+
|
14
16
|
warnings = response.data['dependency_warnings']
|
15
17
|
if warnings && !warnings.empty?
|
16
18
|
print_out "Following warnings have been detected for current module by Repo Manager:\n"
|
17
19
|
warnings.each { |w| print_out(" - #{w}") }
|
18
20
|
puts
|
21
|
+
are_there_warnings = true
|
19
22
|
end
|
20
23
|
print_out success_msg, :green if success_msg
|
24
|
+
are_there_warnings
|
21
25
|
end
|
22
26
|
|
23
27
|
def module_ref_content(location)
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dtk-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rich PELAVIN
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.2.4
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.2.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -56,98 +56,98 @@ dependencies:
|
|
56
56
|
name: mime-types
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1.25'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.25'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: hirb
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 0.7.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.7.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: thor
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 0.15.4
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ~>
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.15.4
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: erubis
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ~>
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: 2.7.0
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ~>
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 2.7.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: dtk-common-core
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ~>
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: 0.6.0
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ~>
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 0.6.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: git
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ~>
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: 1.2.6
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ~>
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 1.2.6
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: colorize
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- -
|
143
|
+
- - ~>
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: 0.5.8
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- -
|
150
|
+
- - ~>
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 0.5.8
|
153
153
|
- !ruby/object:Gem::Dependency
|
@@ -328,12 +328,12 @@ require_paths:
|
|
328
328
|
- lib
|
329
329
|
required_ruby_version: !ruby/object:Gem::Requirement
|
330
330
|
requirements:
|
331
|
-
- -
|
331
|
+
- - '>='
|
332
332
|
- !ruby/object:Gem::Version
|
333
333
|
version: '0'
|
334
334
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
335
335
|
requirements:
|
336
|
-
- -
|
336
|
+
- - '>='
|
337
337
|
- !ruby/object:Gem::Version
|
338
338
|
version: '0'
|
339
339
|
requirements: []
|