Class: DTK::Client::TestModuleCreator

Inherits:
Object
  • Object
show all
Defined in:
lib/command_helpers/test_module_creator.rb

Class Method Summary collapse

Class Method Details

.create_clone(type, module_name) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/command_helpers/test_module_creator.rb', line 24

def create_clone(type, module_name)
	Response.wrap_helper_actions do
     modules_dir = OsUtil.test_clone_location()
     FileUtils.mkdir_p(modules_dir) unless File.directory?(modules_dir)
     target_repo_dir = OsUtil.module_location(type,module_name)

     begin
     	FileUtils.mkdir_p(target_repo_dir)
       generate_model(module_name, target_repo_dir)
       generate_serverspec_files(module_name, target_repo_dir)
     rescue => e
     	additional_error_msg = ""
       error_msg = "Create of directory (#{target_repo_dir}) failed."
       additional_error_msg = "Directory already exists" if e.message.include? "File exists"
       raise DTK::ErrorUsage.new(error_msg + " " + additional_error_msg,:log_error=>false)
     end
     {"module_directory" => target_repo_dir}
   end
end

.generate_model(module_name, target_repo_dir) ⇒ Object



44
45
46
47
48
49
# File 'lib/command_helpers/test_module_creator.rb', line 44

def generate_model(module_name, target_repo_dir)
	input = File.expand_path('test_module_templates/dtk.model.yaml.eruby', File.dirname(__FILE__))
	eruby = Erubis::Eruby.new(File.read(input))
	content = eruby.result(:module_name => module_name)
	File.open(target_repo_dir + "/dtk.model.yaml", "w") { |f| f.write(content) }
end

.generate_serverspec_files(module_name, target_repo_dir) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/command_helpers/test_module_creator.rb', line 51

def generate_serverspec_files(module_name, target_repo_dir)
	template_location = File.expand_path('test_module_templates', File.dirname(__FILE__))
	spec_helper_template = Erubis::Eruby.new(File.read(template_location + "/spec_helper.rb.eruby")).result
	spec_template = Erubis::Eruby.new(File.read(template_location + "/temp_component_spec.rb.eruby")).result

	begin
		#Create standard serverspec structure
		FileUtils.mkdir_p(target_repo_dir + "/serverspec/spec/localhost")
		File.open(target_repo_dir + "/serverspec/spec/spec_helper.rb", "w") { |f| f.write(spec_helper_template) }
		File.open(target_repo_dir + "/serverspec/spec/localhost/temp_component_spec.rb", "w") { |f| f.write(spec_template) }
	rescue => e
		error_msg = "Generating serverspec files failed."
     DtkLogger.instance.error_pp(e.message, e.backtrace)
     raise DTK::ErrorUsage.new(error_msg,:log_error=>false)
	end
end