class DTK::Client::Operation::Module::Install::DependentModules
Constants
- BaseRoute
Public Class Methods
add_to_resolved(module_name)
click to toggle source
# File lib/client/operation/module/install/dependent_modules.rb, line 54 def self.add_to_resolved(module_name) resolved << module_name end
create_module_ref(ref_hash, opts = {})
click to toggle source
# File lib/client/operation/module/install/dependent_modules.rb, line 127 def self.create_module_ref(ref_hash, opts = {}) module_ref_hash = { :namespace => ref_hash['namespace'], :module_name => ref_hash['name'], :version => ref_hash['version'] } Install::ModuleRef.new(module_ref_hash) end
get_server_dependencies(component_module_ref)
click to toggle source
# File lib/client/operation/module/install/dependent_modules.rb, line 147 def self.get_server_dependencies(component_module_ref) hash = { :module_name => component_module_ref.module_name, :namespace => component_module_ref.namespace, :version? => component_module_ref.version } rest_get "#{BaseRoute}/module_info_with_local_dependencies", QueryStringHash.new(hash) end
install(*args)
click to toggle source
same args as initialize
# File lib/client/operation/module/install/dependent_modules.rb, line 42 def self.install(*args) new(*args).install end
install_with_local(*args)
click to toggle source
# File lib/client/operation/module/install/dependent_modules.rb, line 46 def self.install_with_local(*args) new(*args).install_with_local end
new(base_module_ref, component_module_refs, opts = {})
click to toggle source
opts can have keys:
:update_deps
# File lib/client/operation/module/install/dependent_modules.rb, line 30 def initialize(base_module_ref, component_module_refs, opts = {}) # TODO: DTK-2766: in an later release will changes this so iterating over module_refs, which could have component and service info, # not just component modules @base_module_ref = base_module_ref @component_module_refs = component_module_refs @print_helper = PrintHelper.new(:module_ref => @base_module_ref, :source => :remote) @prompt_helper = PromptHelper.new(:update_all => opts[:update_deps], :update_none => opts[:update_none] || opts[:no_update_deps]) @opts = opts end
resolved()
click to toggle source
# File lib/client/operation/module/install/dependent_modules.rb, line 50 def self.resolved @resolved ||= [] end
Public Instance Methods
get_local_modules_info()
click to toggle source
# File lib/client/operation/module/install/dependent_modules.rb, line 142 def get_local_modules_info component_dependency_tree = ComponentDependencyTree.create(@base_module_ref, @component_module_refs, @print_helper, 'local') component_dependency_tree.resolve_conflicts_and_versions end
get_unified_dependent_module_refs()
click to toggle source
# File lib/client/operation/module/install/dependent_modules.rb, line 136 def get_unified_dependent_module_refs component_dependency_tree = ComponentDependencyTree.create(@base_module_ref, @component_module_refs, @print_helper) # returns an array of module_refs that have been unified so only one version and namespace per module name component_dependency_tree.resolve_conflicts_and_versions(@opts) end
install()
click to toggle source
# File lib/client/operation/module/install/dependent_modules.rb, line 58 def install @print_helper.print_getting_dependencies unless @prompt_helper.update_none unified_module_refs = get_unified_dependent_module_refs unless unified_module_refs.empty? case @opts[:mode] when 'pull' @print_helper.print_pulling_dependencies unless @prompt_helper.update_none else @print_helper.print_installing_dependencies end unified_module_refs.each do |module_ref| # Using unless module_ref.is_base_module? because Base component module is installed when base is installed ComponentModule.install_or_pull?(module_ref, @prompt_helper, @print_helper) unless module_ref.is_base_module? end end end
install_with_local()
click to toggle source
# File lib/client/operation/module/install/dependent_modules.rb, line 75 def install_with_local @component_module_refs.each do |component_module_ref| unless self.class.resolved.include?("#{component_module_ref.namespace}:#{component_module_ref.module_name}") self.class.add_to_resolved("#{component_module_ref.namespace}:#{component_module_ref.module_name}") if component_module_ref.is_master_version? server_response = self.class.get_server_dependencies(component_module_ref) if module_info = server_response.data(:module_info) if module_info['has_remote'] new_print_helper = PrintHelper.new(:module_ref => component_module_ref, :source => :remote) if @prompt_helper.pull_module_update?(new_print_helper) ComponentModule.install_or_pull_new?(component_module_ref, @prompt_helper, new_print_helper) unless component_module_ref.is_base_module? RemoteDependencies.install_or_pull?(component_module_ref, @prompt_helper, new_print_helper) else new_print_helper.print_using_installed_dependent_module LocalDependencies.install_or_pull?(server_response, @prompt_helper, new_print_helper) end else # does not have remote but exist locally new_print_helper = PrintHelper.new(:module_ref => component_module_ref, :source => :remote) new_print_helper.print_using_installed_dependent_module LocalDependencies.install_or_pull?(server_response, @prompt_helper, new_print_helper) end else remote_response = nil new_print_helper = PrintHelper.new(:module_ref => component_module_ref, :source => :remote) cmp = ComponentModule.new(component_module_ref, @prompt_helper, new_print_helper) if component_module_ref.module_installed?(cmp) if @prompt_helper.pull_module_update?(new_print_helper) ComponentModule.install_or_pull_new?(component_module_ref, @prompt_helper, new_print_helper) unless component_module_ref.is_base_module? else new_print_helper.print_using_installed_dependent_module end else ComponentModule.install_or_pull_new?(component_module_ref, @prompt_helper, new_print_helper) unless component_module_ref.is_base_module? end end else new_print_helper = PrintHelper.new(:module_ref => component_module_ref, :source => :remote) new_print_helper.print_using_installed_dependent_module cmp = ComponentModule.new(component_module_ref, @prompt_helper, new_print_helper) unless component_module_ref.module_installed?(cmp) ComponentModule.install_or_pull_new?(component_module_ref, @prompt_helper, new_print_helper) end server_response = self.class.get_server_dependencies(component_module_ref) LocalDependencies.install_or_pull?(server_response, @prompt_helper, new_print_helper) end end end end