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
							 |