module Panoramix

Constants

TIMESTAMP

Public Instance Methods

define_action_task(name, desctiption, instance, action, prerequisites) click to toggle source
# File lib/panoramix/panoramix_core.rb, line 44
def define_action_task(name, desctiption, instance, action, prerequisites)
        if instance.respond_to? action.name
                Rake.application.last_description = desctiption
                Rake::Task.define_task "#{name}:#{action.name.to_s}" do |t|
                        run_custom_task(instance, action.name)
                end

                # This must be fixed. Bad code quality!!
                if action.name == "vars"
                        t = Rake::Task["#{name}:#{action.name.to_s}"]
                        t.enhance prerequisites
                end

                action.addTask("#{name}:#{action.name.to_s}", instance.class)
        end
end
define_task(name, prerequisites, description, block=nil) click to toggle source
# File lib/panoramix/panoramix_core.rb, line 61
def define_task(name, prerequisites, description, block=nil)
        Rake.application.last_description = description
        Rake::MultiTask.define_task({name => prerequisites}, &block) if ENV["ALLOW_MULTI"]
        Rake::Task.define_task({name => prerequisites}, &block) unless ENV["ALLOW_MULTI"]
end
define_tasks(name, descriptions, instance, prerequisites, block=nil) click to toggle source
# File lib/panoramix/panoramix_core.rb, line 67
def define_tasks(name, descriptions, instance, prerequisites, block=nil)
        action = Proc.new do |t|
                run_task(t, instance, block) if block
                run_task(t, instance) unless block
                Panoramix::TIMESTAMP["#{t.scope.first}:#{name}"] = instance.timestamp
        end

        define_task(name, prerequisites, descriptions[:main], action)

        Panoramix::Tasks::Actions.each do |act|
                define_action_task(name, descriptions[act.name.to_sym], instance, act, prerequisites)
        end
end
global_timestamps(prerequisites, scope) click to toggle source
# File lib/panoramix/panoramix_core.rb, line 6
def global_timestamps(prerequisites, scope)
        timestamps = prerequisites.map do |p|
                any_task = Rake::Task.tasks.any? { |t| t.name == p }
                if( any_task && (Rake::Task[p].class == Rake::FileTask))
                        Rake::Task[p].timestamp
                else
                        Panoramix::TIMESTAMP["#{scope}:#{p}"]
                end
        end

        # Remove nil values (fe: Directory tasks)
        timestamps.compact
end
run_custom_task(instance, name) click to toggle source
# File lib/panoramix/panoramix_core.rb, line 35
def run_custom_task(instance, name)
        method = instance.method(name.to_sym)
        begin
                method.call
        rescue Panoramix::Plugin::ValidationError => e
                puts "Validation error: #{e.message}".red
        end
end
run_task(task, instance, block=nil) click to toggle source
# File lib/panoramix/panoramix_core.rb, line 20
def run_task(task, instance, block=nil)
        if instance.needed? global_timestamps(task.prerequisites, task.scope.first)
                begin
                        block.call(instance) if block
                        instance.run_default unless block
                rescue Panoramix::Plugin::DockerUpExceptionError => e
                        puts "Error: #{e.message}".red
                        puts "Exiting program...".red
                        exit(1)
                end
        else
                puts "task #{task} not needed"
        end
end
validation_error(instance, error) click to toggle source
# File lib/panoramix/panoramix_core.rb, line 81
def validation_error(instance, error)
        puts "#{instance.class.name.split("::").last} validation error \n\t#{error.gsub("\n", "\n\t").red}"
end