moab-versioning 5.0.0 → 5.1.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
2
  SHA256:
3
- metadata.gz: a921589cd50c4c0ae21c1a46321cc48c66fa9ed9c0add1dce9b2d7f3888cf362
4
- data.tar.gz: 2d4e565dcab2a901c618641784fc3d83d65fa23ac47fddcd09352d13386a5faf
3
+ metadata.gz: 6e9810b925a8e475771162b8f367bea2555e1a9e663993040f84256d1897a1bc
4
+ data.tar.gz: b329ea89a3b4ba5705cb63a5201d35125772d2dc872942b0df7cf62fc3c260c6
5
5
  SHA512:
6
- metadata.gz: 0f77277e725f7a3ac543e2d14b06721658c02808067bce87e0e314e7544537d9c20064de4a8febcbe495131655661ae4fa59fcb418dc5d992df00750cd7a5d85
7
- data.tar.gz: 7e223db6e02a215899ebee8a8aa805282dd333c12038cff2431539d50f07d10608b40edb7046e3eedf3b066e66905cd5a4cd521fdab28f8ce2904899db3357bb
6
+ metadata.gz: 399fdfdef956fbec356495e4346b7a4114c921bf84df1f24bb1595795d045c6ef2ad5618b148c53364375ef7178fd99ac1be57a9aac4c9a2e184334387031d57
7
+ data.tar.gz: 29610e9c9a72e57ca5340e5685d6582897bda53f79904bdeccc0bc62f485827eb72eff4afb86ca2258bce47052f56f204c8ec987b94bef55579002fa045caa3c
@@ -100,10 +100,10 @@ module Moab
100
100
  # @param (see #compare)
101
101
  # @return [String] Returns either the common digitial object ID, or a concatenation of both inventory's IDs
102
102
  def common_object_id(basis_inventory, other_inventory)
103
- if basis_inventory.digital_object_id != other_inventory.digital_object_id
104
- "#{basis_inventory.digital_object_id}|#{other_inventory.digital_object_id}"
105
- else
103
+ if basis_inventory.digital_object_id == other_inventory.digital_object_id
106
104
  basis_inventory.digital_object_id.to_s
105
+ else
106
+ "#{basis_inventory.digital_object_id}|#{other_inventory.digital_object_id}"
107
107
  end
108
108
  end
109
109
 
@@ -77,7 +77,7 @@ module Moab
77
77
  def self.from_file(pathname, algos_to_use = active_algos)
78
78
  raise(MoabRuntimeError, 'Unrecognized algorithm requested') unless algos_to_use.all? { |a| KNOWN_ALGOS.include?(a) }
79
79
 
80
- signatures = algos_to_use.map { |k| [k, KNOWN_ALGOS[k].call] }.to_h
80
+ signatures = algos_to_use.to_h { |k| [k, KNOWN_ALGOS[k].call] }
81
81
 
82
82
  pathname.open("r") do |stream|
83
83
  while (buffer = stream.read(8192))
@@ -84,7 +84,7 @@ module Moab
84
84
 
85
85
  def block_count
86
86
  block_size = 1024
87
- entries.inject(0) { |sum, entry| sum + (entry.signature.size.to_i + block_size - 1) / block_size }
87
+ entries.inject(0) { |sum, entry| sum + ((entry.signature.size.to_i + block_size - 1) / block_size) }
88
88
  end
89
89
 
90
90
  # @return [Array<String>] The data fields to include in summary reports
@@ -57,9 +57,10 @@ module Moab
57
57
 
58
58
  # @api external
59
59
  # @param bag_dir [Pathname,String] The location of the bag to be ingested
60
+ # @param use_links [Boolean] If true, use hard links; if false, make copies
60
61
  # @return [void] Ingest a new object version contained in a bag into this objects storage area
61
62
  # @example {include:file:spec/features/storage/ingest_spec.rb}
62
- def ingest_bag(bag_dir = deposit_bag_pathname)
63
+ def ingest_bag(bag_dir = deposit_bag_pathname, use_links: true)
63
64
  bag_dir = Pathname(bag_dir)
64
65
  current_version = StorageObjectVersion.new(self, current_version_id)
65
66
  current_inventory = current_version.file_inventory('version')
@@ -70,7 +71,7 @@ module Moab
70
71
  new_inventory = versionize_bag(bag_dir, current_version, new_version)
71
72
  end
72
73
  validate_new_inventory(new_inventory)
73
- new_version.ingest_bag_data(bag_dir)
74
+ new_version.ingest_bag_data(bag_dir, use_links: use_links)
74
75
  new_version.update_catalog(current_version.signature_catalog, new_inventory)
75
76
  new_version.generate_differences_report(current_inventory, new_inventory)
76
77
  new_version.generate_manifest_inventory
@@ -137,15 +137,16 @@ module Moab
137
137
 
138
138
  # @api internal
139
139
  # @param bag_dir [Pathname,String] The location of the bag to be ingested
140
+ # @param use_links [Boolean] If true, use hard links; if false, make copies
140
141
  # @return [void] Create the version subdirectory and move files into it
