Sha256: c50fa2c9c82579120cdb0c634aa296a98fba3f78bee3de6af8102201f379b26c

Contents?: true

Size: 1.39 KB

Versions: 2

Compression:

Stored size: 1.39 KB

Contents

# =========================================================================
#   Ceedling - Test-Centered Build System for C
#   ThrowTheSwitch.org
#   Copyright (c) 2010-25 Mike Karlesky, Mark VanderVoord, & Greg Williams
#   SPDX-License-Identifier: MIT
# =========================================================================

class CacheinatorHelper

  constructor :file_wrapper, :yaml_wrapper
  
  def diff_cached_config?(cached_filepath, hash)
    return false if ( not @file_wrapper.exist?(cached_filepath) )
    return true if (@yaml_wrapper.load(cached_filepath) != hash)
    return false
  end

  def diff_cached_defines?(cached_filepath, files)
    changed_defines = false
    current_defines = COLLECTION_DEFINES_TEST_AND_VENDOR.reject(&:empty?)

    current_dependencies = Hash[files.collect { |source| [source, current_defines.dup] }]
    if not @file_wrapper.exist?(cached_filepath)
      @yaml_wrapper.dump(cached_filepath, current_dependencies)
      return changed_defines
    end

    dependencies = @yaml_wrapper.load(cached_filepath)
    common_dependencies = current_dependencies.select { |file, defines| dependencies.has_key?(file) }

    if dependencies.values_at(*common_dependencies.keys) != common_dependencies.values
      changed_defines = true
    end

    dependencies.merge!(current_dependencies)
    @yaml_wrapper.dump(cached_filepath, dependencies)

    return changed_defines
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ceedling-1.0.1 lib/ceedling/cacheinator_helper.rb
ceedling-1.0.0 lib/ceedling/cacheinator_helper.rb