dtk-client 0.11.8 → 0.11.8.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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ce23832ed682975a0727ee818e047fd5cfd5d381
4
- data.tar.gz: b9c6efe83f37a372cd2528f2adc3b7eecc2b5617
3
+ metadata.gz: 3c1243437980492193969d331349b58e87d20f6c
4
+ data.tar.gz: '08e0afe0380f0d2eee56edf002005fb098850c94'
5
5
  SHA512:
6
- metadata.gz: 82e0ddd1c3f426bb9f6220754eb82ea4923b6c71be157117b3f7b5c8aa4932dfa70130f8a73cfba955d67e61e2c7dd1a979947980edf383593b8cdccb48f88b2
7
- data.tar.gz: c222153161e27520a0da7e28926c83c6ba3a37d51774944efcbcd734b3aedada908954b8940db8e5018c43b0abd12e9b23032b6d115ae4f830c98c3b9a359454
6
+ metadata.gz: 1b23957da3a9aa6347e43ed156956fc51773a9deb15b6b8bd45b57c6a4504740a4e0a6afc80e999dbf0a307b40cf5ee9952e9065f0fe4a53186854d879938d3f
7
+ data.tar.gz: 8dbbc1ebfba62af5cf4d85815cf62e7c926152ba27eca693d625c858508fd51cc24451ddf258847d8d9d8d6cb6dc2bae1247117dbda4e8d5bdef68315bc06ce3
data/dtk-client.gemspec CHANGED
@@ -17,13 +17,13 @@ Gem::Specification.new do |spec|
17
17
  spec.executables = spec.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
 
20
- spec.add_dependency 'dtk-common-core','0.11.1'
20
+ spec.add_dependency 'dtk-common-core','0.11.1.1'
21
21
  spec.add_dependency 'gli', '2.13.4'
22
22
  spec.add_dependency 'highline', '1.7.8'
23
23
  spec.add_dependency 'colorize', '0.7.7'
24
24
  spec.add_dependency 'git', '1.2.9'
25
25
  spec.add_dependency 'hirb', '0.7.3'
26
26
  spec.add_dependency 'mime-types', '~> 2.99.3'
27
- spec.add_dependency 'dtk-dsl', '~> 1.1.0'
28
- spec.add_dependency 'dtk-network-client', '~> 1.0.0'
27
+ spec.add_dependency 'dtk-dsl', '1.1.3'
28
+ spec.add_dependency 'dtk-network-client', '1.0.1.1'
29
29
  end
data/lib/cli/version.rb CHANGED
@@ -18,7 +18,7 @@
18
18
  module DTK
19
19
  module Client
20
20
  module CLI
21
- VERSION="0.11.8"
21
+ VERSION="0.11.8.1"
22
22
  end
23
23
  end
24
24
  end
@@ -95,6 +95,22 @@ module DTK::Client
95
95
  repo.head_commit_sha
96
96
  end
97
97
 
98
+ def self.commit_and_push_to_nested_module_repo(args)
99
+ target_repo_dir = args.required(:target_repo_dir)
100
+ repo = git_repo.new(target_repo_dir)
101
+ branch = args[:branch] || repo.current_branch
102
+ remote_branch = args[:remote_branch] || branch
103
+
104
+ if repo.changed?
105
+ repo.stage_and_commit
106
+ dtk_server_remote = 'origin'
107
+ repo.push(dtk_server_remote, branch)
108
+ return repo.head_commit_sha
109
+ end
110
+
111
+ nil
112
+ end
113
+
98
114
  def self.clone(repo_url, target_repo_dir, branch)
99
115
  begin
100
116
  git_repo.clone(repo_url, target_repo_dir, branch)
@@ -162,13 +178,14 @@ module DTK::Client
162
178
  # For this and other methods in Internal that use Dtk_Server::GIT_REMOTE
163
179
  # put a version in Internal taht takes remote_name as param and then have
164
180
  # method with same name in Dtk, that calss this with appropriate remote name