141
- def ingest_bag_data(bag_dir)
142
+ def ingest_bag_data(bag_dir, use_links: true)
142
143
  raise(MoabRuntimeError, "Version already exists: #{@version_pathname}") if @version_pathname.exist?
143
144
 
144
145
  @version_pathname.join('manifests').mkpath
145
146
  bag_dir = Pathname(bag_dir)
146
- ingest_dir(bag_dir.join('data'), @version_pathname.join('data'))
147
- ingest_file(bag_dir.join(FileInventory.xml_filename('version')), @version_pathname.join('manifests'))
148
- ingest_file(bag_dir.join(FileInventory.xml_filename('additions')), @version_pathname.join('manifests'))
147
+ ingest_dir(bag_dir.join('data'), @version_pathname.join('data'), use_links)
148
+ ingest_file(bag_dir.join(FileInventory.xml_filename('version')), @version_pathname.join('manifests'), use_links)
149
+ ingest_file(bag_dir.join(FileInventory.xml_filename('additions')), @version_pathname.join('manifests'), use_links)
149
150
  end
150
151
 
151
152
  # @api internal
@@ -286,10 +287,10 @@ module Moab
286
287
  file.instances.each do |instance|
287
288
  relative_path = File.join(group.group_id, instance.path)
288
289
  catalog_entry = signature_catalog.signature_hash[file.signature]
289
- if !catalog_entry.nil?
290
- found += 1
291
- else
290
+ if catalog_entry.nil?
292
291
  missing << relative_path.to_s
292
+ else
293
+ found += 1
293
294
  end
294
295
  end
295
296
  end
data/lib/moab/utc_time.rb CHANGED
@@ -7,9 +7,7 @@ module Moab
7
7
  # @return [void] Convert input datetime to a Time object, or nil if input is empty.
8
8
  def self.input(datetime)
9
9
  case datetime
10
- when nil
11
- nil
12
- when ""
10
+ when nil, ""
13
11
  nil
14
12
  when String
15
13
  Time.parse(datetime)
@@ -66,7 +66,7 @@ module Moab
66
66
  # @param level [Integer] Used to increment the depth of recursion
67
67
  # @return [Hash] The verification result of subentities serialized to a hash
68
68
  def subentities_to_hash(verbose, level)
69
- subentities.map { |s| [s.entity, s.to_hash(verbose, level + 1)] }.to_h
69
+ subentities.to_h { |s| [s.entity, s.to_hash(verbose, level + 1)] }
70
70
  end
71
71
  end
72
72
  end
@@ -157,7 +157,7 @@ module Serializer
157
157
  diff[k] = if left[k].is_a?(Hash) && right[k].is_a?(Hash)
158
158
  deep_diff(ltag, left[k], rtag, right[k])
159
159
  else
160
- Hash.[](ltag, left[k], rtag, right[k])
160
+ { ltag => left[k], rtag => right[k] }
161
161
  end
162
162
  end
163
163
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moab-versioning
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darren Weber
8
8
  - Richard Anderson
9
9
  - Lynn McRae
10
10
  - Hannah Frost
11
- autorequire:
11
+ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-10-19 00:00:00.000000000 Z
14
+ date: 2022-07-07 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: druid-tools
@@ -69,20 +69,6 @@ dependencies:
69
69
  - - ">="
70
70
  - !ruby/object:Gem::Version
71
71
  version: '0'
72
- - !ruby/object:Gem::Dependency
73
- name: coveralls
74
- requirement: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: '0'
79
- type: :development
80
- prerelease: false
81
- version_requirements: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
72
  - !ruby/object:Gem::Dependency
87
73
  name: equivalent-xml
88
74
  requirement: !ruby/object:Gem::Requirement
@@ -167,6 +153,20 @@ dependencies:
167
153
  - - "~>"
168
154
  - !ruby/object:Gem::Version
169
155
  version: '2.1'
156
+ - !ruby/object:Gem::Dependency
157
+ name: simplecov
158
+ requirement: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ type: :development
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
170
170
  description: Contains classes to process digital object version content and metadata
171
171
  email:
172
172
  - darren.weber@stanford.edu
@@ -208,8 +208,9 @@ files:
208
208
  homepage: https://github.com/sul-dlss/moab-versioning
209
209
  licenses:
210
210
  - Apache-2.0
211
- metadata: {}
212
- post_install_message:
211
+ metadata:
212
+ rubygems_mfa_required: 'true'
213
+ post_install_message:
213
214
  rdoc_options: []
214
215
  require_paths:
215
216
  - lib
@@ -217,15 +218,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
217
218
  requirements:
218
219
  - - ">="
219
220
  - !ruby/object:Gem::Version
220
- version: '2.6'
221
+ version: '2.7'
221
222
  required_rubygems_version: !ruby/object:Gem::Requirement
222
223
  requirements:
223
224
  - - ">="
224
225
  - !ruby/object:Gem::Version
225
226
  version: '0'
226
227
  requirements: []
227
- rubygems_version: 3.1.4
228
- signing_key:
228
+ rubygems_version: 3.2.32
229
+ signing_key:
229
230
  specification_version: 4
230
231
  summary: Ruby implementation of digital object versioning toolkit used by the SULAIR
231
232
  Digital Library