class Motion::RevisionCalculator

Attributes

revision_paths[R]

Public Class Methods

new(revision_paths:) click to toggle source
# File lib/motion/revision_calculator.rb, line 10
def initialize(revision_paths:)
  @revision_paths = revision_paths
end

Public Instance Methods

perform() click to toggle source
# File lib/motion/revision_calculator.rb, line 14
def perform
  derive_file_hash
end

Private Instance Methods

derive_file_hash() click to toggle source
# File lib/motion/revision_calculator.rb, line 20
def derive_file_hash
  digest = Digest::MD5.new

  files.each do |file|
    digest << file # include filename as well as contents
    digest << File.read(file)
  end

  digest.hexdigest
end
existent_files(path) click to toggle source
# File lib/motion/revision_calculator.rb, line 40
def existent_files(path)
  Dir["#{path}/**/*", path].reject { |f| File.directory?(f) }.uniq
end
existent_paths() click to toggle source
# File lib/motion/revision_calculator.rb, line 31
def existent_paths
  @existent_paths ||=
    begin
      revision_paths.all_paths.flat_map(&:existent)
    rescue
      raise BadRevisionPathsError
    end
end
files() click to toggle source
# File lib/motion/revision_calculator.rb, line 44
def files
  @files ||= existent_paths.flat_map { |path| existent_files(path) }.sort
end