lib/bagit/manifest.rb in bagit-0.4.3 vs lib/bagit/manifest.rb in bagit-0.4.4

- old
+ new

@@ -1,33 +1,35 @@ -require 'pathname' -require 'digest/sha1' -require 'digest/md5' +# frozen_string_literal: true +require "pathname" +require "digest/sha1" +require "digest/md5" + module BagIt # Requires response to bag_dir, tag_files, bag_files module Manifest def encode_filename(s) - s = s.gsub(/\r/, '%0D') - s = s.gsub(/\n/, '%0A') + s = s.gsub(/\r/, "%0D") + s = s.gsub(/\n/, "%0A") s end # All tag files that are bag manifest files (manifest-[algorithm].txt) def manifest_files - files = Dir[File.join(@bag_dir, '*')].select do |f| + files = Dir[File.join(@bag_dir, "*")].select { |f| File.file?(f) && File.basename(f) =~ /^manifest-.*.txt$/ - end + } files end # A path to a manifest file of the specified algorithm def manifest_file(algo) File.join bag_dir, "manifest-#{algo}.txt" end # Generate manifest files for all the bag files - def manifest!(algo: 'default') + def manifest!(algo: "default") # nuke all the existing manifest files manifest_files.each { |f| FileUtils.rm f } # manifest each tag file for each algorithm bag_files.each do |f| @@ -38,49 +40,49 @@ tagmanifest! end def write_checksum(checksum_algo:, relative_path:, file:) case checksum_algo - when 'sha1' + when "sha1" write_sha1(file, relative_path) - when 'md5' + when "md5" write_md5(file, relative_path) - when 'sha256' + when "sha256" write_sha256(file, relative_path) - when 'sha512' + when "sha512" write_sha256(file, relative_path) - when 'default' + when "default" write_sha1(file, relative_path) write_md5(file, relative_path) end end def write_sha1(f, rel_path) sha1 = Digest::SHA1.file f - File.open(manifest_file(:sha1), 'a') { |io| io.puts "#{sha1} #{rel_path}" } + File.open(manifest_file(:sha1), "a") { |io| io.puts "#{sha1} #{rel_path}" } end def write_md5(f, rel_path) md5 = Digest::MD5.file f - File.open(manifest_file(:md5), 'a') { |io| io.puts "#{md5} #{rel_path}" } + File.open(manifest_file(:md5), "a") { |io| io.puts "#{md5} #{rel_path}" } end def write_sha256(f, rel_path) sha256 = Digest::SHA256.file f - File.open(manifest_file(:sha256), 'a') { |io| io.puts "#{sha256} #{rel_path}" } + File.open(manifest_file(:sha256), "a") { |io| io.puts "#{sha256} #{rel_path}" } end def write_sha512(f, rel_path) sha512 = Digest::SHA512.file f - File.open(manifest_file(:sha512), 'a') { |io| io.puts "#{sha512} #{rel_path}" } + File.open(manifest_file(:sha512), "a") { |io| io.puts "#{sha512} #{rel_path}" } end # All tag files that are bag manifest files (tagmanifest-[algorithm].txt) def tagmanifest_files - files = Dir[File.join(@bag_dir, '*')].select do |f| + files = Dir[File.join(@bag_dir, "*")].select { |f| File.file?(f) && File.basename(f) =~ /^tagmanifest-.*.txt$/ - end + } files end # A path to a tagmanifest file of the specified algorithm def tagmanifest_file(algo) @@ -118,11 +120,11 @@ if !File.exist? f FileUtils.mkdir_p File.dirname(f) # write file if src_path.nil? - File.open(f, 'w') { |io| yield io } + File.open(f, "w") { |io| yield io } else FileUtils.cp src_path, f end # this adds the manifest and bag info files on initial creation # it must only run when the manifest doesn't already exist or it will @@ -135,15 +137,15 @@ data = File.open(f, &:read) rel_path = Pathname.new(f).relative_path_from(Pathname.new(bag_dir)).to_s # sha1 sha1 = Digest::SHA1.hexdigest data - File.open(tagmanifest_file(:sha1), 'a') { |io| io.puts "#{sha1} #{rel_path}" } + File.open(tagmanifest_file(:sha1), "a") { |io| io.puts "#{sha1} #{rel_path}" } # md5 md5 = Digest::MD5.hexdigest data - File.open(tagmanifest_file(:md5), 'a') { |io| io.puts "#{md5} #{rel_path}" } + File.open(tagmanifest_file(:md5), "a") { |io| io.puts "#{md5} #{rel_path}" } tag_files end def remove_tag_file(path) tags = tag_files @@ -171,10 +173,10 @@ Digest::SHA1 when /md5/i Digest::MD5 else :unknown - end + end # check it, an unknown algorithm is always true if algo == :unknown true else