Class: Synqa::HashCommand

Inherits:
Object
  • Object
show all
Defined in:
lib/synqa.rb

Overview

A command to be executed on the remote system which calculates a hash value for a file (of a given length), in the format: hexadecimal-hash a-fixed-number-of-characters file-name

Direct Known Subclasses

Sha256Command, Sha256SumCommand

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(command, length, spacerLen) ⇒ HashCommand

Returns a new instance of HashCommand.



47
48
49
50
51
# File 'lib/synqa.rb', line 47

def initialize(command, length, spacerLen)
  @command = command
  @length = length
  @spacerLen = spacerLen
end

Instance Attribute Details

#commandObject (readonly)

The command - a string or array of strings e.g. “sha256sum” or [“sha256”, “-r”]



39
40
41
# File 'lib/synqa.rb', line 39

def command
  @command
end

#lengthObject (readonly)

The length of the calculated hash value e.g. 64 for sha256



42
43
44
# File 'lib/synqa.rb', line 42

def length
  @length
end

#spacerLenObject (readonly)

The number of characters between the hash value and the file name (usually 1 or 2)



45
46
47
# File 'lib/synqa.rb', line 45

def spacerLen
  @spacerLen
end

Instance Method Details

#parseFileHashLine(baseDir, fileHashLine) ⇒ Object

Parse a hash line relative to a base directory, returning a RelativePathWithHash



54
55
56
57
58
59
60
61
62
# File 'lib/synqa.rb', line 54

def parseFileHashLine(baseDir, fileHashLine)
  hash = fileHashLine[0...length]
  fullPath = fileHashLine[(length + spacerLen)..-1]
  if fullPath.start_with?(baseDir)
    return RelativePathWithHash.new(fullPath[baseDir.length..-1], hash)
  else
    raise "File #{fullPath} from hash line is not in base dir #{baseDir}"
  end
end

#to_sObject



64
65
66
# File 'lib/synqa.rb', line 64

def to_s
  return command.join(" ")
end