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
|