moab-versioning 4.2.2 → 4.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 26d64bba0aa593e619713fb761078c032df8e1cc
4
- data.tar.gz: 91b9bbd3842691aabbc4a9f003347fceeea949f4
2
+ SHA256:
3
+ metadata.gz: dd9a6b4c49a9ab93e011a23004c0c21b74878ff7dc46c29b022c56b83627c3bb
4
+ data.tar.gz: 065bb99748c0e06d5f3fafebc9b75552e1585709e170d27b27a5f14cb7b1db85
5
5
  SHA512:
6
- metadata.gz: 94c2ec711d1135684611e517f994658c1358ea01b0687e46c454772476c72b9090250045a79adfb0bc5a8fe0e02988951fbce939eb9891d77956a46c67562cfc
7
- data.tar.gz: e69e5ee8da7091da76bf6dba56856411da26b683ec5ae897f7c6a6811f5af9e8700a9306e4cd5f75bf20de5e92f0b35b7f87a47753d03fdedaad947f85619e70
6
+ metadata.gz: 2efdbe79de69d26b41de7de0052ade6e3c8cf1a8651e6e05d093b889cb0de0ac47061663951bef33082012719b3f5774ff37ced11ef210a8f7a67cfbc7bbb7b2
7
+ data.tar.gz: cd9518df71844ea61f4b036d08d51e2c86456c28492404265b8bd68d8510db1556ac359abd3ae95736011431ebab6bbe4a804530875e060b278dd54a9e57aff5
@@ -259,7 +259,7 @@ module Moab
259
259
  rescue
260
260
  shell_execute(tar_cmd.sub('--force-local', ''))
261
261
  end
262
- raise "Unable to create tarfile #{tar_pathname}" unless tar_pathname.exist?
262
+ raise(MoabRuntimeError, "Unable to create tarfile #{tar_pathname}") unless tar_pathname.exist?
263
263
  true
264
264
  end
265
265
 
@@ -274,11 +274,11 @@ module Moab
274
274
  else
275
275
  msg = "Shell command failed: [#{command}] caused by <STDERR = #{stderr}>"
276
276
  msg << " STDOUT = #{stdout}" if stdout && stdout.length.positive?
277
- raise(StandardError, msg)
277
+ raise(MoabStandardError, msg)
278
278
  end
279
279
  rescue SystemCallError => e
280
280
  msg = "Shell command failed: [#{command}] caused by #{e.inspect}"
281
- raise(StandardError, msg)
281
+ raise(MoabStandardError, msg)
282
282
  end
283
283
  end
284
284
  end
@@ -1,13 +1,9 @@
1
1
  module Moab
2
- class ObjectNotFoundException < RuntimeError
3
- end
2
+ class MoabRuntimeError < RuntimeError; end
3
+ class MoabStandardError < StandardError; end
4
4
 
5
- class FileNotFoundException < RuntimeError
6
- end
7
-
8
- class InvalidMetadataException < RuntimeError
9
- end
10
-
11
- class ValidationException < RuntimeError
12
- end
5
+ class FileNotFoundException < MoabRuntimeError; end
6
+ class InvalidMetadataException < MoabRuntimeError; end
7
+ class InvalidSuriSyntaxError < MoabRuntimeError; end
8
+ class ObjectNotFoundException < MoabRuntimeError; end
13
9
  end
@@ -160,10 +160,10 @@ module Moab
160
160
  # @param pathname [Pathname] The file path to be tested
161
161
  # @return [Boolean] Test whether the given path is contained within the {#base_directory}
162
162
  def is_descendent_of_base?(pathname)
163
- raise("base_directory has not been set") if @base_directory.nil?
163
+ raise(MoabRuntimeError, "base_directory has not been set") if @base_directory.nil?
164
164
  is_descendent = false
165
165
  pathname.expand_path.ascend { |ancestor| is_descendent ||= (ancestor == @base_directory) }
166
- raise("#{pathname} is not a descendent of #{@base_directory}") unless is_descendent
166
+ raise(MoabRuntimeError, "#{pathname} is not a descendent of #{@base_directory}") unless is_descendent
167
167
  is_descendent
168
168
  end
169
169
 
@@ -73,7 +73,7 @@ module Moab
73
73
  # @param [Array<Symbol>] one or more keys of KNOWN_ALGOS to be computed
74
74
  # @return [Moab::FileSignature] object populated with (requested) checksums
