Module: Panoramix
- Defined in:
- lib/panoramix/mpi.rb,
lib/panoramix/plugin/s3.rb,
lib/panoramix/plugin/cfn.rb,
lib/panoramix/plugin/env.rb,
lib/panoramix/plugin/git.rb,
lib/panoramix/plugin/base.rb,
lib/panoramix/plugin/wget.rb,
lib/panoramix/tasks/actions.rb,
lib/panoramix/panoramix_core.rb,
lib/panoramix/tasks/task_mpi.rb,
lib/panoramix/plugin/docker_up.rb,
lib/panoramix/tasks/global_tasks.rb,
lib/panoramix/plugin/docker_image.rb,
lib/panoramix/plugin/docker_image_base.rb
Defined Under Namespace
Modules: Plugin, Tasks Classes: MPI
Constant Summary collapse
- TIMESTAMP =
Hash.new
Class Method Summary collapse
- .define_action_task(name, desctiption, instance, action, prerequisites) ⇒ Object
- .define_task(name, prerequisites, description, block = nil) ⇒ Object
- .define_tasks(name, descriptions, instance, prerequisites, block = nil) ⇒ Object
- .global_timestamps(prerequisites, scope) ⇒ Object
- .run_custom_task(instance, name) ⇒ Object
- .run_task(task, instance, block = nil) ⇒ Object
- .validation_error(instance, error) ⇒ Object
Class Method Details
.define_action_task(name, desctiption, instance, action, prerequisites) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# 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) ⇒ Object
61 62 63 64 65 |
# 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) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 |
# 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. 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) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/panoramix/panoramix_core.rb', line 6 def (prerequisites, scope) = 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]. else Panoramix::TIMESTAMP["#{scope}:#{p}"] end end # Remove nil values (fe: Directory tasks) .compact end |
.run_custom_task(instance, name) ⇒ Object
35 36 37 38 39 40 41 42 |
# 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) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/panoramix/panoramix_core.rb', line 20 def run_task(task, instance, block=nil) if instance.needed? (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) ⇒ Object
81 82 83 |
# 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 |