dtk-client 0.7.0 → 0.7.1

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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ODdhNDYxZmYwMjY5YjVlODJhNzA4YjAzNGZlYTJiMWUzNDU4ZTQ3MQ==
5
- data.tar.gz: !binary |-
6
- YWU3YjdjMjgxNjk4MDMwZDJkMjM5NjhkM2QxNmUwNjQxYTQyMWFiNA==
2
+ SHA1:
3
+ metadata.gz: d6d5f969664f0353c5a8389cb2ff93c540eb3e69
4
+ data.tar.gz: e7161714340eceba543449faceaeed05244c96f6
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YjgxYTk4MWM2ODA2OWNiNjI5NjQwYjJlZGI0MWY5MTMzNjgzMGUyZjExZTZi
10
- OWUxMmQwMjFlYmEyMWI0ZGE1OWQ1YmMyOTI0MzljMDU4MDI0YzM2NmY0ZWEw
11
- ZjY0YTliNzRmMGZjMmMzYzg4YzM5ZDFiNzNkZTBiNWY1OTM3NjQ=
12
- data.tar.gz: !binary |-
13
- MDMyYzU2YWZmYzc4NjQ0YTI2YTIzN2E2OTllMjRhMDZlM2Q5ODU2ZGY1ZTI5
14
- M2Q2OTY3NWY5ODJiOGMxZWY3MzZiZDdhZWViZTZiNGMyYzNlM2Q0YmQ0ODkx
15
- N2NlNzZhYWE5Y2UzYWIzOGJjZDc3ZWUzYzFmZDcyYmNhNzdkMTM=
6
+ metadata.gz: 84773c714f5c6ec8b62c6fe5e3d3aebdd26a75097864e2be1caa5fd217a142109f3ce82a7f0b085182ffcf6de58ad39460504e2e890ddc2b1fab037bccd51427
7
+ data.tar.gz: bad5dfff733069e5538294cc04910251bfcdd8fbbade2e60fe73a479737100cf070f42d9f2e2c7ea7661ca6c1c879c048fb3cea7221a02f870f11ddc21e4b1a4
data/dtk-client.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
15
15
  gem.files += Dir.glob("puppet/**/*")
16
16
  gem.files += Dir.glob("spec/**/*")
17
17
  gem.files += Dir.glob("views/**/*")
18
-
18
+
19
19
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
20
20
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
21
21
  gem.name = "dtk-client"
@@ -29,7 +29,7 @@ Gem::Specification.new do |gem|
29
29
  gem.add_dependency 'hirb','~> 0.7.0'
30
30
  gem.add_dependency 'thor','~> 0.15.4'
31
31
  gem.add_dependency 'erubis','~> 2.7.0'
32
- gem.add_dependency 'dtk-common-core','~> 0.6.0'
32
+ gem.add_dependency 'dtk-common-core','0.7.0'
33
33
  gem.add_dependency 'git','~> 1.2.6'
34
34
  gem.add_dependency 'colorize','~> 0.5.8'
35
35
  gem.add_dependency 'highline', '1.6.16'
@@ -1,15 +1,68 @@
1
1
  module DTK::Client
2
2
  module AccessControlMixin
3
3
 
4
- def chmod_aux(module_id, permission_string, namespace = nil)
4
+ def chmod_aux(module_id, permission_string, namespace = nil, chmod_action = :chmod)
5
5
  permission_selector = PermissionUtil.validate_permissions!(permission_string.downcase)
6
6
  post_body = {
7
7
  :module_id => module_id,
8
8
  :permission_selector => permission_selector,
9
+ :chmod_action => chmod_action,
9
10
  :rsa_pub_key => SSHUtil.rsa_pub_key_content(),
10
11
  :remote_module_namespace => namespace
11
12
  }
