dtk-client 0.11.8 → 0.11.8.1

Sign up to get free protection for your applications and to get access to all the features.
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.