module QuiversTaskrunner::RakeHelper

Public Class Methods

safe_invoke(tasks, ensure_tasks={}, options={}) click to toggle source
# 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