75
75
  def self.from_file(pathname, algos_to_use = active_algos)
76
- raise 'Unrecognized algorithm requested' unless algos_to_use.all? { |a| KNOWN_ALGOS.include?(a) }
76
+ raise(MoabRuntimeError, 'Unrecognized algorithm requested') unless algos_to_use.all? { |a| KNOWN_ALGOS.include?(a) }
77
77
 
78
78
  signatures = algos_to_use.map { |k| [k, KNOWN_ALGOS[k].call] }.to_h
79
79
 
@@ -178,7 +178,7 @@ module Moab
178
178
  return sig_from_file if eql?(sig_from_file)
179
179
  # The full signature from file is consistent with current values, or...
180
180
  # One or more of the fixity values is inconsistent, so raise an exception
181
- raise "Signature inconsistent between inventory and file for #{pathname}: #{diff(sig_from_file).inspect}"
181
+ raise(MoabRuntimeError, "Signature inconsistent between inventory and file for #{pathname}: #{diff(sig_from_file).inspect}")
182
182
  end
183
183
 
184
184
  # @return [Hash<Symbol,String>] Key is type (e.g. :sha1), value is checksum names (e.g. ['SHA-1', 'SHA1'])
@@ -128,7 +128,7 @@ module Moab
128
128
  def normalize_group_signatures(group, group_pathname = nil)
129
129
  unless group_pathname.nil?
130
130
  group_pathname = Pathname(group_pathname)
131
- raise "Could not locate #{group_pathname}" unless group_pathname.exist?
131
+ raise(MoabRuntimeError, "Could not locate #{group_pathname}") unless group_pathname.exist?
132
132
  end
133
133
  group.files.each do |file|
134
134
  unless file.signature.complete?
@@ -161,7 +161,7 @@ module Moab
161
161
  # @return [Boolean] Tests whether the new version number is one higher than the current version number
162
162
  def validate_new_inventory(version_inventory)
163
163
  if version_inventory.version_id != (current_version_id + 1)
164
- raise "version mismatch - current: #{current_version_id} new: #{version_inventory.version_id}"
164
+ raise(MoabRuntimeError, "version mismatch - current: #{current_version_id} new: #{version_inventory.version_id}")
165
165
  end
166
166
  true
167
167
  end
@@ -177,7 +177,7 @@ module Moab
177
177
  when 1..current
178
178
  StorageObjectVersion.new(self, version_id)
179
179
  else
180
- raise "Version ID #{version_id} does not exist"
180
+ raise(MoabRuntimeError, "Version ID #{version_id} does not exist")
181
181
  end
182
182
  end
183
183
 
@@ -187,7 +187,7 @@ module Moab
187
187
  # * Version 0 is a special case used to generate empty manifests
188
188
  # * Current version + 1 is used for creation of a new version
189
189
  def storage_object_version(version_id)
190
- raise "Version ID not specified" unless version_id
190
+ raise(MoabRuntimeError, "Version ID not specified") unless version_id
191
191
  StorageObjectVersion.new(self, version_id)
192
192
  end
193
193
 
@@ -33,7 +33,7 @@ module Moab
33
33
  elsif version_id.is_a?(String) && version_id =~ /^v(\d+)$/
34
34
  @version_id = version_id.sub(/^v/, '').to_i
35
35
  else
36
- raise "version_id (#{version_id}) is not in a recognized format"
36
+ raise(MoabRuntimeError, "version_id (#{version_id}) is not in a recognized format")
37
37
  end
38
38
  @version_name = StorageObject.version_dirname(@version_id)
39
39
  @version_pathname = storage_object.object_pathname.join(@version_name)
@@ -135,7 +135,7 @@ module Moab
135
135
  # @param bag_dir [Pathname,String] The location of the bag to be ingested
136
136
  # @return [void] Create the version subdirectory and move files into it
137
137
  def ingest_bag_data(bag_dir)
138
- raise "Version already exists: #{@version_pathname}" if @version_pathname.exist?
138
+ raise(MoabRuntimeError, "Version already exists: #{@version_pathname}") if @version_pathname.exist?
139
139
  @version_pathname.join('manifests').mkpath
140
140
  bag_dir = Pathname(bag_dir)
141
141
  ingest_dir(bag_dir.join('data'), @version_pathname.join('data'))
@@ -149,7 +149,7 @@ module Moab
149
149
  # @param use_links [Boolean] If true, use hard links; if false, make copies
