dtk-client 0.11.7 → 0.11.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -2
  3. data/dtk-client.gemspec +2 -2
  4. data/lib/cli/command/account/add_to_group.rb +33 -0
  5. data/lib/cli/command/account/chmod.rb +33 -0
  6. data/lib/cli/command/account/create_namespace.rb +32 -0
  7. data/lib/cli/command/account/delete_namespace.rb +32 -0
  8. data/lib/cli/command/account/list_namespaces.rb +30 -0
  9. data/lib/cli/command/account/remove_from_group.rb +33 -0
  10. data/lib/cli/command/account.rb +14 -1
  11. data/lib/cli/command/module/delete_from_remote.rb +5 -3
  12. data/lib/cli/command/module/install.rb +242 -102
  13. data/lib/cli/command/module/list_remotes.rb +1 -1
  14. data/lib/cli/command/module/publish.rb +3 -2
  15. data/lib/cli/command/module/pull_dtkn.rb +2 -2
  16. data/lib/cli/command/module/push.rb +2 -1
  17. data/lib/cli/command/module/push_dtkn.rb +3 -2
  18. data/lib/cli/command/module/unpublish.rb +42 -0
  19. data/lib/cli/command/module/update.rb +33 -0
  20. data/lib/cli/command/module.rb +3 -1
  21. data/lib/cli/command/token.rb +9 -3
  22. data/lib/cli/context.rb +7 -5
  23. data/lib/cli/directory_parser/file_system.rb +76 -36
  24. data/lib/cli/processor/plugin/gli.rb +2 -0
  25. data/lib/cli/version.rb +1 -1
  26. data/lib/client/error/subclasses.rb +12 -0
  27. data/lib/client/git_repo/adapter/git_gem.rb +3 -1
  28. data/lib/client/operation/account/add_to_group.rb +29 -0
  29. data/lib/client/operation/account/chmod.rb +29 -0
  30. data/lib/client/operation/account/create_namespace.rb +29 -0
  31. data/lib/client/operation/account/delete_namespace.rb +29 -0
  32. data/lib/client/operation/account/list_namespaces.rb +29 -0
  33. data/lib/client/operation/account/remove_from_group.rb +29 -0
  34. data/lib/client/operation/account.rb +14 -1
  35. data/lib/client/operation/client_module_dir/git_repo/internal.rb +4 -22
  36. data/lib/client/operation/client_module_dir/git_repo.rb +5 -6
  37. data/lib/client/operation/client_module_dir/service_instance/internal/module_info.rb +67 -0
  38. data/lib/client/operation/client_module_dir/service_instance/internal.rb +106 -0
  39. data/lib/client/operation/client_module_dir/service_instance.rb +30 -0
  40. data/lib/client/operation/client_module_dir.rb +5 -0
  41. data/lib/client/operation/module/clone_module.rb +2 -2
  42. data/lib/client/operation/module/delete_from_remote.rb +7 -31
  43. data/lib/client/operation/module/install/dependent_modules/component_module.rb +1 -2
  44. data/lib/client/operation/module/install/dependent_modules/local_dependencies.rb +1 -1
  45. data/lib/client/operation/module/install/print_helper.rb +1 -1
  46. data/lib/client/operation/module/install.rb +25 -19
  47. data/lib/client/operation/module/install_from_catalog.rb +15 -29
  48. data/lib/client/operation/module/list_remotes.rb +4 -11
  49. data/lib/client/operation/module/publish.rb +17 -31
  50. data/lib/client/operation/module/pull_dtkn.rb +37 -28
  51. data/lib/client/operation/module/push.rb +69 -5
  52. data/lib/client/operation/module/push_dtkn.rb +25 -13
  53. data/lib/client/operation/module/stage.rb +3 -3
  54. data/lib/client/operation/module/unpublish.rb +60 -0
  55. data/lib/client/operation/module/update.rb +59 -0
  56. data/lib/client/operation/module.rb +23 -9
  57. data/lib/client/operation/service/clone_service.rb +3 -0
  58. data/lib/client/operation.rb +7 -0
  59. metadata +38 -5
@@ -95,26 +95,16 @@ module DTK::Client
95
95
  repo.head_commit_sha
96
96
  end
97
97
 
