class DTK::Client::Operation::Module::PullDtkn
Attributes
base_dsl_file_obj[R]
module_ref[R]
target_repo_dir[R]
version[R]
Public Class Methods
execute(args = Args.new)
click to toggle source
# File lib/client/operation/module/pull_dtkn.rb, line 37 def self.execute(args = Args.new) wrap_operation(args) do |args| module_ref = args.required(:module_ref) base_dsl_file_obj = args.required(:base_dsl_file_obj) version = args[:version] || module_ref.version directory_path = args[:directory_path] has_directory_param = args[:has_directory_param] skip_prompt = args[:skip_prompt] force = args[:force] update_deps = args[:update_deps] do_not_print = args[:do_not_print] allow_version = args[:allow_version] case update_deps when "prompt" update_deps = nil when false no_update_deps = true end if has_directory_param file_obj = base_dsl_file_obj.raise_error_if_no_content_flag(:module_ref) else file_obj = base_dsl_file_obj.raise_error_if_no_content end new('dtkn', module_ref, directory_path, version, file_obj).pull_dtkn(:update_deps => update_deps, :no_update_deps => no_update_deps, :force => force, :do_not_print => do_not_print, :allow_version => allow_version) end end
new(catalog, module_ref, directory_path, version, base_dsl_file_obj)
click to toggle source
# File lib/client/operation/module/pull_dtkn.rb, line 22 def initialize(catalog, module_ref, directory_path, version, base_dsl_file_obj) @catalog = catalog @module_ref = module_ref @directory_path = directory_path @target_repo_dir = directory_path || base_dsl_file_obj.parent_dir @version = version || 'master' @base_dsl_file_obj = base_dsl_file_obj @parsed_module = base_dsl_file_obj.parse_content(:common_module_summary) @print_helper = Install::PrintHelper.new(:module_ref => module_ref, :source => :remote) @module_ref.version ||= @version end
Public Instance Methods
pull_dtkn(opts = {})
click to toggle source
# File lib/client/operation/module/pull_dtkn.rb, line 68 def pull_dtkn(opts = {}) # TODO: DTK-2765: not sure if we need module to exist on server to do push-dtkn unless module_version_exists?(@module_ref) raise Error::Usage, "Module #{@module_ref.print_form} does not exist on server" end if ref_version = @version || module_ref.version do_not_raise = opts[:allow_version] || ref_version.eql?('master') raise Error::Usage, "You are not allowed to pull module version '#{ref_version}'!" unless do_not_raise end # error_msg = "To allow pull-dtkn to go through, invoke 'dtk push' to push the changes to server before invoking pull-dtkn again" # GitRepo.modified_with_diff?(@target_repo_dir, { :error_msg => error_msg, :command => 'pull-dtkn' }) module_info = { name: module_ref.module_name, namespace: module_ref.namespace, version: ref_version, repo_dir: target_repo_dir } begin DtkNetworkClient::Pull.run(module_info, opts) rescue Git::GitExecuteError => e exc = e.to_s << "\nUse '--force' flag to overwrite your changes" raise (e.to_s.include? 'merge') ? exc : e.to_s end # query_string_hash = QueryStringHash.new( # :module_name => @module_ref.module_name, # :namespace => @module_ref.namespace, # :rsa_pub_key => SSHUtil.rsa_pub_key_content, # :version => @version # ) # remote_module_info = rest_get "#{BaseRoute}/remote_module_info", query_string_hash # unless dependent_modules.empty? # begin # Install::DependentModules.install(@module_ref, dependent_modules, :update_deps => opts[:update_deps], :no_update_deps => opts[:no_update_deps] , :mode => 'pull', :do_not_print => opts[:do_not_print]) # # Install::DependentModules.install(@module_ref, dependent_modules, :skip_prompt => false, :mode => 'pull') # rescue Install::TerminateInstall # @print_helper.print_terminated_pulling # return nil # end # end # @print_helper.print_continuation_pulling_base_module unless opts[:do_not_print] # LoadSource.fetch_transform_and_merge(remote_module_info, self, :stage_and_commit_steps => true, :force => opts[:force], :use_theirs => true) # nil end
Private Instance Methods
compute_dependent_modules()
click to toggle source
# File lib/client/operation/module/pull_dtkn.rb, line 126 def compute_dependent_modules base_component_module_found = false ret = (@parsed_module.val(:DependentModules) || []).map do |parsed_module_ref| dep_module_name = parsed_module_ref.req(:ModuleName) dep_namespace = parsed_module_ref.req(:Namespace) dep_version = parsed_module_ref.val(:ModuleVersion) if is_base_module = (dep_module_name == @module_ref.module_name) # This is for legacy modules base_component_module_found = true end Install::ModuleRef.new(:namespace => dep_namespace, :module_name => dep_module_name, :version => dep_version, :is_base_module => is_base_module) end unless base_component_module_found if module_version_exists?(@module_ref) ret << Install::ModuleRef.new(:namespace => @module_ref.namespace, :module_name => @module_ref.module_name, :version => @module_ref.version, :is_base_module => true) end end ret end
dependent_modules()
click to toggle source
# File lib/client/operation/module/pull_dtkn.rb, line 122 def dependent_modules @dependent_modules ||= compute_dependent_modules end