class DTK::Client::Operation::Service::CloneService

Public Class Methods

execute(args = Args.new) click to toggle source
# File lib/client/operation/service/clone_service.rb, line 21
def self.execute(args = Args.new)
  wrap_operation(args) do |args|
    service_ref       = args.required(:service_ref)
    service_name      = args.required(:service_name)
    target_directory = args[:target_directory]

    unless service_info = service_exists?(service_ref)
      raise Error::Usage, "DTK service '#{service_ref}' does not exist on server."
    end

    service_instance = service_info.required(:service, :name)
    clone_args = {
      :base_module      => service_info.required(:base_module),
      :nested_modules   => service_info.required(:nested_modules),
      :service_instance => service_instance,
      :repo_dir         => target_directory
    }
    message = ClientModuleDir::ServiceInstance.clone(clone_args)
    target_dir = message.data(:target_repo_dir)

    OsUtil.print_info("DTK service '#{service_instance}' has been successfully cloned into '#{target_dir}'")
  end
end