dtk-client 0.5.18 → 0.6.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 +5 -13
- data/lib/command_helpers/test_module_creator.rb +3 -2
- data/lib/commands/common/thor/assembly_workspace.rb +28 -11
- data/lib/commands/common/thor/module.rb +1 -1
- data/lib/commands/common/thor/purge_clone.rb +18 -0
- data/lib/commands/thor/assembly.rb +1 -1
- data/lib/commands/thor/node_template.rb +44 -18
- data/lib/commands/thor/service.rb +14 -2
- data/lib/commands/thor/workspace.rb +14 -1
- data/lib/dtk-client/version.rb +1 -1
- data/lib/parser/adapters/thor.rb +24 -2
- metadata +21 -21
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
OTY2OWU3ODA4OGFlZTAwMDZlNmUwOGNiMDA3MzVjZWJlYTk4ZjlmNA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 924cb223833c0f10b4c810b3e1d7f5dc74ce274e
|
4
|
+
data.tar.gz: e8c98938d95c03ec4b60d61b613ec35e9e7954c7
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
YmM2ZjRhYjVkODFmNjQwODRmMjdkZjRmMzY1ZmYyZGMxYzg4ZWM5MWE3MWIy
|
11
|
-
ZjdlODEyMTIwOWFmM2ViYTUyMzZkMTFmNDU4ZGQ5MGU2ZDg1NTQ=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZWZkYjM2MzIzNmU5NGNlOTA0YTU3Zjk4NzU1MWU0ZDZlOGRmMTllYTFlM2U5
|
14
|
-
NjVlYjEzNzZkZTJjMzllYzg5ZWQzMmFmYThmM2U4MTM3MGNhYmE2M2UxMWYz
|
15
|
-
NTViYjlmNjAyOGViMjUyOTVmMjMyNGRhOWU3ZDNjMTNiZTdjZDg=
|
6
|
+
metadata.gz: 8a855b4408447bc5545a9ef6f0e879c0c7e07d1436e302d6884c35b632863d59b63934d57e420657cfb0cc43b1a92cfb219f8bbf790f89246988921de3fa886a
|
7
|
+
data.tar.gz: ce5d0a8bb741436c1fd73971306a0d6b836208e6b2483f7f63899a6d50532199603dd1c2c4e39d286517b1bc0ee926c6b2c8897208775f812c6ebf5aac213b62
|
@@ -8,13 +8,14 @@ module DTK::Client
|
|
8
8
|
Response.wrap_helper_actions do
|
9
9
|
modules_dir = OsUtil.test_clone_location()
|
10
10
|
FileUtils.mkdir_p(modules_dir) unless File.directory?(modules_dir)
|
11
|
-
module_name = ModuleUtil.filter_module_name(module_name)
|
12
11
|
target_repo_dir = OsUtil.module_location(type,module_name)
|
12
|
+
|
13
13
|
begin
|
14
|
-
FileUtils.
|
14
|
+
FileUtils.mkdir_p(target_repo_dir)
|
15
15
|
generate_model(module_name, target_repo_dir)
|
16
16
|
generate_serverspec_files(module_name, target_repo_dir)
|
17
17
|
rescue => e
|
18
|
+
additional_error_msg = ""
|
18
19
|
error_msg = "Create of directory (#{target_repo_dir}) failed."
|
19
20
|
additional_error_msg = "Directory already exists" if e.message.include? "File exists"
|
20
21
|
raise DTK::ErrorUsage.new(error_msg + " " + additional_error_msg,:log_error=>false)
|
@@ -51,33 +51,41 @@ module DTK::Client
|
|
51
51
|
|
52
52
|
# mode will be :create or :update
|
53
53
|
# service_module_name_x can be name or fullname (NS:MOduleName)
|
54
|
-
def promote_assembly_aux(mode,assembly_or_workspace_id,service_module_name_x=nil,assembly_template_name=nil)
|
54
|
+
def promote_assembly_aux(mode,assembly_or_workspace_id,service_module_name_x=nil,assembly_template_name=nil,opts={})
|
55
|
+
namespace = nil
|
55
56
|
post_body = {
|
56
57
|
:assembly_id => assembly_or_workspace_id,
|
57
58
|
:mode => mode.to_s
|
58
59
|
}
|
60
|
+
|
59
61
|
if service_module_name_x
|
60
62
|
service_module_name = service_module_name_x
|
61
|
-
namespace = nil
|
62
63
|
if service_module_name_x =~ /(^[^:]+):([^:]+$)/
|
63
64
|
namespace,service_module_name = [$1,$2]
|
64
65
|
end
|
65
66
|
post_body.merge!(:service_module_name => service_module_name)
|
66
|
-
if namespace
|
67
|
-
post_body.merge!(:namespace => namespace)
|
68
|
-
end
|
69
67
|
end
|
68
|
+
|
69
|
+
namespace ||= opts[:default_namespace]
|
70
|
+
if namespace
|
71
|
+
post_body.merge!(:namespace => namespace)
|
72
|
+
post_body.merge!(:local_clone_dir_exists => true) if Helper(:git_repo).local_clone_dir_exists?(:service_module, service_module_name, :namespace => namespace)
|
73
|
+
end
|
74
|
+
|
70
75
|
post_body.merge!(:assembly_template_name => assembly_template_name) if assembly_template_name
|
76
|
+
post_body.merge!(:use_module_namespace => true) if opts[:use_module_namespace]
|
71
77
|
response = post rest_url("assembly/promote_to_template"), post_body
|
72
|
-
# when changing context send request for getting latest assembly_templates instead of getting from cache
|
73
|
-
# @@invalidate_map << :assembly_template
|
74
|
-
|
75
78
|
return response unless response.ok?()
|
79
|
+
|
76
80
|
#synchronize_clone will load new assembly template into service clone on workspace (if it exists)
|
77
|
-
commit_sha,workspace_branch,namespace = response.data(:commit_sha,:workspace_branch,:module_namespace)
|
81
|
+
commit_sha,workspace_branch,namespace,full_module_name = response.data(:commit_sha,:workspace_branch,:module_namespace,:full_module_name)
|
78
82
|
service_module_name ||= response.data(:module_name)
|
79
83
|
opts = {:local_branch=>workspace_branch, :namespace => namespace}
|
80
|
-
Helper(:git_repo).synchronize_clone(:service_module,service_module_name,commit_sha,opts)
|
84
|
+
response = Helper(:git_repo).synchronize_clone(:service_module,service_module_name,commit_sha,opts)
|
85
|
+
return response unless response.ok?
|
86
|
+
|
87
|
+
DTK::Client::OsUtil.print("New assembly template '#{assembly_template_name}' created in service module '#{full_module_name}'.", :yellow) if mode == :create
|
88
|
+
response
|
81
89
|
end
|
82
90
|
|
83
91
|
def list_violations_aux(context_params)
|
@@ -631,6 +639,15 @@ module DTK::Client
|
|
631
639
|
return unless Console.confirmation_prompt("Are you sure you want to delete and destroy all nodes in the workspace"+'?')
|
632
640
|
end
|
633
641
|
|
642
|
+
unsaved_modules = check_if_unsaved_changes(assembly_or_workspace_id)
|
643
|
+
unless unsaved_modules.empty?
|
644
|
+
return unless Console.confirmation_prompt("Purging the workspace will cause unsaved changes in component module(s) '#{unsaved_modules.join(',')}' to be lost. Do you still want to proceed"+'?')
|
645
|
+
end
|
646
|
+
|
647
|
+
# purge local clone
|
648
|
+
response = purge_clone_aux(:all,:assembly_module => {:assembly_name => 'workspace'})
|
649
|
+
return response unless response.ok?
|
650
|
+
|
634
651
|
post_body = {
|
635
652
|
:assembly_id => assembly_or_workspace_id
|
636
653
|
}
|
@@ -848,7 +865,7 @@ module DTK::Client
|
|
848
865
|
filtered.reject! do |r|
|
849
866
|
match = r.to_s.include?(filter_pattern)
|
850
867
|
if r["node_id"] && r["node_id"] != node_id
|
851
|
-
node_id = r["node_id"]
|
868
|
+
node_id = (r["node_id"] && r["node_id"].to_s)
|
852
869
|
node_name = r["node_name"]
|
853
870
|
end
|
854
871
|
|
@@ -187,7 +187,7 @@ module DTK::Client
|
|
187
187
|
namespace, local_module_name = get_namespace_and_name(module_name, ModuleUtil::NAMESPACE_SEPERATOR)
|
188
188
|
|
189
189
|
# Create component module from user's input git repo
|
190
|
-
response = Helper(:git_repo).create_clone_with_branch(module_type.to_sym, local_module_name, git_repo_url)
|
190
|
+
response = Helper(:git_repo).create_clone_with_branch(module_type.to_sym, local_module_name, git_repo_url, nil, nil, namespace)
|
191
191
|
|
192
192
|
# Raise error if git repository is invalid
|
193
193
|
# raise DtkError,"Git repository URL '#{git_repo_url}' is invalid." unless response.ok?
|
@@ -22,5 +22,23 @@ module DTK::Client
|
|
22
22
|
end
|
23
23
|
response
|
24
24
|
end
|
25
|
+
|
26
|
+
def check_if_unsaved_changes(assembly_or_workspace_id, opts={})
|
27
|
+
unsaved_modules = []
|
28
|
+
post_body = {
|
29
|
+
:assembly_id => assembly_or_workspace_id,
|
30
|
+
:subtype => 'instance'
|
31
|
+
}
|
32
|
+
response = post rest_url("assembly/get_component_modules"), post_body
|
33
|
+
|
34
|
+
if response.ok?
|
35
|
+
response.data.each do |cmp_mod|
|
36
|
+
unsaved_modules << "#{cmp_mod['namespace_name']}:#{cmp_mod['display_name']}" if cmp_mod['local_copy_diff']
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
unsaved_modules
|
41
|
+
end
|
42
|
+
|
25
43
|
end
|
26
44
|
end
|
@@ -267,7 +267,7 @@ module DTK::Client
|
|
267
267
|
# we check current options and forwarded options (from deploy method)
|
268
268
|
in_target = options["in-target"] || context_params.get_forwarded_thor_option("in-target")
|
269
269
|
instance_bindings = options["instance-bindings"]
|
270
|
-
settings = options["settings"]
|
270
|
+
settings = parse_service_settings(options["settings"])
|
271
271
|
assembly_list = Assembly.assembly_list()
|
272
272
|
|
273
273
|
if name
|
@@ -16,25 +16,7 @@ module DTK::Client
|
|
16
16
|
def self.validation_list(context_params)
|
17
17
|
get_cached_response(:node_template, "node/list", {:subtype => 'template'})
|
18
18
|
end
|
19
|
-
=begin
|
20
|
-
#Not implemented yet
|
21
|
-
desc "NODE-TEMPLATE-NAME/ID info", "Get information about given node template."
|
22
|
-
method_option :list, :type => :boolean, :default => false
|
23
|
-
def info(context_params)
|
24
|
-
node_template_id = context_params.retrieve_arguments([:node_template_id!],method_argument_names)
|
25
|
-
data_type = :node
|
26
19
|
|
27
|
-
post_body = {
|
28
|
-
:node_id => node_template_id,
|
29
|
-
:subtype => 'template'
|
30
|
-
}
|
31
|
-
response = post rest_url("node/info"), post_body
|
32
|
-
|
33
|
-
response.render_table(data_type) unless options.list?
|
34
|
-
|
35
|
-
return response
|
36
|
-
end
|
37
|
-
=end
|
38
20
|
# desc "list --all -t [TARGET-NAME]", "List all node templates."
|
39
21
|
desc "list", "List all node templates."
|
40
22
|
method_option :all, :type => :boolean, :default => false
|
@@ -62,6 +44,50 @@ module DTK::Client
|
|
62
44
|
}
|
63
45
|
post rest_url("node/image_upgrade"), post_body
|
64
46
|
end
|
47
|
+
|
48
|
+
desc "add-node-template NODE-TEMPLATE-NAME TARGET-NAME/ID --os OS --image-id IMAGE-ID --size SIZE[,SIZE2,..]", "Add new node template"
|
49
|
+
method_option "os"
|
50
|
+
method_option "image-id",:aliases => "-i"
|
51
|
+
method_option "size",:aliases => "-s"
|
52
|
+
def add_node_template(context_params)
|
53
|
+
node_template_name, target_id = context_params.retrieve_arguments([:option_1!, :option_2!],method_argument_names)
|
54
|
+
missing_opts = ['os','image-id'].reject{|k|options.has_key?(k)}
|
55
|
+
unless missing_opts.empty?
|
56
|
+
pl = (missing_opts.size > 1)
|
57
|
+
missing = missing_opts.map{|o|"--#{o}"}.join(',')
|
58
|
+
raise DtkError, "[ERROR] The mandatory #{plural?(pl,'option')} (#{missing}) #{plural?(pl,'is/are')} missing"
|
59
|
+
end
|
60
|
+
size_array = options[:size] && options[:size].split(',')
|
61
|
+
post_body = post_body(
|
62
|
+
:node_template_name => node_template_name,
|
63
|
+
:target_id => target_id,
|
64
|
+
:operating_system => options['os'],
|
65
|
+
:image_id => options['image-id'],
|
66
|
+
:size_array => size_array
|
67
|
+
)
|
68
|
+
post rest_url("node/add_node_template"), post_body
|
69
|
+
end
|
70
|
+
|
71
|
+
=begin
|
72
|
+
#Not implemented yet
|
73
|
+
desc "NODE-TEMPLATE-NAME/ID info", "Get information about given node template."
|
74
|
+
method_option :list, :type => :boolean, :default => false
|
75
|
+
def info(context_params)
|
76
|
+
node_template_id = context_params.retrieve_arguments([:node_template_id!],method_argument_names)
|
77
|
+
data_type = :node
|
78
|
+
|
79
|
+
post_body = {
|
80
|
+
:node_id => node_template_id,
|
81
|
+
:subtype => 'template'
|
82
|
+
}
|
83
|
+
response = post rest_url("node/info"), post_body
|
84
|
+
|
85
|
+
response.render_table(data_type) unless options.list?
|
86
|
+
|
87
|
+
return response
|
88
|
+
end
|
89
|
+
=end
|
90
|
+
|
65
91
|
=begin
|
66
92
|
#TODO: move to form desc "NODE-TEMPLATE-NAME/ID stage [INSTANCE-NAME]"
|
67
93
|
#will then have to reverse arguments
|
@@ -205,7 +205,13 @@ TODO: overlaps with different meaning
|
|
205
205
|
desc "SERVICE-NAME/ID create-assembly [NAMESPACE:]SERVICE-MODULE-NAME ASSEMBLY-NAME", "Create a new assembly from this service instance in the designated service module."
|
206
206
|
def create_assembly(context_params)
|
207
207
|
assembly_id, service_module_name, assembly_template_name = context_params.retrieve_arguments([:service_id!,:option_1!,:option_2!],method_argument_names)
|
208
|
-
|
208
|
+
|
209
|
+
# need default_namespace for create-assembly because need to check if local service-module directory existst in promote_assembly_aux
|
210
|
+
resp = post rest_url("namespace/default_namespace_name")
|
211
|
+
return resp unless resp.ok?
|
212
|
+
default_namespace = resp.data
|
213
|
+
|
214
|
+
response = promote_assembly_aux(:create,assembly_id,service_module_name,assembly_template_name,{:default_namespace=>default_namespace})
|
209
215
|
return response unless response.ok?
|
210
216
|
|
211
217
|
@@invalidate_map << :assembly
|
@@ -236,7 +242,8 @@ TODO: overlaps with different meaning
|
|
236
242
|
else
|
237
243
|
[nil,nil]
|
238
244
|
end
|
239
|
-
|
245
|
+
|
246
|
+
response = promote_assembly_aux(:update,assembly_id, service_module_name, assembly_template_name,{:use_module_namespace=>true})
|
240
247
|
return response unless response.ok?
|
241
248
|
@@invalidate_map << :assembly
|
242
249
|
Response::Ok.new()
|
@@ -525,6 +532,11 @@ TODO: will put in dot release and will rename to 'extend'
|
|
525
532
|
return unless Console.confirmation_prompt("Are you sure you want to delete and destroy service '#{assembly_name}' and its nodes"+'?')
|
526
533
|
end
|
527
534
|
|
535
|
+
unsaved_modules = check_if_unsaved_changes(assembly_id)
|
536
|
+
unless unsaved_modules.empty?
|
537
|
+
return unless Console.confirmation_prompt("Deleting this service will cause unsaved changes in component module(s) '#{unsaved_modules.join(',')}' to be lost. Do you still want to proceed"+'?')
|
538
|
+
end
|
539
|
+
|
528
540
|
# purge local clone
|
529
541
|
response = purge_clone_aux(:all,:assembly_module => {:assembly_name => assembly_name})
|
530
542
|
return response unless response.ok?
|
@@ -198,8 +198,15 @@ module DTK::Client
|
|
198
198
|
method_option :purge, :aliases => '-p', :type => :boolean, :default => false
|
199
199
|
def create_assembly(context_params)
|
200
200
|
workspace_id, service_module_full_name, assembly_template_name = context_params.retrieve_arguments([:workspace_id!,:option_1!,:option_2!],method_argument_names)
|
201
|
-
|
201
|
+
|
202
|
+
# need default_namespace for create-assembly because need to check if local service-module directory existst in promote_assembly_aux
|
203
|
+
resp = post rest_url("namespace/default_namespace_name")
|
204
|
+
return resp unless resp.ok?
|
205
|
+
default_namespace = resp.data
|
206
|
+
|
207
|
+
response = promote_assembly_aux(:create,workspace_id,service_module_full_name,assembly_template_name,{:default_namespace=>default_namespace})
|
202
208
|
return response unless response.ok?
|
209
|
+
|
203
210
|
if options.purge?
|
204
211
|
response = purge_aux(context_params)
|
205
212
|
return response unless response.ok?
|
@@ -425,6 +432,12 @@ module DTK::Client
|
|
425
432
|
set_attribute_aux(context_params)
|
426
433
|
end
|
427
434
|
|
435
|
+
desc "WORKSPACE-NAME/ID set-required-params", "Interactive dialog to set required params that are not currently set"
|
436
|
+
def set_required_params(context_params)
|
437
|
+
workspace_id = context_params.retrieve_arguments([:workspace_id!],method_argument_names)
|
438
|
+
set_required_params_aux(workspace_id,:assembly,:instance)
|
439
|
+
end
|
440
|
+
|
428
441
|
# desc "WORKSPACE-NAME/ID start [NODE-ID-PATTERN]", "Starts all workspace's nodes, specific nodes can be selected via node id regex."
|
429
442
|
desc "WORKSPACE-NAME/ID start [NODE-NAME]", "Starts all the workspace nodes. A single node can be selected."
|
430
443
|
def start(context_params)
|
data/lib/dtk-client/version.rb
CHANGED
data/lib/parser/adapters/thor.rb
CHANGED
@@ -414,6 +414,21 @@ module DTK
|
|
414
414
|
!possible_id.to_s.match(/^[0-9]+$/).nil?
|
415
415
|
end
|
416
416
|
|
417
|
+
# helper for error messages; prints singular or plural version
|
418
|
+
# tem will be of form singural/plural or simple term in which case plural formed by adding 's'
|
419
|
+
def plural?(is_plural,term)
|
420
|
+
singular_plural = term.split('/')
|
421
|
+
if singular_plural.size == 1
|
422
|
+
singular_plural << "#{singular_plural[0]}s"
|
423
|
+
end
|
424
|
+
singular_plural[is_plural ? 1 : 0]
|
425
|
+
end
|
426
|
+
|
427
|
+
# removes nil values
|
428
|
+
def post_body(hash)
|
429
|
+
hash.inject(Hash.new){|h,(k,v)|v.nil? ? h : h.merge(k => v)}
|
430
|
+
end
|
431
|
+
|
417
432
|
# User input prompt
|
418
433
|
def user_input(message)
|
419
434
|
trap("INT", "SIG_IGN")
|
@@ -431,10 +446,17 @@ module DTK
|
|
431
446
|
return about, about[0..-2].to_sym
|
432
447
|
end
|
433
448
|
|
434
|
-
# check for delimiter
|
449
|
+
# check for delimiter, if present returns namespace and name for module/service
|
435
450
|
# returns: namespace, name
|
436
451
|
def get_namespace_and_name(input_remote_name, delimiter)
|
437
|
-
(input_remote_name||'').include?(delimiter)
|
452
|
+
if (input_remote_name||'').include?(delimiter)
|
453
|
+
input_remote_name.split(delimiter)
|
454
|
+
# support ns/name as well as ns:name
|
455
|
+
elsif (input_remote_name||'').include?('/')
|
456
|
+
input_remote_name.split('/')
|
457
|
+
else
|
458
|
+
[nil, input_remote_name]
|
459
|
+
end
|
438
460
|
end
|
439
461
|
|
440
462
|
def get_namespace_and_name_for_component(component_full_name)
|
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.
|
4
|
+
version: 0.6.0
|
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-
|
11
|
+
date: 2014-10-04 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.5.10
|
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.5.10
|
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,17 +328,17 @@ 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: []
|
340
340
|
rubyforge_project:
|
341
|
-
rubygems_version: 2.
|
341
|
+
rubygems_version: 2.4.1
|
342
342
|
signing_key:
|
343
343
|
specification_version: 4
|
344
344
|
summary: DTK CLI client for DTK server interaction.
|