39 lines
		
	
	
		
			911 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			39 lines
		
	
	
		
			911 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | require 'constants' | ||
|  | 
 | ||
|  | 
 | ||
|  | class ProjectConfigManager | ||
|  | 
 | ||
|  |   attr_reader   :options_files, :release_config_changed, :test_config_changed | ||
|  |   attr_accessor :config_hash | ||
|  | 
 | ||
|  |   constructor :cacheinator, :yaml_wrapper | ||
|  | 
 | ||
|  | 
 | ||
|  |   def setup | ||
|  |     @options_files = [] | ||
|  |     @release_config_changed = false | ||
|  |     @test_config_changed    = false | ||
|  |   end | ||
|  | 
 | ||
|  | 
 | ||
|  |   def merge_options(config_hash, option_filepath) | ||
|  |     @options_files << File.basename( option_filepath ) | ||
|  |     config_hash.deep_merge( @yaml_wrapper.load( option_filepath ) ) | ||
|  |     return config_hash | ||
|  |   end  | ||
|  |    | ||
|  | 
 | ||
|  |    | ||
|  |   def process_release_config_change | ||
|  |     # has project configuration changed since last release build | ||
|  |     @release_config_changed = @cacheinator.diff_cached_release_config?( @config_hash ) | ||
|  |   end | ||
|  | 
 | ||
|  | 
 | ||
|  |   def process_test_config_change | ||
|  |     # has project configuration changed since last test build | ||
|  |     @test_config_changed = @cacheinator.diff_cached_test_config?( @config_hash ) | ||
|  |   end | ||
|  | 
 | ||
|  | end |