Class: Cbt::Digester
- Inherits:
-
Object
- Object
- Cbt::Digester
- Defined in:
- lib/cbt/digester.rb
Instance Method Summary collapse
-
#add_history(file, digest = nil) ⇒ Object
add file copy history.
-
#changed?(file, digest = nil) ⇒ Boolean
if the digest is different from last time.
- #file_digest(file) ⇒ Object
-
#initialize(store_file) ⇒ Digester
constructor
initialize from the configuration.
-
#known?(file, digest = nil) ⇒ Boolean
if the current digest exists in file store.
-
#last_change(file) ⇒ Object
return ‘datetime’ => ”, ‘digest’ => ” or nil for no store.
Constructor Details
#initialize(store_file) ⇒ Digester
initialize from the configuration
9 10 11 12 |
# File 'lib/cbt/digester.rb', line 9 def initialize store_file @store_file = store_file @store = YAML::Store.new @store_file end |
Instance Method Details
#add_history(file, digest = nil) ⇒ Object
add file copy history
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/cbt/digester.rb', line 20 def add_history file, digest = nil digest = file_digest file unless digest @store.transaction do @store[file] = Array.new unless @store[file] @store[file] << { 'datetime' => DateTime.now.strftime("%F %T"), 'digest' => digest } end end |
#changed?(file, digest = nil) ⇒ Boolean
if the digest is different from last time
39 40 41 42 43 44 |
# File 'lib/cbt/digester.rb', line 39 def changed? file, digest = nil digest = file_digest file unless digest @store.transaction do not (@store[file] and @store[file][-1] and @store[file][-1]['digest'] == digest) end end |
#file_digest(file) ⇒ Object
14 15 16 17 |
# File 'lib/cbt/digester.rb', line 14 def file_digest file return "" unless File.exists? file d = Digest::MD5.hexdigest(File.read(file)) end |
#known?(file, digest = nil) ⇒ Boolean
if the current digest exists in file store
47 48 49 50 51 52 53 54 55 56 |
# File 'lib/cbt/digester.rb', line 47 def known? file, digest = nil digest = file_digest file unless digest @store.transaction do return false unless @store[file] @store[file].each do |h| return true if h['digest'] == digest end end false end |
#last_change(file) ⇒ Object
return ‘datetime’ => ”, ‘digest’ => ” or nil for no store
32 33 34 35 36 |
# File 'lib/cbt/digester.rb', line 32 def last_change file @store.transaction do @store[file][-1] if @store[file] end end |