98
- def self.clone_service_repo(args)
99
- repo_url = args.required(:repo_url)
100
- branch = args.required(:branch)
101
- service_instance = args.required(:service_instance)
102
- remove_existing = args[:remove_existing]
103
- repo_dir = args[:repo_dir]
104
-
105
- target_repo_dir = create_service_dir(service_instance, :remove_existing => remove_existing, :path => repo_dir)
98
+ def self.clone(repo_url, target_repo_dir, branch)
106
99
  begin
107
100
  git_repo.clone(repo_url, target_repo_dir, branch)
108
101
  rescue => e
109
- #cleanup by deleting directory
110
-
111
102
  FileUtils.rm_rf(target_repo_dir) if File.directory?(target_repo_dir)
112
- # Log error details
113
103
  Logger.instance.error_pp(e.message, e.backtrace)
114
-
115
- # User-friendly error
104
+
116
105
  raise Error::Usage, "Clone to directory '#{target_repo_dir}' failed"
117
106
  end
107
+
118
108
  target_repo_dir
119
109
  end
120
110
 
@@ -127,15 +117,7 @@ module DTK::Client
127
117
  repo_dir = args[:repo_dir]
128
118
 
129
119
  target_repo_dir = create_module_dir(module_type, module_name, :remove_existing => remove_existing, :path => repo_dir)
130
- begin
131
- git_repo.clone(repo_url, target_repo_dir, branch)
132
- rescue => e
133
- FileUtils.rm_rf(target_repo_dir) if File.directory?(target_repo_dir)
134
- Logger.instance.error_pp(e.message, e.backtrace)
135
-
136
- raise Error::Usage, "Clone to directory '#{target_repo_dir}' failed"
137
- end
138
-
120
+ clone(repo_url, target_repo_dir, branch)
139
121
  target_repo_dir
140
122
  end
141
123
 
@@ -34,9 +34,12 @@ module DTK::Client
34
34
  end
35
35
  end
36
36
 
37
- def self.clone_service_repo(args)
37
+ def self.clone(args)
38
38
  wrap_operation(args) do |args|
39
- response_data_hash(:target_repo_dir => Internal.clone_service_repo(args))
39
+ repo_url = args.required(:repo_url)
40
+ target_repo_dir = args.required(:target_repo_dir)
41
+ branch = args.required(:branch)
42
+ response_data_hash(:target_repo_dir => Internal.clone(repo_url, target_repo_dir, branch))
40
43
  end
41
44
  end
42
45
 
@@ -235,10 +238,6 @@ module DTK::Client
235
238
  Internal::Dtkn.repo_with_remote(info_type, repo_dir, add_remote: args[:add_remote])
236
239
  end
237
240
 
238
- def self.response_data_hash(hash = {})
239
- hash.inject({}) { |h, (k, v)| h.merge(k.to_s => v) }
240
- end
241
-
242
241
  end
243
242
  end
244
243
  end
