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 +4 -4
- data/dtk-client.gemspec +3 -3
- data/lib/cli/version.rb +1 -1
- data/lib/client/operation/client_module_dir/git_repo/internal.rb +29 -10
- data/lib/client/operation/client_module_dir/git_repo.rb +6 -0
- data/lib/client/operation/client_module_dir/service_instance/internal.rb +24 -1
- data/lib/client/operation/client_module_dir/service_instance.rb +6 -0
- data/lib/client/operation/service/clone_service.rb +9 -14
- data/lib/client/operation/service/commit_and_push.rb +27 -6
- data/lib/client/operation/service.rb +1 -1
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c1243437980492193969d331349b58e87d20f6c
|
4
|
+
data.tar.gz: '08e0afe0380f0d2eee56edf002005fb098850c94'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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', '
|
28
|
-
spec.add_dependency 'dtk-network-client', '
|
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
@@ -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?(
|
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
|
-
|
208
|
-
|
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
|
-
|
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(
|
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
|
-
|
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
|
-
:
|
39
|
-
:
|
40
|
-
:service_instance =>
|
41
|
-
|
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
|
-
|
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
|
-
|
29
|
-
:service_instance
|
30
|
-
:
|
31
|
-
:
|
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}/
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|