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