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 Method Summary collapse

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:



53
54
55
# File 'lib/xcake/dsl/configurable.rb', line 53

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:



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
121
122
# File 'lib/xcake/dsl/configurable.rb', line 94

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

  build_configuration = if name.nil?
                          configurations.first
                        else
                          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:



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

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

  @configurations.select do |c|
    c.type == type
  end
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:



74
75
76
# File 'lib/xcake/dsl/configurable.rb', line 74

def debug_configuration(name = nil, &block)
  configuration(name, :debug, &block)
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:



85
86
87
# File 'lib/xcake/dsl/configurable.rb', line 85

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