@@ -0,0 +1,67 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::Client
19
+ class Operation::ClientModuleDir
20
+ class ServiceInstance::Internal
21
+ class ModuleInfo
22
+ def initialize(module_info_hash)
23
+ @module_info_hash = module_info_hash
24
+ end
25
+
26
+ def repo_url
27
+ index(:repo, :url)
28
+ end
29
+
30
+ def branch
31
+ index(:branch, :name)
32
+ end
33
+
34
+ def module_name
35
+ index(:module, :name)
36
+ end
37
+
38
+ protected
39
+
40
+ attr_reader :module_info_hash
41
+
42
+ private
43
+
44
+ def index(index1, index2)
45
+ index?(index1, index2) || raise_error_missing_key(index1, index2)
46
+ end
47
+
48
+ def index?(index1, index2)
49
+ (self.module_info_hash[index1.to_s] || {})[index2.to_s]
50
+ end
51
+
52
+ def raise_error_missing_key(index1, index2)
53
+ if module_name = index?(:module, :name)
54
+ if module_namespace = index?(:module, :namespace)
55
+ module_name = "#{module_name}:#{module_namespace}"
56
+ end
57
+ end
58
+ module_name ||= 'module'
59
+ raise Error, "Unexpected that #{module_name}[#{index1}][#{index2}] is nil"
60
+ end
61
+
62
+ end
63
+ end
64
+ end
65
+ end
66
+
67
+
@@ -0,0 +1,106 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::Client
19
+ class Operation::ClientModuleDir
20
+ class ServiceInstance
21
+ # All Internal methods do not have wrap_operation and can only be accessed by a method that wraps it
22
+ class Internal < self
23
+ require_relative('internal/module_info')
24
+
25
+ def initialize(args)
26
+ @base_module = args.required(:base_module)
27
+ @nested_modules = args.required(:nested_modules)
28
+ @service_instance = args.required(:service_instance)
29
+ @remove_existing = args[:remove_existing]
30
+ @repo_dir = args[:repo_dir]
31
+ end
32
+ private :initialize
33
+
34
+ def self.clone(args)
35
+ new(args).clone
36
+ end
37
+
38
+ def clone
39
+ @target_repo_dir = clone_base_module
40
+ @nested_module_base = make_nested_module_base
41
+ self.nested_modules.each { |nested_module| clone_nested_module(nested_module) }
42
+ self.target_repo_dir
43
+ end
44
+
45
+ protected
46
+
47
+ attr_reader :base_module, :nested_modules, :service_instance, :remove_existing, :repo_dir
48
+
49
+ def target_repo_dir
50
+ @target_repo_dir || raise(Error, "Unexpected that @target_repo_dir is nil")
51
+ end
52
+
53
+ def nested_module_base
54
+ @nested_module_base || raise(Error, "Unexpected that @nested_module_base is nil")
55
+ end
56
+
57
+ def possible_nested_module_base_dirs
58
+ self.class.possible_nested_module_base_dirs
59
+ end
60
+
61
+ private
62
+
63
+ def clone_base_module
64
+ module_info = ModuleInfo.new(self.base_module)
65
+ target_repo_dir = self.class.create_service_dir(self.service_instance, :remove_existing => self.remove_existing, :path => self.repo_dir)
66
+ clone_repo(module_info, target_repo_dir)
67
+ target_repo_dir
68
+ end
69
+
70
+ def clone_nested_module(nested_module_hash)
71
+ module_info = ModuleInfo.new(nested_module_hash)
72
+ nested_repo_dir = "#{self.nested_module_base}/#{module_info.module_name}"
73
+ clone_repo(module_info, nested_repo_dir)
74
+ end
75
+
76
+ def make_nested_module_base
77
+ unless nested_module_base = find_unused_path?(self.possible_nested_module_base_dirs)
78
+ raise Error::Usage, "The module must not have files/directories that conflict with each of #{self.possible_nested_module_base_dirs.join(', ')}"
79
+ end
80
+ FileUtils.mkdir_p(nested_module_base)
81
+ nested_module_base
82
+ end
83
+
84
+ def find_unused_path?(dirs)
85
+ dirs.map { |dir| "#{self.target_repo_dir}/#{dir}" }.find { |full_path| ! File.exists?(full_path) }
86
+ end
87
+
88
+ def clone_repo(module_info, target_repo_dir)
89
+ clone_args = {
90
+ :repo_url => module_info.repo_url,
91
+ :branch => module_info.branch,
92
+ :target_repo_dir => target_repo_dir
93
+ }
94
+ response = ClientModuleDir::GitRepo.clone(clone_args)
95
+ raise Error::Usage, response.data unless response.ok?
96
+ end
97
+
98
+ def self.possible_nested_module_base_dirs
99
+ @possible_nested_module_base_dirs ||= ::DTK::DSL::DirectoryType::ServiceInstance::NestedModule.possible_paths
100
+ end
101
+
102
+ end
103
+ end
104
+ end
105
+ end
106
+
@@ -0,0 +1,30 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::Client
19
+ class Operation::ClientModuleDir
20
+ # Operations for managing service instance folder content
21
+ class ServiceInstance < self
22
+ require_relative('service_instance/internal')
23
+ def self.clone(args)
24
+ wrap_operation(args) do |args|
25
+ response_data_hash(:target_repo_dir => Internal.clone(args))
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -22,6 +22,7 @@ module DTK::Client
22
22
  # Operations for managing module folders
23
23
  class ClientModuleDir < self
24
24
  require_relative('client_module_dir/git_repo')
25
+ require_relative('client_module_dir/service_instance')
25
26
 
