dtk-client 0.6.3 → 0.6.4
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/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: []
|