150
150
  # @return [void] recursively link or copy the source directory contents to the target directory
151
151
  def ingest_dir(source_dir, target_dir, use_links = true)
152
- raise "cannot copy - target already exists: #{target_dir.expand_path}" if target_dir.exist?
152
+ raise(MoabRuntimeError, "cannot copy - target already exists: #{target_dir.expand_path}") if target_dir.exist?
153
153
  target_dir.mkpath
154
154
  source_dir.children.each do |child|
155
155
  if child.directory?
@@ -18,10 +18,10 @@ module Moab
18
18
  # @return [Array<Pathname>] The list of filesystem root paths in which objects are stored
19
19
  def storage_roots
20
20
  unless defined?(@storage_roots)
21
- raise "Moab::Config.storage_roots not found in config file" if Moab::Config.storage_roots.nil?
21
+ raise(MoabRuntimeError, "Moab::Config.storage_roots not found in config file") if Moab::Config.storage_roots.nil?
22
22
  @storage_roots = [Moab::Config.storage_roots].flatten.collect { |filesystem| Pathname(filesystem) }
23
- raise "Moab::Config.storage_roots empty" if @storage_roots.empty?
24
- @storage_roots.each { |root| raise "Storage root #{root} not found on system" unless root.exist? }
23
+ raise(MoabRuntimeError, "Moab::Config.storage_roots empty") if @storage_roots.empty?
24
+ @storage_roots.each { |root| raise(MoabRuntimeError, "Storage root #{root} not found on system") unless root.exist? }
25
25
  end
26
26
  @storage_roots
27
27
  end
@@ -29,7 +29,7 @@ module Moab
29
29
  # @return [String] The trunk segment of the object storage path
30
30
  def storage_trunk
31
31
  unless defined?(@storage_trunk)
32
- raise "Moab::Config.storage_trunk not found in config file" if Moab::Config.storage_trunk.nil?
32
+ raise(MoabRuntimeError, "Moab::Config.storage_trunk not found in config file") if Moab::Config.storage_trunk.nil?
33
33
  @storage_trunk = Moab::Config.storage_trunk
34
34
  end
35
35
  @storage_trunk
@@ -70,7 +70,7 @@ module Moab
70
70
  branch = storage_branch(object_id)
71
71
  storage_roots.each do |root|
72
72
  root_trunk = root.join(storage_trunk)
73
- raise "Storage area not found at #{root_trunk}" unless root_trunk.exist?
73
+ raise(MoabRuntimeError, "Storage area not found at #{root_trunk}") unless root_trunk.exist?
74
74
  root_trunk_branch = root_trunk.join(branch)
75
75
  return root if root_trunk_branch.exist?
76
76
  end
@@ -79,7 +79,7 @@ module Moab
79
79
  branch = deposit_branch(object_id)
80
80
  storage_roots.each do |root|
81
81
  root_trunk = root.join(deposit_trunk)
82
- raise "Deposit area not found at #{root_trunk}" unless root_trunk.exist?
82
+ raise(MoabRuntimeError, "Deposit area not found at #{root_trunk}") unless root_trunk.exist?
83
83
  root_trunk_branch = root_trunk.join(branch)
84
84
  return root if root_trunk_branch.exist?
85
85
  end
@@ -117,7 +117,7 @@ module Moab
117
117
  def storage_object(object_id, create = false)
118
118
  storage_object = find_storage_object(object_id)
119
119
  unless storage_object.object_pathname.exist?
120
- raise Moab::ObjectNotFoundException, "No storage object found for #{object_id}" unless create
120
+ raise ObjectNotFoundException, "No storage object found for #{object_id}" unless create
121
121
  storage_object.object_pathname.mkpath
122
122
  end
123
123
  storage_object
@@ -14,7 +14,7 @@ module Moab
14
14
  when Time
15
15
  datetime
16
16
  else
17
- raise "unknown time format #{datetime.inspect}"
17
+ raise(MoabRuntimeError, "unknown time format #{datetime.inspect}")
18
18
  end
19
19
  end
20
20
 
@@ -29,7 +29,7 @@ module Moab
29
29
  when Time
30
30
  datetime.utc.iso8601
31
31
  else
32
- raise "unknown time format #{datetime.inspect}"
32
+ raise(MoabRuntimeError, "unknown time format #{datetime.inspect}")
33
33
  end
