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