12
- post rest_url("#{resolve_module_type}/remote_chmod"), post_body
13
+ response = post rest_url("#{resolve_module_type}/remote_chmod"), post_body
14
+ return response unless response.ok?
15
+
16
+ if response.data(:simple_flow)
17
+ puts "Module is now public."
18
+ else
19
+ # in case there are dependencies
20
+ main_module_name = response.data(:main_module)['full_name']
21
+ puts "Main module '#{main_module_name}' has dependencies that are not public: "
22
+ unless response.data(:missing_modules).empty?
23
+ missing = response.data(:missing_modules).collect { |a| a['full_name'] }
24
+ OsUtil.print(" These modules are missing on repository: #{missing.join(', ')}", :red)
25
+ end
26
+ unless response.data(:no_permission).empty?
27
+ no_permission = response.data(:no_permission).collect { |a| a['full_name'] }
28
+ OsUtil.print(" You cannot change permissions for dependencies: #{no_permission.join(', ')}", :yellow)
29
+ end
30
+ unless response.data(:with_permission).empty?
31
+ with_permission = response.data(:with_permission)
32
+ with_permission_names = with_permission.collect { |a| a['full_name'] }
33
+ OsUtil.print(" You can change permissions for dependencies: #{with_permission_names.join(', ')}", :white)
34
+
35
+ # fix for bug in comments for DTK-1959
36
+ # need to send hash instead of array to be able to parse properly in rest_request_params
37
+ with_permission_hash = {}
38
+ with_permission.each do |wp|
39
+ with_permission_hash.merge!("#{wp['name']}" => wp)
40
+ end
41
+
42
+ response.data["with_permission"] = with_permission_hash
43
+ end
44
+
45
+ puts "How should we resolve these dependencies: "
46
+ input = ::DTK::Shell::InteractiveWizard.resolve_input("(A)ll / (M)ain Module / (N)one ", ['M','A','N'], true)
47
+ if 'N'.eql?(input)
48
+ return nil
49
+ else
50
+ puts "Sending input information ... "
51
+ post_body = {
52
+ :module_id => module_id,
53
+ :module_info => response.data,
54
+ :public_action => 'A'.eql?(input) ? :all : :one,
55
+ :rsa_pub_key => SSHUtil.rsa_pub_key_content(),
56
+ :remote_module_namespace => namespace
57
+ }
58
+
59
+ response = post rest_url("#{resolve_module_type}/confirm_make_public"), post_body
60
+ return response unless response.ok?
61
+ puts "Modules are now public."
62
+ end
63
+ end
64
+
65
+ nil
13
66
  end
14
67
 
15
68
  def chown_aux(module_id, remote_user, namespace = nil)
@@ -674,6 +674,17 @@ module DTK::Client
674
674
  post rest_url("assembly/add_node"), post_body
675
675
  end
676
676
 
677
+ def create_node_group_aux(context_params)
678
+ assembly_or_workspace_id, node_group_name, node_template_identifier = context_params.retrieve_arguments([[:service_id, :workspace_id!],:option_1!,:option_2!],method_argument_names)
679
+ post_body = {
680
+ :assembly_id => assembly_or_workspace_id,
681
+ :cardinality => options.cardinality,
682
+ :node_group_name => node_group_name,
683
+ :node_template_identifier => node_template_identifier
684
+ }
685
+ post rest_url("assembly/add_node_group"), post_body
686
+ end
687
+
677
688
  def purge_aux(context_params)
678
689
  assembly_or_workspace_id = context_params.retrieve_arguments([REQ_ASSEMBLY_OR_WS_ID],method_argument_names)
679
690
  unless options.force?
@@ -22,7 +22,7 @@ PULL_CATALOGS = ["dtkn"]
22
22
  module DTK::Client
23
23
  class CommonModule
24
24
  dtk_require_common_commands('thor/module/import')
25
-
25
+
26
26
  def initialize(command,context_params)
27
27
  @command = command
28
28
  @context_params = context_params
@@ -374,12 +374,12 @@ module DTK::Client
374
374
 
375
375
  def make_public_module_aux(context_params)
