lib/xcake/configurable.rb in xcake-0.6.19 vs lib/xcake/configurable.rb in xcake-0.6.20
- old
+ new
@@ -10,11 +10,10 @@
# class Application
# include Xcake::Configurable
# end
#
module Configurable
-
private
attr_accessor :configurations
public
@@ -23,28 +22,44 @@
#
def all_configurations
if @configurations.nil?
@configurations = []
- parent_configurable.all_configurations.each do |c|
- configuration(c.name, c.type)
- end if parent_configurable
+ if parent_configurable && parent_configurable.all_configurations
+ copy_parent_configurations
+ else
+ debug_configuration :Debug
+ release_configuration :Release
+ end
+
end
@configurations
end
+ private
+
+ def copy_parent_configurations
+ parent_configurable.all_configurations.each do |c|
+ configuration(c.name, c.type)
+ end if parent_configurable
+ end
+
+ public
+
# @param [Array<Configuration>] new list of configurations to set
#
def all_configurations=(configurations)
@configurations = configurations
end
# @return [Array<Configuration>] list of configurations of a type
#
def configurations_of_type(type)
- all_configurations.select do |c|
+ return [] if @configurations.nil?
+
+ @configurations.select do |c|
c.type == type
end
end
# This either finds a release configuration
@@ -74,12 +89,11 @@
# This either finds a configuration
# with the same name and type or creates one.
#
# @return [Configuration] the new or existing configuration
#
- def configuration(name, type, &block)
-
+ def configuration(name, type)
default_settings = default_settings_for_type(type)
configurations = configurations_of_type(type)
if name.nil?
build_configuration = configurations.first
@@ -92,17 +106,17 @@
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)
- block.call(b) if block_given?
+ yield(b) if block_given?
end
- all_configurations << build_configuration
+ @configurations ||= []
+ @configurations << build_configuration
end
build_configuration
end