class Blockbuster::Comparator

Data store for files, sources, states, and checksums

Constants

CONTENT
SOURCE

Attributes

configuration[R]
current_delta_files[R]
deleted[R]
edited[R]
inventory[R]

Public Class Methods

new(configuration) click to toggle source
# File lib/blockbuster/comparator.rb, line 12
def initialize(configuration)
  @configuration       = configuration
  @inventory           = {}
  @edited              = []
  @current_delta_files = []
  @deleted             = []
end

Public Instance Methods

add(key, value, source) click to toggle source
# File lib/blockbuster/comparator.rb, line 20
def add(key, value, source)
  inventory[key] = { CONTENT => value, SOURCE => source }
end
any_deleted?() click to toggle source
# File lib/blockbuster/comparator.rb, line 78
def any_deleted?
  if configuration.deltas_disabled? && !@deleted.empty?
    silent_puts "Cassettes deleted: #{@deleted}"
    return true
  elsif configuration.deltas_enabled? && !(current_delta_files & @deleted).empty?
    silent_puts "Cassettes deleted: #{@deleted}"
    return true
  end

  false
end
compare(key, new_digest) click to toggle source
# File lib/blockbuster/comparator.rb, line 47
def compare(key, new_digest)
  digest = inventory[key]

  if digest.nil?
    silent_puts "New cassette: #{key}"
    return true
  elsif digest[CONTENT] != new_digest
    silent_puts "Cassette changed: #{key}"
    return true
  end
end
delete(key) click to toggle source
# File lib/blockbuster/comparator.rb, line 24
def delete(key)
  inventory.delete(key)
end
edited?(file) click to toggle source
# File lib/blockbuster/comparator.rb, line 36
def edited?(file)
  (edited + current_delta_files).include?(file)
end
keys() click to toggle source
# File lib/blockbuster/comparator.rb, line 28
def keys
  inventory.keys
end
present?() click to toggle source
# File lib/blockbuster/comparator.rb, line 32
def present?
  !keys.empty?
end
rewind?(files) click to toggle source
# File lib/blockbuster/comparator.rb, line 59
def rewind?(files) # rubocop:disable Metrics/AbcSize
  base_files = []

  files.each do |file|
    next unless File.file?(file)

    key = configuration.key_from_path(file)
    base_files << key

    edited << key if compare(key, file_digest(file))
  end

  @deleted = keys - base_files

  return true if any_deleted?

  !edited.empty?
end
store_current_delta_files() click to toggle source
# File lib/blockbuster/comparator.rb, line 40
def store_current_delta_files
  inventory.each do |k, v|
    scrubbed = Blockbuster::Delta.file_name_without_timestamp(v[SOURCE])
    current_delta_files << k if scrubbed == configuration.current_delta_name
  end
end