26
27
  NAMESPACE_SEPERATOR = ':'
27
28
  # opts can have keys
@@ -121,6 +122,10 @@ module DTK::Client
121
122
 
122
123
  private
123
124
 
125
+ def self.response_data_hash(hash = {})
126
+ hash.inject({}) { |h, (k, v)| h.merge(k.to_s => v) }
127
+ end
128
+
124
129
  def self.base_path(type)
125
130
  path =
126
131
  case type.to_sym
@@ -34,7 +34,7 @@ module DTK::Client
34
34
  end
35
35
 
36
36
  def clone_module
37
- unless module_info = module_version_exists?(@module_ref, :type => :common_module, :remote_info => false, :rsa_pub_key => SSHUtil.rsa_pub_key_content)
37
+ unless module_info = module_version_exists?(@module_ref, :remote_info => false, :rsa_pub_key => SSHUtil.rsa_pub_key_content)
38
38
  raise Error::Usage, "DTK module '#{@module_ref.pretty_print}' does not exist on the DTK Server."
39
39
  end
40
40
 
@@ -100,7 +100,7 @@ module DTK::Client
100
100
  end
101
101
 
102
102
  if remote_module_info && remote_module_info.data(:service_info)
103
- !module_version_exists?(@module_ref, :type => :service_module)
103
+ !module_version_exists?(@module_ref)
104
104
  end
105
105
  end
106
106
 
@@ -34,40 +34,16 @@ module DTK::Client
34
34
  end
35
35
 
36
36
  def delete_from_remote(opts = {})
37
- query_string_hash = QueryStringHash.new(
38
- :module_name => module_ref.module_name,
39
- :namespace => module_ref.namespace,
40
- :rsa_pub_key => SSHUtil.rsa_pub_key_content,
41
- :force? => opts[:force]
42
- )
43
-
44
- unless version = module_ref.version
45
- remotes = Operation::Module.list_remotes({})
46
-
47
- selected_module = remotes.data.find{ |vr| vr['display_name'].eql?("#{module_ref.namespace}/#{module_ref.module_name}") }
48
- raise Error::Usage, "Module '#{module_ref.namespace}/#{module_ref.module_name}' does not exist on repo manager!" unless selected_module
49
-
50
- versions = selected_module['versions']
51
- versions.map! { |v| v == 'base' ? 'master' : v }
52
-
53
- if versions.size > 1
54
- ret_version = Console.version_prompt(versions, "Select which module version to delete: ", { :add_all => true })
55
- return unless ret_version
56
- version = ret_version
57
- else
58
- version = versions.first
59
- end
60
- end
61
-
62
- query_string_hash.merge!(:version => version)
63
- query_string_hash.merge!(:versions => versions) if version.eql?('all')
64
-
65
37
  unless opts[:skip_prompt]
66
38
  module_ref_opts = { :namespace => module_ref.namespace }
67
- module_ref_opts.merge!(:version => version) unless version.eql?('all')
68
- return unless Console.prompt_yes_no("Are you sure you want to delete module '#{DTK::Common::PrettyPrintForm.module_ref(module_ref.module_name, module_ref_opts)}' from repo manager?", :add_options => true)
39
+ return unless Console.prompt_yes_no("Are you sure you want to delete module '#{DTK::Common::PrettyPrintForm.module_ref(module_ref.module_name, module_ref_opts)}' from dtk network?", :add_options => true)
69
40
  end
70
- rest_post "#{BaseRoute}/delete_from_remote", query_string_hash
41
+
42
+ module_info = {
43
+ name: module_ref.module_name,
44
+ namespace: module_ref.namespace
45
+ }
46
+ DtkNetworkClient::Delete.run(module_info)
71
47
 
72
48
  nil
73
49
  end
@@ -61,8 +61,7 @@ module DTK::Client; class Operation::Module
61
61
  end
62
62
 
63
63
  def query_if_component_module_is_installed?
64
- # TODO: :type => :component_module is for legacy; once we get past having legacy can change to :common_module
65
- module_version_exists?(@module_ref, :type => :component_module)
64
+ module_version_exists?(@module_ref)
66
65
  end
67
66
 
68
67
  private
