Module: Xcake::Configurable

Included in:
Project, Target
Defined in:
lib/xcake/dsl/configurable.rb

Overview

This namespace provides all of methods for the DSL where configurations are specified.

Classes for the DSL which want to either specifiy build settings or scheme launch arguments (i.e The Project or Targets) include this namespace.

Examples:

class Application
  include Xcake::Configurable
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#configurationsObject (private)

Returns the value of attribute configurations.



17
18
19
# File 'lib/xcake/dsl/configurable.rb', line 17

def configurations
  @configurations
end

Instance Method Details

#all_configurationsArray<Configuration>

Returns list of all configurations.

Returns:



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/xcake/dsl/configurable.rb', line 23

def all_configurations
  if @configurations.nil?
    @configurations = []

    if parent_configurable && parent_configurable.all_configurations
      copy_parent_configurations
    else
      debug_configuration :Debug
      release_configuration :Release
    end

  end

  @configurations
end

#all_configurations=(configurations) ⇒ Object

Parameters:



51
52
53
# File 'lib/xcake/dsl/configurable.rb', line 51

def all_configurations=(configurations)
  @configurations = configurations
end

#configuration(name, type) ⇒ Configuration

This either finds a configuration with the same name and type or creates one.

Returns:



92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/xcake/dsl/configurable.rb', line 92

def configuration(name, type)
  default_settings = default_settings_for_type(type)
  configurations = configurations_of_type(type)

  if name.nil?
    build_configuration = configurations.first
  else
    build_configuration = configurations.detect do |c|
      c.name == name.to_s
    end
  end

  if build_configuration.nil?

    name = type.to_s.capitalize if name.nil?

    build_configuration = Configuration.new(name) do |b|
      b.type = type
      b.settings.merge!(default_settings)

      yield(b) if block_given?
    end

    @configurations ||= []
    @configurations << build_configuration
  end

  build_configuration
end

#configurations_of_type(type) ⇒ Array<Configuration>

Returns list of configurations of a type.

Returns:



57
58
59
60
61
62
63
# File 'lib/xcake/dsl/configurable.rb', line 57

def configurations_of_type(type)
  return [] if @configurations.nil?

  @configurations.select do |c|
    c.type == type
  end
end

#copy_parent_configurationsObject (private)



41
42
43
44
45
# File 'lib/xcake/dsl/configurable.rb', line 41

def copy_parent_configurations
  parent_configurable.all_configurations.each do |c|
    configuration(c.name, c.type)
  end if parent_configurable
end

#debug_configuration(name = nil, &block) ⇒ Configuration

Deprecated.

Please use configuration <name>, :debug

This either finds a release configuration with the same name or creates one.

Returns:



72
73
74
# File 'lib/xcake/dsl/configurable.rb', line 72

def debug_configuration(name = nil, &block)
  configuration(name, :debug, &block)
end

#default_settings_for_type(type) ⇒ Object (private)



128
129
130
131
132
133
134
135
# File 'lib/xcake/dsl/configurable.rb', line 128

def default_settings_for_type(type)
  case type
  when :debug
    default_debug_settings
  when :release
    default_release_settings
  end
end

#parent_configurableObject (private)



124
125
126
# File 'lib/xcake/dsl/configurable.rb', line 124

def parent_configurable
  nil
end

#release_configuration(name = nil, &block) ⇒ Configuration

Deprecated.

Please use configuration <name>, :release

This either finds a release configuration with the same name or creates one.

Returns:



83
84
85
# File 'lib/xcake/dsl/configurable.rb', line 83

def release_configuration(name = nil, &block)
  configuration(name, :release, &block)
end