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