class Backupsss::Janitor

A class for cleaning up backup artifacts

Attributes

driver[R]
retention_count[R]

Public Class Methods

new(opts) click to toggle source
# File lib/backupsss/janitor.rb, line 8
def initialize(opts)
  @driver          = opts[:driver]
  @retention_count = opts[:retention_count] || 0
end

Public Instance Methods

rm_garbage(file_array) click to toggle source
# File lib/backupsss/janitor.rb, line 19
def rm_garbage(file_array)
  file_array.each { |f| throw_out(f) }
  display_finished
end
sift_trash() click to toggle source
# File lib/backupsss/janitor.rb, line 13
def sift_trash
  trash = find_trash
  vocalize_progress(find_treasures, trash)
  trash
end

Private Instance Methods

display_cleanup(item) click to toggle source
# File lib/backupsss/janitor.rb, line 63
def display_cleanup(item)
  puts "Cleaning up #{item}"
end
display_error(e, item) click to toggle source
# File lib/backupsss/janitor.rb, line 67
def display_error(e, item)
  puts "Could not clean up #{item}: #{e.message}"
end
display_finished() click to toggle source
# File lib/backupsss/janitor.rb, line 59
def display_finished
  puts 'Finished cleaning up.'
end
find_trash() click to toggle source
# File lib/backupsss/janitor.rb, line 30
def find_trash
  driver.ls_rt.drop(retention_count)
end
find_treasures() click to toggle source
# File lib/backupsss/janitor.rb, line 26
def find_treasures
  driver.ls_rt.take(retention_count)
end
tag_treasure(treasures) click to toggle source
# File lib/backupsss/janitor.rb, line 55
def tag_treasure(treasures)
  treasures.collect { |treasure| "#{treasure} (retaining)" }
end
tell_about(array) click to toggle source
# File lib/backupsss/janitor.rb, line 51
def tell_about(array)
  puts array
end
throw_out(item) click to toggle source
# File lib/backupsss/janitor.rb, line 34
def throw_out(item)
  driver.rm(item)
  display_cleanup(item)
rescue Backupsss::RemovalError => e
  display_error(e, item)
end
vocalize_progress(treasure, garbage) click to toggle source
# File lib/backupsss/janitor.rb, line 41
def vocalize_progress(treasure, garbage)
  if garbage.empty?
    puts 'No garbage found'
  else
    puts 'Found garbage...'
    tell_about(tag_treasure(treasure))
    tell_about(garbage)
  end
end