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