376
376
  module_id = context_params.retrieve_arguments([REQ_MODULE_ID], method_argument_names)
377
- chmod_aux(module_id, "o+r", options.namespace)
377
+ chmod_aux(module_id, "o+r", options.namespace, :make_public)
378
378
  end
379
379
 
380
380
  def make_private_module_aux(context_params)
381
381
  module_id = context_params.retrieve_arguments([REQ_MODULE_ID], method_argument_names)
382
- chmod_aux(module_id, "o-rwd", options.namespace)
382
+ chmod_aux(module_id, "o-rwd", options.namespace, :make_private)
383
383
  end
384
384
 
385
385
  def add_collaborators_module_aux(context_params)
@@ -442,7 +442,7 @@ module DTK::Client
442
442
  # if catalog.to_s.eql?("origin")
443
443
  # push_clone_changes_aux(:component_module,component_module_id,version,options["message"]||DEFAULT_COMMIT_MSG,internal_trigger)
444
444
  if catalog.to_s.eql?("dtkn")
445
- module_refs_content = RemoteDependencyUtil.module_ref_content(module_location) if module_type == 'service_module'
445
+ module_refs_content = RemoteDependencyUtil.module_ref_content(module_location)
446
446
  remote_module_info = get_remote_module_info_aux(module_type.to_sym, module_id, options["namespace"], version, module_refs_content, local_namespace)
447
447
  return remote_module_info unless remote_module_info.ok?
448
448
 
@@ -34,7 +34,6 @@ module DTK::Client
34
34
  post_body = get_workspace_branch_info_post_body(module_type, module_id, version, opts).merge(:json_diffs => json_diffs, :commit_sha => commit_sha)
35
35
  post_body.merge!(:modification_type => opts[:modification_type]) if opts[:modification_type]
36
36
  post_body.merge!(:force_parse => true) if options['force-parse'] || opts[:force_parse]
37
- post_body.merge!(:skip_module_ref_update => true) if opts[:skip_module_ref_update]
38
37
  post_body.merge!(:update_from_includes => true) if opts[:update_from_includes]
39
38
 
40
39
  if opts[:set_parsed_false]
@@ -143,6 +143,10 @@ module DTK::Client
143
143
  unless File.exists?(identity_file_location)
144
144
  raise ::DTK::Client::DtkError, "Not able to find identity file, '#{identity_file_location}'"
145
145
  end
146
+ elsif default_identity_file = OsUtil.dtk_identity_file_location()
147
+ if File.exists?(default_identity_file)
148
+ identity_file_location = default_identity_file
149
+ end
146
150
  end
147
151
 
148
152
  context_params.forward_options({ :json_return => true })
@@ -160,8 +164,7 @@ module DTK::Client
160
164
 
161
165
  connection_string = "#{remote_user}@#{public_dns}"
162
166
 
163
- default_identity_file = OsUtil.dtk_identity_file_location()
164
-
167
+
165
168
  ssh_command = nil
166
169
 
167
170
  if identity_file_location
@@ -170,11 +173,6 @@ module DTK::Client
170
173
  elsif SSHUtil.ssh_reachable?(remote_user, public_dns)
171
174
  # it has PUB key access
172
175
  ssh_command = "ssh -o \"StrictHostKeyChecking no\" -o \"UserKnownHostsFile /dev/null\" #{connection_string}"
173
- else
174
- # using default identity_file
175
- if default_identity_file
176
- ssh_command = "ssh -o \"StrictHostKeyChecking no\" -o \"UserKnownHostsFile /dev/null\" -i #{default_identity_file} #{connection_string}"
177
- end
178
176
  end
179
177
 
180
178
  raise ::DTK::Client::DtkError, "No public key access or PEM provided, please grant access or provide valid PEM key" if ssh_command.nil?
@@ -73,6 +73,7 @@ module DTK::Client
73
73
  :context => {
74
74
  :add_component => "component_template",
75
75
  :create_node => "node_template",
76
+ :create_node_group => "node_template",
76
77
  :add_component_dependency => "component_template"
77
78
  },