165
- def self.init_and_push_from_existing_repo(repo_dir, repo_url, remote_branch)
181
+ def self.init_and_push_from_existing_repo(repo_dir, repo_url, remote_branch, opts = {})
166
182
  repo = git_repo.new(repo_dir)
183
+ remote = opts[:remote] || Dtk_Server::GIT_REMOTE
167
184
 
168
- if repo.is_there_remote?(Dtk_Server::GIT_REMOTE)
169
- push_when_there_is_dtk_remote(repo, repo_dir, repo_url, remote_branch)
185
+ if repo.is_there_remote?(remote)
186
+ push_when_there_is_dtk_remote(repo, repo_dir, repo_url, remote_branch, opts)
170
187
  else
171
- add_remote_and_push(repo, repo_url, remote_branch)
188
+ add_remote_and_push(repo, repo_url, remote_branch, opts)
172
189
  end
173
190
 
174
191
  repo.head_commit_sha
@@ -197,15 +214,16 @@ module DTK::Client
197
214
  repo
198
215
  end
199
216
 
200
- def self.push_when_there_is_dtk_remote(repo, repo_dir, repo_url, remote_branch)
217
+ def self.push_when_there_is_dtk_remote(repo, repo_dir, repo_url, remote_branch, opts = {})
201
218
  # if there is only one remote and it is dtk-server; remove .git and initialize and push as new repo to dtk-server remote
202
219
  # else if multiple remotes and dtk-server being one of them; remove dtk-server; add new dtk-server remote and push
203
220
  if repo.remotes.size == 1
204
221
  git_repo.unlink_local_clone?(repo_dir)
205
222
  create_repo_from_remote_and_push(repo_dir, repo_url, remote_branch)
206
223
  else
207
- repo.remove_remote(Dtk_Server::GIT_REMOTE)
208
- add_remote_and_push(repo, repo_url, remote_branch)
224
+ remote = opts[:remote] || Dtk_Server::GIT_REMOTE
225
+ repo.remove_remote(remote)
226
+ add_remote_and_push(repo, repo_url, remote_branch, opts)
209
227
  end
210
228
  end
211
229
 
@@ -226,10 +244,11 @@ module DTK::Client
226
244
  repo.head_commit_sha
227
245
  end
228
246
 
229
- def self.add_remote_and_push(repo, repo_url, remote_branch)
230
- repo.add_remote(Dtk_Server::GIT_REMOTE, repo_url)
247
+ def self.add_remote_and_push(repo, repo_url, remote_branch, opts = {})
248
+ remote = opts[:remote] || Dtk_Server::GIT_REMOTE
249
+ repo.add_remote(remote, repo_url)
231
250
  repo.stage_and_commit
232
- repo.push(Dtk_Server::GIT_REMOTE, remote_branch, { :force => true })
251
+ repo.push(remote, remote_branch, { :force => true })
233
252
  end
234
253
 
235
254
  def self.add_service_repo_file(args)
@@ -27,6 +27,12 @@ module DTK::Client
27
27
  end
28
28
  end
29
29
 
30
+ def self.commit_and_push_to_nested_module_repo(args)
31
+ wrap_operation(args) do |args|
32
+ response_data_hash(:head_sha => Internal.commit_and_push_to_nested_module_repo(args))
33
+ end
34
+ end
35
+
30
36
  def self.clone_exists?(args)
31
37
  wrap_operation(args) do |args|
32
38
  type = args.required(:type)
@@ -41,7 +41,26 @@ module DTK::Client
41
41
  self.nested_modules.each { |nested_module| clone_nested_module(nested_module) }
42
42
  self.target_repo_dir
43
43
  end
