Class: RakeCloudspin::TaskLib

Inherits:
Rake::TaskLib
  • Object
show all
Defined in:
lib/rake_cloudspin/tasklib.rb

Defined Under Namespace

Classes: ParameterDefinition

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args, &block) ⇒ TaskLib

Returns a new instance of TaskLib.



39
40
41
42
43
44
45
# File 'lib/rake_cloudspin/tasklib.rb', line 39

def initialize(*args, &block)
  setup_defaults
  process_arguments(args)
  process_block(block)
  check_required
  define
end

Class Method Details

.check_required_for(instance) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/rake_cloudspin/tasklib.rb', line 27

def check_required_for(instance)
  dissatisfied = parameter_definitions.values.reject do |definition|
    definition.satisfied_by?(instance)
  end
  unless dissatisfied.empty?
    names = dissatisfied.map(&:name)
    raise RequiredParameterUnset,
          "Required parameter#{names.length > 1 ? 's' : ''} #{names.join(',')} unset."
  end
end

.parameter(name, options = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/rake_cloudspin/tasklib.rb', line 11

def parameter(name, options = {})
  parameter_definition = ParameterDefinition.new(
      name, options[:default], options[:required])
  name = parameter_definition.name

  attr_accessor(name)

  parameter_definitions[name] = parameter_definition
end

.parameter_definitionsObject



7
8
9
# File 'lib/rake_cloudspin/tasklib.rb', line 7

def parameter_definitions
  @parameter_definitions ||= {}
end

.setup_defaults_for(instance) ⇒ Object



21
22
23
24
25
# File 'lib/rake_cloudspin/tasklib.rb', line 21

def setup_defaults_for(instance)
  parameter_definitions.values.each do |parameter_definition|
    parameter_definition.apply_default_to(instance)
  end
end

Instance Method Details

#check_requiredObject



58
59
60
# File 'lib/rake_cloudspin/tasklib.rb', line 58

def check_required
  self.class.check_required_for(self)
end

#defineObject



62
63
# File 'lib/rake_cloudspin/tasklib.rb', line 62

def define
end

#process_arguments(_) ⇒ Object



51
52
# File 'lib/rake_cloudspin/tasklib.rb', line 51

def process_arguments(_)
end

#process_block(block) ⇒ Object



54
55
56
# File 'lib/rake_cloudspin/tasklib.rb', line 54

def process_block(block)
  block.call(self) if block
end

#setup_defaultsObject



47
48
49
# File 'lib/rake_cloudspin/tasklib.rb', line 47

def setup_defaults
  self.class.setup_defaults_for(self)
end