class KPM::Sha1Checker
def self.from_file(sha1_file, logger=nil)
def self.from_file(sha1_file, logger=nil) Sha1Checker.new(sha1_file, logger) end
def add_or_modify_entry!(coordinates, remote_sha1)
def add_or_modify_entry!(coordinates, remote_sha1) @sha1_config['sha1'][coordinates] = remote_sha1 save! end
def all_sha1()
def all_sha1() @sha1_config['sha1'] end
def create_sha1_directory_if_missing
def create_sha1_directory_if_missing sha1_dir = Pathname(@sha1_file).dirname if ! File.directory?(sha1_dir) Dir.mkdir(sha1_dir) end end
def init!
def init! if !File.exists?(@sha1_file) create_sha1_directory_if_missing init_config = {} init_config['sha1'] = {} File.open(@sha1_file, 'w') do |file| file.write(init_config.to_yaml) end end reload! end
def initialize(sha1_file, logger=nil)
def initialize(sha1_file, logger=nil) @sha1_file = sha1_file init! if logger.nil? @logger = Logger.new(STDOUT) @logger.level = Logger::INFO else @logger = logger end end
def reload!
def reload! @sha1_config = YAML::load_file(@sha1_file) end
def remove_entry!(coordinates)
def remove_entry!(coordinates) @sha1_config['sha1'].delete(coordinates) save! end
def save!
def save! Dir.mktmpdir do |tmp_destination_dir| tmp_file = File.join(tmp_destination_dir, File.basename(@sha1_file)) File.open(tmp_file, 'w') do |file| file.write(@sha1_config.to_yaml) end FileUtils.copy(tmp_file, @sha1_file) end reload! end
def sha1(coordinates)
def sha1(coordinates) @sha1_config['sha1'][coordinates] end