78
79
  :command => {
@@ -621,6 +622,23 @@ TODO: will put in dot release and will rename to 'extend'
621
622
  DTK::Client::OsUtil.print(message, :yellow)
622
623
  end
623
624
 
625
+ desc "SERVICE-NAME/ID create-node-group ^^NODE-GROUP-NAME NODE-TEMPLATE [-n CARDINALITY]", "Add (stage) a new node group in the service."
626
+ method_option :cardinality, :aliases => '-n', :type => :string, :default => 1
627
+ def create_node_group(context_params)
628
+ response = create_node_group_aux(context_params)
629
+ return response unless response.ok?
630
+
631
+ @@invalidate_map << :assembly
632
+ @@invalidate_map << :assembly_node
633
+ @@invalidate_map << :service
634
+ @@invalidate_map << :service_node
635
+ @@invalidate_map << :workspace
636
+ @@invalidate_map << :workspace_node
637
+
638
+ message = "Created node group '#{response.data["display_name"]}'."
639
+ DTK::Client::OsUtil.print(message, :yellow)
640
+ end
641
+
624
642
  desc "SERVICE-NAME/ID link-components TARGET-CMP-NAME SOURCE-CMP-NAME [DEPENDENCY-NAME]","Link the target component to the source component."
625
643
  def link_components(context_params)
626
644
  link_components_aux(context_params)
@@ -48,6 +48,7 @@ module DTK::Client
48
48
  :context => {
49
49
  :add_component => "component_template",
50
50
  :create_node => "node_template",
51
+ :create_node_group => "node_template",
51
52
  :add_component_dependency => "component_template",
52
53
  :set_target => 'target'
53
54
  },
@@ -266,6 +267,23 @@ module DTK::Client
266
267
  DTK::Client::OsUtil.print(message, :yellow)
267
268
  end
268
269
 
270
+ desc "WORKSPACE-NAME/ID create-node-group ^^NODE-GROUP-NAME NODE-TEMPLATE [-n CARDINALITY]", "Add (stage) a new node group in the workspace."
271
+ method_option :cardinality, :aliases => '-n', :type => :string, :default => 1
272
+ def create_node_group(context_params)
273
+ response = create_node_group_aux(context_params)
274
+ return response unless response.ok?
275
+
276
+ @@invalidate_map << :assembly
277
+ @@invalidate_map << :assembly_node
278
+ @@invalidate_map << :service
279
+ @@invalidate_map << :service_node
280
+ @@invalidate_map << :workspace
281
+ @@invalidate_map << :workspace_node
282
+
283
+ message = "Created node group '#{response.data["display_name"]}'."
284
+ DTK::Client::OsUtil.print(message, :yellow)
285
+ end
286
+
269
287
  desc "WORKSPACE-NAME/ID link-components TARGET-CMP-NAME SOURCE-CMP-NAME [DEPENDENCY-NAME]","Link the target component to the source component."
270
288
  def link_components(context_params)
271
289
  link_components_aux(context_params)
@@ -1,3 +1,3 @@
1
1
  module DtkClient
2
- VERSION="0.7.0"
2
+ VERSION="0.7.1"
3
3
  end
@@ -468,7 +468,7 @@ module DTK
468
468
  namespace, name = nil, ''
469
469
 
470
470
  if (component_full_name||'').include?(':')
471
- match = component_full_name.match(/(\w*\-?\w*):{1}(.*)/)
471
+ match = component_full_name.match(/(^[^:]+):{1}(.*$)/)
472
472
  namespace, name = [$1,$2]
473
473
 
474
474
  return [nil, component_full_name] if (name.include?(':') && !name.include?('::'))
@@ -11,16 +11,16 @@ module DTK
11
11
 
12
12
  PP_LINE_HEAD = '--------------------------------- DATA ---------------------------------'
13
13
  PP_LINE = '------------------------------------------------------------------------'
14
- INVALID_INPUT = Client::OsUtil.colorize(" Input is not valid.", :yellow)
14
+ INVALID_INPUT = Client::OsUtil.colorize(" Input is not valid. ", :yellow)
15
15
  EC2_REGIONS = ['us-east-1','us-west-1','us-west-2','eu-west-1','sa-east-1','ap-northeast-1','ap-southeast-1','ap-southeast-2' ]
16
-
16
+
17
17
 
18
18
  def initialize
19
19
  end
20
20
 
21
21
  def self.validate_region(region)
22
22
  unless EC2_REGIONS.include? region
23
- raise ::DTK::Client::DtkValidationError.new("Region '#{region}' is not EC2 region, use one of: #{EC2_REGIONS.join(',')}")
23
+ raise ::DTK::Client::DtkValidationError.new("Region '#{region}' is not EC2 region, use one of: #{EC2_REGIONS.join(',')}")
24
24
  end
25
25
  end
26
26
 
@@ -42,7 +42,7 @@ module DTK
42
42
  validation = nil
43
43
  when :question
44
44
  output = "#{metadata[:question]} (#{metadata[:options].join('|')}): "
45
- validation =
45
+ validation =
46
46
  metadata[:options]
47
47
  when :selection
48
48
  options = ""
@@ -90,7 +90,7 @@ module DTK
90
90
  end
91
91
 
92
92
 
93
- def self.resolve_input(output, validation, is_required, is_recursion_call)
93
+ def self.resolve_input(output, validation, is_required, is_recursion_call=false)
94
94
  tab_prefix = is_recursion_call ? "\t" : ""
95
95
 
96
96
  # there was a bug within windows that does not support multiline input in readline method
@@ -100,10 +100,10 @@ module DTK
100
100
  puts prompt_input
101
101
  prompt_input = ">> "
102
102
  end
103
-
103
+
104
104
  # while line = Readline.readline(prompt_input, true)
105
105
  #using 'ask' from highline gem to be able to hide input for key and secret
106
- while line = ask("#{prompt_input}") { |q| q.echo = false}
106
+ while line = ask("#{prompt_input}") { |q| q.echo = true }
107
107
  if is_required && line.empty?
108
108
  puts INVALID_INPUT
109
109
  next
@@ -130,7 +130,7 @@ module DTK
130
130
  description =
131
131
  if param_info['display_name'] =~ Regexp.new(param_info['description'])
132
132
  param_info['display_name']
133
- else
133
+ else
134
134
  "#{param_info['display_name']} (#{param_info['description']})"
135
135
  end
136
136
  datatype_info = (param_info['datatype'] ? DTK::Client::OsUtil.colorize(" [#{param_info['datatype'].upcase}]", :yellow) : '')
@@ -143,7 +143,7 @@ module DTK
143
143
  checkup_hash[id] = {:value => line, :description => description}
144
144
  break
145
145
  end
146
-
146
+
147
147
  end
148
148
 
149
149
  # pp print for provided parameters
@@ -152,14 +152,14 @@ module DTK
152
152
  # make sure this is satisfactory
153
153
  while line = Readline.readline("Is provided information ok? (yes|no) ", true)
154
154
  # start all over again
155
- return resolve_missing_params(param_list) if 'no'.eql? line
155
+ return resolve_missing_params(param_list) if 'no'.eql? line
156
156
  # continue with the code
157
157
  break if 'yes'.eql? line
158
158
  end
159
159
 
160
160
  rescue Interrupt => e
161
161
  puts
162
- # TODO: Provide original error here
162
+ # TODO: Provide original error here
163
163
  raise DTK::Client::DtkError, "You have decided to skip correction wizard."
164
164
  end
165
165
 
@@ -188,7 +188,7 @@ end
188
188
  =begin
189
189
  desc "create","Wizard that will guide you trough creation of target and target-template"
190
190
  def create(context_params)
191
-
191
+
192
192
  # we get existing templates
193
193
  target_templates = post rest_url("target/list"), { :subtype => :template }
194
194
 
@@ -206,9 +206,9 @@ end
206
206
  # in case user has not selected template id we will needed information to create target
207
207
  wizard_params.concat([
208
208
  {:iaas_type => { :type => :selection, :options => [:ec2] }},
209
- {:aws_install => { :type => :question,
210
- :question => "Do we have your permission to add necessery 'key-pair' and 'security-group' to your EC2 account?",
211
- :options => ["yes","no"],
209
+ {:aws_install => { :type => :question,
210
+ :question => "Do we have your permission to add necessery 'key-pair' and 'security-group' to your EC2 account?",
211
+ :options => ["yes","no"],
212
212
  :required_options => ["yes"],
213
213
  :explanation => "This permission is necessary for creation of a custom target."
214
214
  }},
@@ -104,30 +104,21 @@ module DTK
104
104
  error_index = ""
105
105
  error_type = value_of(structured_element,'errors.dtk_type') || ""
106
106
 
107
- if error_type.empty?
108
- val = value_of(structured_element,'dtk_type')||''
109
- # extract e.g. 3.1.1.1 from '3.1.1.1 action' etc.
110
- error_type = val.scan( /\d+[,.]\d?[,.]?\d?[,.]?\d?[,.]?\d?/ ).first
111
- end
112
-
113
- # we set index for each message first => [ 1 ], second => [ 2 ], etc.
114
- if error_type == "user_error" || error_type == "test_error"
115
- error_index = "[ #{@error_data.size + 1} ]"
116
- else
117
- server_error = true
118
- error_index = error_type
119
- end
107
+ val = value_of(structured_element,'dtk_type')||''
108
+ # extract e.g. 3.1.1.1 from '3.1.1.1 action' etc.
109
+ error_index = "[ #{val.scan( /\d+[,.]\d?[,.]?\d?[,.]?\d?[,.]?\d?/ ).first} ]"
120
110
 
121
111
  # original table takes that index
122
112
  evaluated_element.send("#{k}=", error_index)
123
113
  # we set new error element
124
- error_element.id = error_index
125
- # if error_index.empty?
126
- if server_error
127
- error_element.message = "[SERVER ERROR] " + error_message
114
+ error_element.id = error_index
115
+
116
+ if error_type == "user_error"
117
+ error_element.message = "[USER ERROR] " + error_message
118
+ elsif error_type == "test_error"
119
+ error_element.message = "[TEST ERROR] " + error_message
128
120
  else
129
- error_element.message = "[USER ERROR] " + error_message if error_type == "user_error"
130
- error_element.message = "[TEST ERROR] " + error_message if error_type == "test_error"
121
+ error_element.message = "[SERVER ERROR] " + error_message
131
122
  end
132
123
 
133
124
  # add it with other
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.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rich PELAVIN
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-23 00:00:00.000000000 Z
11
+ date: 2015-03-12 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
- version: 0.6.0
117
+ version: 0.7.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
- version: 0.6.0
124
+ version: 0.7.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
@@ -337,17 +337,17 @@ require_paths:
337
337
  - lib
338
338
  required_ruby_version: !ruby/object:Gem::Requirement
339
339
  requirements:
340
- - - ! '>='
340
+ - - ">="
341
341
  - !ruby/object:Gem::Version
342
342
  version: '0'
343
343
  required_rubygems_version: !ruby/object:Gem::Requirement
344
344
  requirements:
345
- - - ! '>='
345
+ - - ">="
346
346
  - !ruby/object:Gem::Version
347
347
  version: '0'
348
348
  requirements: []
349
349
  rubyforge_project:
350
- rubygems_version: 2.2.2
350
+ rubygems_version: 2.4.1
351
351
  signing_key:
352
352
  specification_version: 4
353
353
  summary: DTK CLI client for DTK server interaction.