44
-
44
+
45
+ def self.commit_and_push_nested_modules(args)
46
+ service_instance = args[:service_instance]
47
+ service_instance_dir = args[:service_instance_dir] || ret_base_path(:service, service_instance)
48
+
49
+ nested_modules_dir = find_nested_modules_dir(service_instance_dir)
50
+ nested_modules = Dir.glob("#{nested_modules_dir}/*")
51
+
52
+ nested_modules_with_sha = []
53
+ nested_modules.each do |nested_module|
54
+ nested_module_name = nested_module.split('/').last
55
+ response = ClientModuleDir::GitRepo.commit_and_push_to_nested_module_repo({target_repo_dir: nested_module})
56
+ if head_sha = response.data(:head_sha)
57
+ nested_modules_with_sha << { nested_module_name => head_sha }
58
+ end
59
+ end
60
+
61
+ nested_modules_with_sha
62
+ end
63
+
45
64
  protected
46
65
 
47
66
  attr_reader :base_module, :nested_modules, :service_instance, :remove_existing, :repo_dir
@@ -85,6 +104,10 @@ module DTK::Client
85
104
  dirs.map { |dir| "#{self.target_repo_dir}/#{dir}" }.find { |full_path| ! File.exists?(full_path) }
86
105
  end
87
106
 
107
+ def self.find_nested_modules_dir(service_instance_dir)
108
+ self.possible_nested_module_base_dirs.map { |dir| "#{service_instance_dir}/#{dir}" }.find { |full_path| File.exists?(full_path) }
109
+ end
110
+
88
111
  def clone_repo(module_info, target_repo_dir)
