Module: QuiversTaskrunner::RakeHelper

Defined in:
lib/quiverstaskrunner/helpers/rakehelper.rb

Class Method Summary collapse

Class Method Details

.safe_invoke(tasks, ensure_tasks = {}, options = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/quiverstaskrunner/helpers/rakehelper.rb', line 7

def self.safe_invoke(tasks, ensure_tasks={}, options={})

	start_time = Time.now
	task_group_name = options[:task_group_name] || "safe task invoke"
	if options[:display_message] && !options[:global].nil? && options[:global].respond_to?("no_error")
		puts "Start #{task_group_name}...".colorize(:cyan)
	end

	begin
		if tasks.is_a?(Array)
			tasks.each { |t| Rake::Task[t].invoke }
		else
			Rake::Task[tasks].invoke
		end
	rescue Exception => ex
		raise ex
	ensure
		if ensure_tasks.is_a?(Array) && ensure_tasks.any?
			RakeHelper.safe_invoke(ensure_tasks[0], ensure_tasks.shift)
		else
			Rake::Task[ensure_tasks].invoke unless ensure_tasks.empty?
		end
	end

	if options[:display_message] && !options[:global].nil? && options[:global].respond_to?("no_error")
		ellapsed_time_min = (Time.now - start_time)/60.to_f
		build_status = "successfully completed in"
		color_theme = :green
		unless options[:global].no_error
			build_status = "failed after"
			color_theme = :red
		end
		puts "#{task_group_name.capitalize} #{build_status} #{ellapsed_time_min} minutes".colorize(color_theme)
	end
end