@@ -34,7 +34,7 @@ module DTK::Client; class Operation::Module
34
34
  unless Install::DependentModules.resolved.include?("#{dep['namespace']}:#{dep['name']}")
35
35
  Install::DependentModules.add_to_resolved("#{dep['namespace']}:#{dep['name']}")
36
36
  dep_module_ref = Install::DependentModules.create_module_ref(dep, opts = {})
37
- if dep_ref_info = module_version_exists?(dep_module_ref, :type => :component_module, :remote_info => true, :rsa_pub_key => SSHUtil.rsa_pub_key_content)
37
+ if dep_ref_info = module_version_exists?(dep_module_ref, :remote_info => true, :rsa_pub_key => SSHUtil.rsa_pub_key_content)
38
38
  new_print_helper = Install::PrintHelper.new(:module_ref => dep_module_ref, :source => :remote)
39
39
  if dep_ref_info.data(:has_remote) && !prompt_helper.update_none
40
40
  ComponentModule.install_or_pull?(dep_module_ref, prompt_helper, new_print_helper) unless dep_module_ref.is_base_module?
@@ -41,7 +41,7 @@ module DTK::Client; class Operation::Module
41
41
  end
42
42
 
43
43
  def print_continuation_installing_base_module
44
- print_continuation "Installing base module '#{pretty_print_module}' from #{source_term}", :color => :yellow
44
+ print_continuation "Installing module '#{pretty_print_module}' from #{source_term}", :color => :yellow
45
45
  end
46
46
 
47
47
  def print_continuation_pulling_base_module
@@ -25,12 +25,12 @@ module DTK::Client
25
25
  require_relative('install/dependent_modules')
26
26
  require_relative('install/common_module')
27
27
 
28
- def initialize(file_obj, module_ref, has_remote_repo)
28
+ def initialize(file_obj, module_ref, has_remote_repo, install_from)
29
29
  @file_obj = file_obj
30
30
  @base_module_ref = module_ref
31
31
  @parsed_module = file_obj.parse_content(:common_module_summary)
32
32
  @has_remote_repo = has_remote_repo
33
- @print_helper = PrintHelper.new(:module_ref => @base_module_ref, :source => has_remote_repo ? :remote : :local)
33
+ @print_helper = PrintHelper.new(:module_ref => @base_module_ref, :source => install_from || :local) # ? :remote : :local)
34
34
  end
35
35
  private :initialize
36
36
 
@@ -41,7 +41,8 @@ module DTK::Client
41
41
  has_directory_param = args[:has_directory_param]
42
42
  has_remote_repo = args[:has_remote_repo]
43
43
  update_deps = args[:update_deps]
44
-
44
+ install_from = args[:install_from]
45
+
45
46
  case update_deps
46
47
  when "prompt"
47
48
  update_deps = nil
@@ -55,7 +56,7 @@ module DTK::Client
55
56
  file_obj = args.required(:base_dsl_file_obj).raise_error_if_no_content
56
57
  end
57
58
 
58
- new(file_obj, module_ref, has_remote_repo).install(:update_deps => update_deps, :no_update_deps => no_update_deps)
59
+ new(file_obj, module_ref, has_remote_repo, install_from).install(:update_deps => update_deps, :no_update_deps => no_update_deps)
59
60
  end
60
61
  end
61
62
 
@@ -67,25 +68,30 @@ module DTK::Client
67
68
  raise Error::Usage, "No base module reference #{dsl_path_ref}"
68
69
  end
69
70
 
70
- if module_version_exists?(@base_module_ref, { :type => :common_module })
71
+ if module_version_exists?(@base_module_ref)
71
72
  raise Error::Usage, "Module '#{@base_module_ref.print_form}' exists already"
72
73
  end
73
74
 
74
- unless dependent_modules.empty?
75
- begin
76
- if @has_remote_repo
77
- DependentModules.install(@base_module_ref, dependent_modules, opts)
78
- else
79
- DependentModules.install_with_local(@base_module_ref, dependent_modules, opts)
80
- end
81
- rescue TerminateInstall
82
- @print_helper.print_terminated_installation
83
- return nil
84
- end
85
- end
75
+ # unless dependent_modules.empty?
76
+ # begin
77
+ # if @has_remote_repo
78
+ # DependentModules.install(@base_module_ref, dependent_modules, opts)
79
+ # else
80
+ # DependentModules.install_with_local(@base_module_ref, dependent_modules, opts)
81
+ # end
82
+ # rescue TerminateInstall
83
+ # @print_helper.print_terminated_installation
84
+ # return nil
85
+ # end
86
+ # end
86
87
 
