class DTK::Client::Operation::ClientModuleDir::ServiceInstance::Internal
All Internal
methods do not have wrap_operation and can only be accessed by a method that wraps it
Attributes
base_module[R]
nested_modules[R]
remove_existing[R]
repo_dir[R]
service_instance[R]
Public Class Methods
clone(args)
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 34 def self.clone(args) new(args).clone end
clone_nested_modules(args)
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 38 def self.clone_nested_modules(args) new(args).clone_nested_modules end
commit_and_push_nested_modules(args)
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 55 def self.commit_and_push_nested_modules(args) service_instance = args[:service_instance] service_instance_dir = args[:service_instance_dir] || ret_base_path(:service, service_instance) nested_modules_dir = find_nested_modules_dir(service_instance_dir) nested_modules = Dir.glob("#{nested_modules_dir}/*") nested_modules_with_sha = [] nested_modules.each do |nested_module| nested_module_name = nested_module.split('/').last response = ClientModuleDir::GitRepo.commit_and_push_to_nested_module_repo({target_repo_dir: nested_module}) if head_sha = response.data(:head_sha) nested_modules_with_sha << { nested_module_name => head_sha } end end nested_modules_with_sha end
modified_service_instance_or_nested_modules?(args)
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 74 def self.modified_service_instance_or_nested_modules?(args) service_instance_dir = args.required(:dir) command = args.required(:command) error_msg = args.required(:error_msg) is_modified?(service_instance_dir, command, error_msg) nested_modules_dir = find_nested_modules_dir(service_instance_dir) nested_modules = Dir.glob("#{nested_modules_dir}/*") nested_modules.each do |nested_module| nested_module_name = nested_module.split('/').last nested_error_msg = "There are uncommitted changes in nested module '#{nested_module_name}'! #{error_msg}" is_modified?(nested_module, command, nested_error_msg) end end
new(args)
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 25 def initialize(args) @base_module = args.required(:base_module) @nested_modules = args.required(:nested_modules) @service_instance = args.required(:service_instance) @remove_existing = args[:remove_existing] @repo_dir = args[:repo_dir] end
remove_nested_module_dirs(args)
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 91 def self.remove_nested_module_dirs(args) service_instance = args[:service_instance] service_instance_dir = args[:service_instance_dir] || ret_base_path(:service, service_instance) nested_modules_dir = find_nested_modules_dir(service_instance_dir) nested_modules = Dir.glob("#{nested_modules_dir}/*") args[:nested_modules_to_delete].each do |nested_module| module_to_delete_path = "#{nested_modules_dir}/#{nested_module['display_name']}" FileUtils.remove_dir(module_to_delete_path) if nested_modules.include? module_to_delete_path end args[:nested_modules_to_delete] end
Private Class Methods
find_nested_modules_dir(service_instance_dir)
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 148 def self.find_nested_modules_dir(service_instance_dir) self.possible_nested_module_base_dirs.map { |dir| "#{service_instance_dir}/#{dir}" }.find { |full_path| File.exists?(full_path) } end
is_modified?(path, command, error_msg)
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 166 def self.is_modified?(path, command, error_msg) repo_dir = { :path => path, :branch => Git.open(path).branches.local, :command => command } message = ClientModuleDir::GitRepo.modified_with_diff(repo_dir) raise Error::Usage, error_msg if message.data(:modified) end
possible_nested_module_base_dirs()
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 162 def self.possible_nested_module_base_dirs @possible_nested_module_base_dirs ||= ::DTK::DSL::DirectoryType::ServiceInstance::NestedModule.possible_paths end
Public Instance Methods
clone()
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 48 def clone @target_repo_dir = clone_base_module @nested_module_base = make_nested_module_base self.nested_modules.each { |nested_module| clone_nested_module(nested_module) } self.target_repo_dir end
clone_nested_modules()
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 42 def clone_nested_modules @target_repo_dir = self.repo_dir @nested_module_base = self.class.find_nested_modules_dir(self.repo_dir) self.nested_modules.each { |nested_module| clone_nested_module(nested_module) } end
Protected Instance Methods
nested_module_base()
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 113 def nested_module_base @nested_module_base || raise(Error, "Unexpected that @nested_module_base is nil") end
possible_nested_module_base_dirs()
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 117 def possible_nested_module_base_dirs self.class.possible_nested_module_base_dirs end
target_repo_dir()
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 109 def target_repo_dir @target_repo_dir || raise(Error, "Unexpected that @target_repo_dir is nil") end
Private Instance Methods
clone_base_module()
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 123 def clone_base_module module_info = ModuleInfo.new(self.base_module) target_repo_dir = self.class.create_service_dir(self.service_instance, :remove_existing => self.remove_existing, :path => self.repo_dir) clone_repo(module_info, target_repo_dir) target_repo_dir end
clone_nested_module(nested_module_hash)
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 130 def clone_nested_module(nested_module_hash) module_info = ModuleInfo.new(nested_module_hash) nested_repo_dir = "#{self.nested_module_base}/#{module_info.module_name}" clone_repo(module_info, nested_repo_dir) end
clone_repo(module_info, target_repo_dir)
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 152 def clone_repo(module_info, target_repo_dir) clone_args = { :repo_url => module_info.repo_url, :branch => module_info.branch, :target_repo_dir => target_repo_dir } response = ClientModuleDir::GitRepo.clone(clone_args) raise Error::Usage, response.data unless response.ok? end
find_unused_path?(dirs)
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 144 def find_unused_path?(dirs) dirs.map { |dir| "#{self.target_repo_dir}/#{dir}" }.find { |full_path| ! File.exists?(full_path) } end
make_nested_module_base()
click to toggle source
# File lib/client/operation/client_module_dir/service_instance/internal.rb, line 136 def make_nested_module_base unless nested_module_base = find_unused_path?(self.possible_nested_module_base_dirs) raise Error::Usage, "The module must not have files/directories that conflict with each of #{self.possible_nested_module_base_dirs.join(', ')}" end FileUtils.mkdir_p(nested_module_base) nested_module_base end