Class: ProjectConfigManager

Inherits:
Object show all
Defined in:
lib/ceedling/project_config_manager.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#config_hashObject

Returns the value of attribute config_hash.



7
8
9
# File 'lib/ceedling/project_config_manager.rb', line 7

def config_hash
  @config_hash
end

#options_filesObject (readonly)

Returns the value of attribute options_files.



6
7
8
# File 'lib/ceedling/project_config_manager.rb', line 6

def options_files
  @options_files
end

#release_config_changedObject (readonly)

Returns the value of attribute release_config_changed.



6
7
8
# File 'lib/ceedling/project_config_manager.rb', line 6

def release_config_changed
  @release_config_changed
end

#test_config_changedObject (readonly)

Returns the value of attribute test_config_changed.



6
7
8
# File 'lib/ceedling/project_config_manager.rb', line 6

def test_config_changed
  @test_config_changed
end

#test_defines_changedObject (readonly)

Returns the value of attribute test_defines_changed.



6
7
8
# File 'lib/ceedling/project_config_manager.rb', line 6

def test_defines_changed
  @test_defines_changed
end

Instance Method Details

#filter_internal_sources(sources) ⇒ Object



26
27
28
29
30
31
# File 'lib/ceedling/project_config_manager.rb', line 26

def filter_internal_sources(sources)
  filtered_sources = sources.clone
  filtered_sources.delete_if { |item| item =~ /#{CMOCK_MOCK_PREFIX}.+#{Regexp.escape(EXTENSION_SOURCE)}$/ }
  filtered_sources.delete_if { |item| item =~ /#{VENDORS_FILES.map{|source| '\b' + Regexp.escape(source.ext(EXTENSION_SOURCE)) + '\b'}.join('|')}$/ }
  return filtered_sources
end

#merge_options(config_hash, option_filepath) ⇒ Object



20
21
22
23
# File 'lib/ceedling/project_config_manager.rb', line 20

def merge_options(config_hash, option_filepath)
  @options_files << File.basename( option_filepath )
  config_hash.deep_merge!( @yaml_wrapper.load( option_filepath ) )
end

#process_release_config_changeObject



33
34
35
36
# File 'lib/ceedling/project_config_manager.rb', line 33

def process_release_config_change
  # has project configuration changed since last release build
  @release_config_changed = @cacheinator.diff_cached_release_config?( @config_hash )
end

#process_test_config_changeObject



39
40
41
42
# File 'lib/ceedling/project_config_manager.rb', line 39

def process_test_config_change
  # has project configuration changed since last test build
  @test_config_changed = @cacheinator.diff_cached_test_config?( @config_hash )
end

#process_test_defines_change(files) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/ceedling/project_config_manager.rb', line 44

def process_test_defines_change(files)
  # has definitions changed since last test build
  @test_defines_changed = @cacheinator.diff_cached_test_defines?( files )
  if @test_defines_changed
    # update timestamp for rake task prerequisites
    @file_wrapper.touch( @configurator.project_test_force_rebuild_filepath, :mtime => Time.now + 10 )
  end
end

#setupObject



12
13
14
15
16
17
# File 'lib/ceedling/project_config_manager.rb', line 12

def setup
  @options_files = []
  @release_config_changed = false
  @test_config_changed    = false
  @test_defines_changed   = false
end