Class: Physique::TasksBuilder

Inherits:
Object
  • Object
show all
Includes:
Albacore::Logging, DSL, ToolLocator, Rake::DSL
Defined in:
lib/physique/tasks_builder.rb

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ToolLocator

#locate_tool, #lookup_tool, #register_tool, #which

Class Attribute Details

.subclassesObject (readonly)

Returns the value of attribute subclasses.



15
16
17
# File 'lib/physique/tasks_builder.rb', line 15

def subclasses
  @subclasses
end

Instance Attribute Details

#solutionObject (readonly)

Returns the value of attribute solution.



22
23
24
# File 'lib/physique/tasks_builder.rb', line 22

def solution
  @solution
end

Class Method Details

.build_tasks_for(solution) ⇒ Object



24
25
26
27
28
# File 'lib/physique/tasks_builder.rb', line 24

def self.build_tasks_for(solution)
  TasksBuilder.subclasses.each do |builder_class|
    builder_class.new.build_tasks_for solution
  end
end

.inherited(subclass) ⇒ Object



18
19
20
# File 'lib/physique/tasks_builder.rb', line 18

def self.inherited(subclass)
  TasksBuilder.subclasses << subclass
end

Instance Method Details

#build_tasksObject



35
36
37
# File 'lib/physique/tasks_builder.rb', line 35

def build_tasks
  raise 'This method must be implemented in your subclass'
end

#build_tasks_for(solution) ⇒ Object



30
31
32
33
# File 'lib/physique/tasks_builder.rb', line 30

def build_tasks_for(solution)
  @solution = solution
  build_tasks
end

#ensure_output_location(path) ⇒ Object



39
40
41
42
# File 'lib/physique/tasks_builder.rb', line 39

def ensure_output_location(path)
  # Ensure output directory exists
  FileUtils.mkdir_p path
end

#namespace(name, &block) ⇒ Object



44
45
46
47
# File 'lib/physique/tasks_builder.rb', line 44

def namespace(name, &block)
  name = to_string_or_symbol(name)
  Rake.application.in_namespace(name, &block)
end

#to_string_or_symbol(name) ⇒ Object



49
50
51
52
53
54
55
56
# File 'lib/physique/tasks_builder.rb', line 49

def to_string_or_symbol(name)
  name = name.to_s if name.kind_of?(Symbol)
  name = name.to_str if name.respond_to?(:to_str)
  unless name.kind_of?(String) || name.nil?
    raise ArgumentError, 'Expected a String or Symbol for a namespace name'
  end
  name
end