89
112
  clone_args = {
90
113
  :repo_url => module_info.repo_url,
@@ -25,6 +25,12 @@ module DTK::Client
25
25
  response_data_hash(:target_repo_dir => Internal.clone(args))
26
26
  end
27
27
  end
28
+
29
+ def self.commit_and_push_nested_modules(args)
30
+ wrap_operation(args) do |args|
31
+ response_data_hash(:nested_modules => Internal.commit_and_push_nested_modules(args))
32
+ end
33
+ end
28
34
  end
29
35
  end
30
36
  end
@@ -23,27 +23,22 @@ module DTK::Client
23
23
  service_ref = args.required(:service_ref)
24
24
  service_name = args.required(:service_name)
25
25
  target_directory = args[:target_directory]
26
+
26
27
  unless service_info = service_exists?(service_ref)
27
28
  raise Error::Usage, "DTK service '#{service_ref}' does not exist on server."
28
29
  end
29
30
 
30
- pp service_info
31
- fail "TODO: DTK-3366: update to use ClientModuleDir::ServiceInstance.clone"
32
-
33
- branch = service_info.required(:branch, :name)
34
- repo_url = service_info.required(:repo, :url)
35
- repo_name = service_info.required(:repo, :name)
36
-
31
+ service_instance = service_info.required(:service, :name)
37
32
  clone_args = {
38
- :repo_url => service_info.required(:repo, :url),
39
- :branch => service_info.required(:branch, :name),
40
- :service_instance => service_name,
41
- #:service_name => service_name,
42
- :repo_dir => target_directory || ClientModuleDir.ret_path_with_current_dir(service_name)
33
+ :base_module => service_info.required(:base_module),
34
+ :nested_modules => service_info.required(:nested_modules),
35
+ :service_instance => service_instance,
36
+ :repo_dir => target_directory
43
37
  }
38
+ message = ClientModuleDir::ServiceInstance.clone(clone_args)
39
+ target_dir = message.data(:target_repo_dir)
44
40
 
45
- ret = ClientModuleDir::GitRepo.clone_service_repo(clone_args)
46
- OsUtil.print_info("DTK service '#{service_ref}' has been successfully cloned into '#{ret.required(:target_repo_dir)}'")
41
+ OsUtil.print_info("DTK service '#{service_instance}' has been successfully cloned into '#{target_dir}'")
47
42
  end
48
43
  end
49
44
  end
@@ -25,18 +25,39 @@ module DTK::Client
25
25
 
26
26
  response = rest_get("#{BaseRoute}/#{service_instance}/repo_info")
27
27
 
28
- repo_info_args = Args.new(
29
- :service_instance => service_instance,
30
- :commit_message => args[:commit_message] || default_commit_message(service_instance),
31
- :branch => response.required(:branch, :name),
32
- :repo_url => response.required(:repo, :url),
28
+ nested_module_args = Args.new(
29
+ :service_instance => service_instance,
30
+ :base_module => nil,
31
+ :nested_modules => nil,
33
32
  :service_instance_dir => args[:service_instance_dir]
34
33
  )
34
+ nested_modules_response = ClientModuleDir::ServiceInstance.commit_and_push_nested_modules(nested_module_args)
35
+ updated_nested_modules = nested_modules_response.data(:nested_modules)
36
+
37
+ unless updated_nested_modules.empty?
38
+ repo_dir = (args[:service_instance_dir] || ClientModuleDir.ret_base_path(:service, service_instance))
39
+ empty_commit_args = Args.new(
40
+ :repo_dir => repo_dir,
41
+ :commit_msg => "Nested modules changed"
42
+ )
43
+ ClientModuleDir::GitRepo.create_repo_with_empty_commit(empty_commit_args)
44
+
45
+ # this is used to pick up changes made in nested modules
46
+ Dir.glob("#{repo_dir}/.nested_modules_changed_*").each { |file| File.delete(file)}
47
+ Operation::ClientModuleDir.create_file_with_content("#{repo_dir}/.nested_modules_changed_#{Time.now.to_i}", Time.now.to_i)
48
+ end
35
49
 
50
+ repo_info_args = Args.new(
51
+ :service_instance => service_instance,
52
+ :commit_message => args[:commit_message] || default_commit_message(service_instance),
53
+ :branch => response.required(:branch, :name),
54
+ :repo_url => response.required(:repo, :url),
55
+ :service_instance_dir => args[:service_instance_dir]
56
+ )
36
57
  response = ClientModuleDir::GitRepo.commit_and_push_to_service_repo(repo_info_args)
37
58
  commit_sha = response.required(:head_sha)
38
59
 
39
- response = rest_post("#{BaseRoute}/#{service_instance}/update_from_repo", :commit_sha => commit_sha)
60
+ response = rest_post("#{BaseRoute}/#{service_instance}/update_from_repo", { :commit_sha => commit_sha, :updated_nested_modules => updated_nested_modules })
40
61
  print_msgs_of_type(:error_msgs, response)
41
62
  print_msgs_of_type(:warning_msgs, response)
42
63
  print_msgs_of_type(:info_msgs, response)
@@ -57,7 +57,7 @@ module DTK::Client
57
57
  private
58
58
 
59
59
  def self.service_exists?(service_ref, opts = {})
60
- response = rest_get("#{BaseRoute}/#{service_ref}/repo_info")
60
+ response = rest_get("#{BaseRoute}/#{service_ref}/base_and_nested_repo_info")
61
61
  response.data.empty? ? nil : response
62
62
  end
63
63
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dtk-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.8
4
+ version: 0.11.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reactor8
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-02 00:00:00.000000000 Z
11
+ date: 2018-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dtk-common-core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.11.1
19
+ version: 0.11.1.1
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
- version: 0.11.1
26
+ version: 0.11.1.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: gli
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -112,30 +112,30 @@ dependencies:
112
112
  name: dtk-dsl
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: 1.1.0
117
+ version: 1.1.3
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: 1.1.0
124
+ version: 1.1.3
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: dtk-network-client
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: 1.0.0
131
+ version: 1.0.1.1
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
- version: 1.0.0
138
+ version: 1.0.1.1
139
139
  description: Command line tool to interact with a DTK Server and DTK Service Catalog.
140
140
  email: support@reactor8.com
141
141
  executables:
@@ -423,7 +423,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
423
423
  version: '0'
424
424
  requirements: []
425
425
  rubyforge_project:
426
- rubygems_version: 2.4.8
426
+ rubygems_version: 2.6.11
427
427
  signing_key:
428
428
  specification_version: 4
429
429
  summary: DTK CLI client for DTK server interaction.