87
88
  @print_helper.print_continuation_installing_base_module
88
- CommonModule.install(@base_module_ref, @file_obj, :has_remote_repo => @has_remote_repo)
89
+
90
+ base_path = @base_module_ref.client_dir_path || @file_obj.parent_dir?
91
+ self.class.handle_error base_path do
92
+ CommonModule.install(@base_module_ref, @file_obj, :has_remote_repo => @has_remote_repo)
93
+ end
94
+
89
95
  @print_helper.print_done_message
90
96
  nil
91
97
  end
@@ -112,7 +118,7 @@ module DTK::Client
112
118
  ModuleRef.new(:namespace => dep_namespace, :module_name => dep_module_name, :version => dep_version, :is_base_module => is_base_module)
113
119
  end
114
120
  unless base_component_module_found
115
- if module_version_exists?(@base_module_ref, :type => :component_module)
121
+ if module_version_exists?(@base_module_ref)
116
122
  ret << ModuleRef.new(:namespace => namespace, :module_name => module_name, :version => version, :is_base_module => true)
117
123
  end
118
124
  end
@@ -19,11 +19,12 @@ module DTK::Client
19
19
  class Operation::Module
20
20
  class InstallFromCatalog < self
21
21
  attr_reader :version, :module_ref, :target_repo_dir
22
- def initialize(catalog, module_ref, directory_path, version, remote_module_info)
22
+ def initialize(catalog, module_ref, directory_path, version, remote_module_info, type)
23
+ @type = type
23
24
  @catalog = catalog
24
25
  @module_ref = module_ref
25
26
  @directory_path = directory_path
26
- @target_repo_dir = ClientModuleDir.create_module_dir_from_path(directory_path || OsUtil.current_dir)
27
+ @target_repo_dir = OsUtil.current_dir unless type == :dependency #ClientModuleDir.create_module_dir_from_path(directory_path || OsUtil.current_dir)
27
28
  @version = version # if nil wil be dynamically updated along with version attribute of @module_ref
28
29
  @remote_module_info = remote_module_info
29
30
  end
@@ -35,38 +36,23 @@ module DTK::Client
35
36
  version = args[:version]
36
37
  directory_path = args[:directory_path]
37
38
  remote_module_info = args[:remote_module_info]
38
-
39
+ type = args[:type]
39
40
  # will create different classes for different catalog types when we add support for them
40
- new('dtkn', module_ref, directory_path, version, remote_module_info).install_from_catalog
41
+ new('dtkn', module_ref, directory_path, version, remote_module_info, type).install_from_catalog
41
42
  end
42
43
  end
43
44
 
44
45
  def install_from_catalog
45
- unless @remote_module_info
46
- query_string_hash = QueryStringHash.new(
47
- :module_name => @module_ref.module_name,
48
- :namespace => @module_ref.namespace,
49
- :rsa_pub_key => SSHUtil.rsa_pub_key_content,
50
- :version? => @version
51
- )
52
-
53
- @remote_module_info = rest_get "#{BaseRoute}/remote_module_info", query_string_hash
54
- end
55
-
56
- unless @version
57
- @version = @remote_module_info.required(:version)
58
- @module_ref.version = @version
59
- end
60
-
61
- if module_version_exists?(@module_ref, :type => :common_module)
62
- raise Error::Usage, "Module '#{@module_ref.print_form}' exists already"
63
- end
64
-
65
- create_repo_opts = { :repo_dir => @target_repo_dir, :commit_msg => "DTK client initialize" }
66
- Operation::ClientModuleDir::GitRepo.create_repo_with_empty_commit(create_repo_opts)
67
- LoadSource.fetch_transform_and_merge(@remote_module_info, self)
68
-
69
- {:target_repo_dir => @target_repo_dir}
46
+ module_info = {
47
+ name: module_ref.module_name,
48
+ namespace: module_ref.namespace,
49
+ version: @version,
50
+ explicit_path: @directory_path,
51
+ repo_dir: @directory_path || @target_repo_dir
52
+ }
53
+ installed_modules = DtkNetworkClient::Install.run(module_info, type: @type)
54
+
55
+ { :installed_modules => installed_modules }
70
56
  end