34
34
  end
35
35
  end
@@ -19,7 +19,8 @@ module Serializer
19
19
  # The symbols should correspond to attributes declared using HappyMapper syntax
20
20
  def initialize(opts = {})
21
21
  opts.each do |key, value|
22
- raise "#{key} is not a variable name in #{self.class.name}" unless variable_names.include?(key.to_s) || key == :test
22
+ errmsg = "#{key} is not a variable name in #{self.class.name}"
23
+ raise(Moab::MoabRuntimeError, errmsg) unless variable_names.include?(key.to_s) || key == :test
23
24
  instance_variable_set("@#{key}", value)
24
25
  end
25
26
  end
@@ -115,7 +116,7 @@ module Serializer
115
116
  # @param other [Serializable] The other object being compared
116
117
  # @return [Hash] Generate a hash containing the differences between two objects of the same type
117
118
  def diff(other)
118
- raise "Cannot compare different classes" if self.class != other.class
119
+ raise(Moab::MoabRuntimeError, "Cannot compare different classes") if self.class != other.class
119
120
  left = other.to_hash
120
121
  right = to_hash
121
122
  if key.nil? || other.key.nil?
@@ -45,7 +45,7 @@ module Stanford
45
45
  when 'all'
46
46
  ng_doc.xpath("//file")
47
47
  else
48
- raise "Unknown disposition subset (#{subset})"
48
+ raise(Moab::MoabRuntimeError, "Unknown disposition subset (#{subset})")
49
49
  end
50
50
  content_group = Moab::FileGroup.new(:group_id => 'content', :data_source => "contentMetadata-#{subset}")
51
51
  nodeset.each do |file_node|
@@ -198,7 +198,7 @@ module Stanford
198
198
  if file_size.nil? || file_size.empty?
199
199
  file_node['size'] = signature.size.to_s
200
200
  elsif file_size != signature.size.to_s
201
- raise "Inconsistent size for #{file_node['id']}: #{file_size} != #{signature.size}"
201
+ raise(Moab::MoabRuntimeError, "Inconsistent size for #{file_node['id']}: #{file_size} != #{signature.size}")
202
202
  end
203
203
  end
204
204
 
@@ -228,7 +228,7 @@ module Stanford
228
228
  if cm_checksum.nil? || cm_checksum.empty?
229
229
  checksum_node.content = sig_checksum
230
230
  elsif cm_checksum != sig_checksum
231
- raise "Inconsistent #{type} for #{file_node['id']}: #{cm_checksum} != #{sig_checksum}"
231
+ raise(Moab::MoabRuntimeError, "Inconsistent #{type} for #{file_node['id']}: #{cm_checksum} != #{sig_checksum}")
232
232
  end
233
233
  end
234
234
  end
@@ -31,10 +31,10 @@ module Stanford
31
31
  def druid_tree(object_id)
32
32
  # Note: this seems an odd place to do druid validation, but leaving it here for now
33
33
  syntax_msg = "Identifier has invalid suri syntax: #{object_id}"
34
- raise syntax_msg + " nil or empty" if object_id.to_s.empty?
34
+ raise(Moab::InvalidSuriSyntaxError, syntax_msg + " nil or empty") if object_id.to_s.empty?
35
35
  identifier = object_id.split(':')[-1]
36
- raise syntax_msg if identifier.to_s.empty?
37
- raise syntax_msg unless DruidTools::Druid.valid?(identifier, true)
36
+ raise(Moab::InvalidSuriSyntaxError, syntax_msg) if identifier.to_s.empty?
37
+ raise(Moab::InvalidSuriSyntaxError, syntax_msg) unless DruidTools::Druid.valid?(identifier, true)
38
38
  DruidTools::Druid.new(identifier, true).tree.join(File::SEPARATOR)
39
39
  end
40
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moab-versioning
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.2
4
+ version: 4.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darren Weber
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2018-05-30 00:00:00.000000000 Z
14
+ date: 2019-11-15 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: confstruct
@@ -244,8 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
244
244
  - !ruby/object:Gem::Version
245
245
  version: '0'
246
246
  requirements: []
247
- rubyforge_project:
248
- rubygems_version: 2.6.13
247
+ rubygems_version: 3.0.3
249
248
  signing_key:
250
249
  specification_version: 4
251
250
  summary: Ruby implementation of digital object versioning toolkit used by the SULAIR