71
57
 
72
58
  end
@@ -19,19 +19,12 @@ module DTK::Client
19
19
  class Operation::Module
20
20
  class ListRemotes < self
21
21
  def self.execute(args = Args.new)
22
- wrap_operation(args) do |_args|
23
-
24
- query_string_hash = QueryStringHash.new(
25
- :detail_to_include => ['remotes', 'versions'],
26
- :rsa_pub_key => SSHUtil.rsa_pub_key_content,
27
- :module_namespace? => args[:module_namespace]
28
- )
29
-
30
- rest_get("#{BaseRoute}/remote_modules", query_string_hash)
22
+ wrap_operation(args) do |args|
23
+ namespace = args[:namespace]
24
+ response = DtkNetworkClient::List.run(namespace)
25
+ Response.new(response)
31
26
  end.set_render_as_table!
32
27
  end
33
28
  end
34
29
  end
35
30
  end
36
-
37
-
@@ -30,46 +30,32 @@ module DTK::Client
30
30
  def self.execute(args = Args.new)
31
31
  wrap_operation(args) do |args|
32
32
  module_ref = args.required(:module_ref)
33
+ base_dsl_file_obj = args.required(:base_dsl_file_obj)
33
34
  directory_path = args[:directory_path]
34
- new('dtkn', module_ref, directory_path).publish
35
+ update_lock_file = args[:update_lock_file]
36
+ new('dtkn', module_ref, directory_path).publish({file_obj: base_dsl_file_obj, update_lock_file: update_lock_file})
35
37
  end
36
38
  end
37
-
38
- def publish
39
- unless module_version_exists?(module_ref, :type => :common_module)
40
- raise Error::Usage, "Module #{module_ref.print_form} does not exist on server"
41
- end
42
-
43
- error_msg = "To allow publish to go through, invoke 'dtk push' to push the changes to server before invoking publish again"
44
- GitRepo.modified_with_diff?(target_repo_dir, { :error_msg => error_msg })
45
39
 
46
- post_body = PostBody.new(
47
- :module_name => module_ref.module_name,
48
- :namespace => module_ref.namespace,
49
- :version => @version,
50
- :rsa_pub_key => SSHUtil.rsa_pub_key_content
51
- )
40
+ def publish(opts = {})
41
+ file_obj = opts[:file_obj]
42
+ parsed_module = file_obj.parse_content(:common_module_summary)
52
43
 
53
- response = rest_post "#{BaseRoute}/publish_to_remote", post_body
44
+ module_info = {
45
+ name: module_ref.module_name,
46
+ namespace: module_ref.namespace,
47
+ version: @version,
48
+ repo_dir: @target_repo_dir
49
+ }
54
50
 
55
- query_string_hash = QueryStringHash.new(
56
- :module_name => module_ref.module_name,
57
- :namespace => module_ref.namespace,
58
- :rsa_pub_key => SSHUtil.rsa_pub_key_content,
59
- :version? => @version
60
- )
61
- remote_module_info = rest_get "#{BaseRoute}/remote_module_info", query_string_hash
51
+ response = DtkNetworkClient::Publish.run(module_info, parsed_module: parsed_module, development_mode: Config[:development_mode], update_lock_file: opts[:update_lock_file])
52
+ OsUtil.print_info("Module '#{module_ref.pretty_print}' has been published successfully.")
62
53
 
63
- unless @version
64
- @version = remote_module_info.required(:version)
65
- @module_ref.version = @version
54
+ if Config[:development_mode]
55
+ ret_response = { namespace_id: response['namespace_short_id'], module_version_id: response['short_id'] }
56
+ return ret_response
66
57
  end
67
58
 
68
- # this is temporary until we implement push-dtkn from server instead of from client
69
- # this part will fetch remote branches from repo manager after publish from server is finished
70
- LoadSource.fetch_from_remote(remote_module_info, self)
71
-
72
- OsUtil.print_info("'#{module_ref.pretty_print}' has been published successfully.")
73
59
  nil
74
60
  end
75
61
  end