moab-versioning 6.0.0 → 6.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/moab/bagger.rb +1 -8
- data/lib/moab/config.rb +2 -2
- data/lib/moab/file_group.rb +23 -17
- data/lib/moab/file_group_difference.rb +9 -9
- data/lib/moab/file_group_difference_subset.rb +1 -1
- data/lib/moab/file_instance_difference.rb +2 -2
- data/lib/moab/file_inventory.rb +4 -4
- data/lib/moab/file_inventory_difference.rb +3 -3
- data/lib/moab/file_signature.rb +15 -14
- data/lib/moab/signature_catalog.rb +4 -4
- data/lib/moab/signature_catalog_entry.rb +1 -1
- data/lib/moab/verification_result.rb +1 -1
- data/lib/moab/version_metadata_entry.rb +1 -1
- data/lib/stanford/content_inventory.rb +1 -1
- data/lib/stanford/storage_services.rb +4 -0
- metadata +7 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fb403abc29dd5b88bd2a34f29717876e846ebf9cf90bc2129534794c499e472
|
4
|
+
data.tar.gz: ef320be8188580b0502e343b86bd0f39213e29aa53f8eeb25b0aa722b3273ace
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 381b7705b914b10714249571e0eca3ac4ac67496b3ee15995dc7c58dbbbfe92085c6b4bd17b386424c6d75889e4f3313b90a55fa20ea5293f733106d4ae1f510
|
7
|
+
data.tar.gz: f845dab613e3addc79f5b9e34270a40174b95fbe6435dc0013cedfeb1ad6bebcf3390c9f5077d1063a58e3281b0a2330f68ba9d8a63a9624f8c0b55e4b86a379
|
data/lib/moab/bagger.rb
CHANGED
@@ -67,14 +67,7 @@ module Moab
|
|
67
67
|
# @return [NilClass] Delete the bagit files
|
68
68
|
def delete_bag
|
69
69
|
# make sure this looks like a bag before deleting
|
70
|
-
if bag_pathname.join('bagit.txt').exist?
|
71
|
-
if bag_pathname.join('data').exist?
|
72
|
-
bag_pathname.rmtree
|
73
|
-
else
|
74
|
-
bag_pathname.children.each(&:delete)
|
75
|
-
bag_pathname.rmdir
|
76
|
-
end
|
77
|
-
end
|
70
|
+
bag_pathname.rmtree if bag_pathname.join('bagit.txt').exist?
|
78
71
|
nil
|
79
72
|
end
|
80
73
|
|
data/lib/moab/config.rb
CHANGED
data/lib/moab/file_group.rb
CHANGED
@@ -38,7 +38,7 @@ module Moab
|
|
38
38
|
|
39
39
|
# @attribute
|
40
40
|
# @return [Integer] The total number of data files (dynamically calculated)
|
41
|
-
attribute :file_count, Integer, tag: 'fileCount', on_save: proc
|
41
|
+
attribute :file_count, Integer, tag: 'fileCount', on_save: proc(&:to_s)
|
42
42
|
|
43
43
|
def file_count
|
44
44
|
files.inject(0) { |sum, manifestation| sum + manifestation.file_count }
|
@@ -46,7 +46,7 @@ module Moab
|
|
46
46
|
|
47
47
|
# @attribute
|
48
48
|
# @return [Integer] The total size (in bytes) of all data files (dynamically calculated)
|
49
|
-
attribute :byte_count, Integer, tag: 'byteCount', on_save: proc
|
49
|
+
attribute :byte_count, Integer, tag: 'byteCount', on_save: proc(&:to_s)
|
50
50
|
|
51
51
|
def byte_count
|
52
52
|
files.inject(0) { |sum, manifestation| sum + manifestation.byte_count }
|
@@ -54,7 +54,7 @@ module Moab
|
|
54
54
|
|
55
55
|
# @attribute
|
56
56
|
# @return [Integer] The total disk usage (in 1 kB blocks) of all data files (estimating du -k result) (dynamically calculated)
|
57
|
-
attribute :block_count, Integer, tag: 'blockCount', on_save: proc
|
57
|
+
attribute :block_count, Integer, tag: 'blockCount', on_save: proc(&:to_s)
|
58
58
|
|
59
59
|
def block_count
|
60
60
|
files.inject(0) { |sum, manifestation| sum + manifestation.block_count }
|
@@ -97,16 +97,23 @@ module Moab
|
|
97
97
|
|
98
98
|
# @api internal
|
99
99
|
# @param signature_subset [Array<FileSignature>] The signatures used to select the entries to return
|
100
|
-
# @return [Hash<String,FileSignature>] A pathname,signature hash containing a subset of the filenames in this file
|
100
|
+
# @return [Hash<String,FileSignature>] A pathname,signature hash containing a subset of the filenames in this file
|
101
|
+
# group, e.g., {"intro-1.jpg"=>#<Moab::FileSignature>, ...}
|
101
102
|
def path_hash_subset(signature_subset)
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
103
|
+
# the structure of the `signature_hash` attr is documented above
|
104
|
+
signature_hash
|
105
|
+
.filter_map do |signature, manifestation|
|
106
|
+
# filters out signatures not in the provided subset
|
107
|
+
next unless signature_subset.include?(signature)
|
108
|
+
|
109
|
+
# for each instance in the manifestation, return an array of its path and the signature from the above block
|
110
|
+
manifestation.instances.map { |instance| [instance.path, signature] }
|
108
111
|
end
|
109
|
-
|
112
|
+
# the nested map operations above return e.g.: [[["intro-1.jpg",
|
113
|
+
# #<Moab::FileSignature>],...]] which needs to be flattened one time to
|
114
|
+
# convert back into a hash
|
115
|
+
.flatten(1)
|
116
|
+
.to_h
|
110
117
|
end
|
111
118
|
|
112
119
|
# @param manifestiation_array [Array<FileManifestation>] The collection of {FileManifestation} objects
|
@@ -133,12 +140,11 @@ module Moab
|
|
133
140
|
# @return [void] Add a single {FileSignature},{FileInstance} key/value pair to this group.
|
134
141
|
# Data is actually stored in the {#signature_hash}
|
135
142
|
def add_file_instance(signature, instance)
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
signature_hash[signature] = manifestation
|
143
|
+
manifestation = signature_hash[signature] || begin
|
144
|
+
FileManifestation.new.tap do |file_manifestation|
|
145
|
+
file_manifestation.signature = signature
|
146
|
+
signature_hash[signature] = file_manifestation
|
147
|
+
end
|
142
148
|
end
|
143
149
|
manifestation.instances << instance
|
144
150
|
end
|
@@ -64,7 +64,7 @@ module Moab
|
|
64
64
|
# @attribute
|
65
65
|
# @return [Integer] the total number of differences found between the two inventories that were
|
66
66
|
# compared (dynamically calculated)
|
67
|
-
attribute :difference_count, Integer, tag: 'differenceCount', on_save: proc
|
67
|
+
attribute :difference_count, Integer, tag: 'differenceCount', on_save: proc(&:to_s)
|
68
68
|
|
69
69
|
def difference_count
|
70
70
|
count = 0
|
@@ -76,49 +76,49 @@ module Moab
|
|
76
76
|
|
77
77
|
# @attribute
|
78
78
|
# @return [Integer] How many files were unchanged
|
79
|
-
attribute :identical, Integer, on_save: proc
|
79
|
+
attribute :identical, Integer, on_save: proc(&:to_s)
|
80
80
|
def identical
|
81
81
|
subset_hash[:identical].count
|
82
82
|
end
|
83
83
|
|
84
84
|
# @attribute
|
85
85
|
# @return [Integer] How many duplicate copies of files were added
|
86
|
-
attribute :copyadded, Integer, on_save: proc
|
86
|
+
attribute :copyadded, Integer, on_save: proc(&:to_s)
|
87
87
|
def copyadded
|
88
88
|
subset_hash[:copyadded].count
|
89
89
|
end
|
90
90
|
|
91
91
|
# @attribute
|
92
92
|
# @return [Integer] How many duplicate copies of files were deleted
|
93
|
-
attribute :copydeleted, Integer, on_save: proc
|
93
|
+
attribute :copydeleted, Integer, on_save: proc(&:to_s)
|
94
94
|
def copydeleted
|
95
95
|
subset_hash[:copydeleted].count
|
96
96
|
end
|
97
97
|
|
98
98
|
# @attribute
|
99
99
|
# @return [Integer] How many files were renamed
|
100
|
-
attribute :renamed, Integer, on_save: proc
|
100
|
+
attribute :renamed, Integer, on_save: proc(&:to_s)
|
101
101
|
def renamed
|
102
102
|
subset_hash[:renamed].count
|
103
103
|
end
|
104
104
|
|
105
105
|
# @attribute
|
106
106
|
# @return [Integer] How many files were modified
|
107
|
-
attribute :modified, Integer, on_save: proc
|
107
|
+
attribute :modified, Integer, on_save: proc(&:to_s)
|
108
108
|
def modified
|
109
109
|
subset_hash[:modified].count
|
110
110
|
end
|
111
111
|
|
112
112
|
# @attribute
|
113
113
|
# @return [Integer] How many files were added
|
114
|
-
attribute :added, Integer, on_save: proc
|
114
|
+
attribute :added, Integer, on_save: proc(&:to_s)
|
115
115
|
def added
|
116
116
|
subset_hash[:added].count
|
117
117
|
end
|
118
118
|
|
119
119
|
# @attribute
|
120
120
|
# @return [Integer] How many files were deleted
|
121
|
-
attribute :deleted, Integer, on_save: proc
|
121
|
+
attribute :deleted, Integer, on_save: proc(&:to_s)
|
122
122
|
def deleted
|
123
123
|
subset_hash[:deleted].count
|
124
124
|
end
|
@@ -256,7 +256,7 @@ module Moab
|
|
256
256
|
basis_only_paths = basis_paths - other_paths
|
257
257
|
other_only_paths = other_paths - basis_paths
|
258
258
|
maxsize = [basis_only_paths.size, other_only_paths.size].max
|
259
|
-
(0..maxsize - 1).each do |n|
|
259
|
+
(0..maxsize - 1).each do |n| # rubocop:disable Lint/AmbiguousRange
|
260
260
|
fid = FileInstanceDifference.new
|
261
261
|
fid.basis_path = basis_only_paths[n]
|
262
262
|
fid.other_path = other_only_paths[n]
|
@@ -38,11 +38,11 @@ module Moab
|
|
38
38
|
|
39
39
|
# @attribute
|
40
40
|
# @return [String] The file's path in the basis inventory (usually for an old version)
|
41
|
-
attribute :basis_path, String, tag: 'basisPath', on_save: proc
|
41
|
+
attribute :basis_path, String, tag: 'basisPath', on_save: proc(&:to_s)
|
42
42
|
|
43
43
|
# @attribute
|
44
44
|
# @return [String] The file's path in the other inventory (usually for an new version) compared against the basis
|
45
|
-
attribute :other_path, String, tag: 'otherPath', on_save: proc
|
45
|
+
attribute :other_path, String, tag: 'otherPath', on_save: proc(&:to_s)
|
46
46
|
|
47
47
|
# @attribute
|
48
48
|
# @return [Array<FileSignature>] The fixity data of the file manifestation(s) (plural if change was a content modification)
|
data/lib/moab/file_inventory.rb
CHANGED
@@ -50,7 +50,7 @@ module Moab
|
|
50
50
|
|
51
51
|
# @attribute
|
52
52
|
# @return [Integer] The ordinal version number
|
53
|
-
attribute :version_id, Integer, tag: 'versionId', key: true, on_save: proc
|
53
|
+
attribute :version_id, Integer, tag: 'versionId', key: true, on_save: proc(&:to_s)
|
54
54
|
|
55
55
|
# @return [String] The unique identifier concatenating digital object id with version id
|
56
56
|
def composite_key
|
@@ -71,7 +71,7 @@ module Moab
|
|
71
71
|
|
72
72
|
# @attribute
|
73
73
|
# @return [Integer] The total number of data files in the inventory (dynamically calculated)
|
74
|
-
attribute :file_count, Integer, tag: 'fileCount', on_save: proc
|
74
|
+
attribute :file_count, Integer, tag: 'fileCount', on_save: proc(&:to_s)
|
75
75
|
|
76
76
|
def file_count
|
77
77
|
groups.inject(0) { |sum, group| sum + group.file_count }
|
@@ -79,7 +79,7 @@ module Moab
|
|
79
79
|
|
80
80
|
# @attribute
|
81
81
|
# @return [Integer] The total size (in bytes) in all files of all files in the inventory (dynamically calculated)
|
82
|
-
attribute :byte_count, Integer, tag: 'byteCount', on_save: proc
|
82
|
+
attribute :byte_count, Integer, tag: 'byteCount', on_save: proc(&:to_s)
|
83
83
|
|
84
84
|
def byte_count
|
85
85
|
groups.inject(0) { |sum, group| sum + group.byte_count }
|
@@ -87,7 +87,7 @@ module Moab
|
|
87
87
|
|
88
88
|
# @attribute
|
89
89
|
# @return [Integer] The total disk usage (in 1 kB blocks) of all data files (estimating du -k result) (dynamically calculated)
|
90
|
-
attribute :block_count, Integer, tag: 'blockCount', on_save: proc
|
90
|
+
attribute :block_count, Integer, tag: 'blockCount', on_save: proc(&:to_s)
|
91
91
|
|
92
92
|
def block_count
|
93
93
|
groups.inject(0) { |sum, group| sum + group.block_count }
|
@@ -34,7 +34,7 @@ module Moab
|
|
34
34
|
|
35
35
|
# @attribute
|
36
36
|
# @return [Integer] the number of differences found between the two inventories that were compared (dynamically calculated)
|
37
|
-
attribute :difference_count, Integer, tag: 'differenceCount', on_save: proc
|
37
|
+
attribute :difference_count, Integer, tag: 'differenceCount', on_save: proc(&:to_s)
|
38
38
|
|
39
39
|
def difference_count
|
40
40
|
@group_differences.inject(0) { |sum, group| sum + group.difference_count }
|
@@ -87,11 +87,11 @@ module Moab
|
|
87
87
|
@report_datetime = Time.now
|
88
88
|
# get a union list of all group_ids present in either inventory
|
89
89
|
group_ids = basis_inventory.group_ids | other_inventory.group_ids
|
90
|
-
group_ids.
|
90
|
+
@group_differences = group_ids.map do |group_id|
|
91
91
|
# get a pair of groups to compare, creating a empty group if not present in the inventory
|
92
92
|
basis_group = basis_inventory.group(group_id) || FileGroup.new(group_id: group_id)
|
93
93
|
other_group = other_inventory.group(group_id) || FileGroup.new(group_id: group_id)
|
94
|
-
|
94
|
+
FileGroupDifference.new.compare_file_groups(basis_group, other_group)
|
95
95
|
end
|
96
96
|
self
|
97
97
|
end
|
data/lib/moab/file_signature.rb
CHANGED
@@ -45,20 +45,20 @@ module Moab
|
|
45
45
|
tag 'fileSignature'
|
46
46
|
|
47
47
|
# @attribute
|
48
|
-
# @return [
|
49
|
-
attribute :size, Integer, on_save: proc
|
48
|
+
# @return [String] The size of the file in bytes (can be empty)
|
49
|
+
attribute :size, Integer, on_save: proc(&:to_s)
|
50
50
|
|
51
51
|
# @attribute
|
52
|
-
# @return [String] The MD5 checksum value of the file
|
53
|
-
attribute :md5, String, on_save: proc
|
52
|
+
# @return [String] The MD5 checksum value of the file (can be empty)
|
53
|
+
attribute :md5, String, on_save: proc(&:to_s)
|
54
54
|
|
55
55
|
# @attribute
|
56
|
-
# @return [String] The SHA1 checksum value of the file
|
57
|
-
attribute :sha1, String, on_save: proc
|
56
|
+
# @return [String] The SHA1 checksum value of the file (can be empty)
|
57
|
+
attribute :sha1, String, on_save: proc(&:to_s)
|
58
58
|
|
59
59
|
# @attribute
|
60
|
-
# @return [String] The SHA256 checksum value of the file
|
61
|
-
attribute :sha256, String, on_save: proc
|
60
|
+
# @return [String] The SHA256 checksum value of the file (can be empty)
|
61
|
+
attribute :sha256, String, on_save: proc(&:to_s)
|
62
62
|
|
63
63
|
KNOWN_ALGOS = {
|
64
64
|
md5: proc { Digest::MD5.new },
|
@@ -106,11 +106,11 @@ module Moab
|
|
106
106
|
|
107
107
|
# @return [Hash<Symbol,String>] A hash of the checksum data
|
108
108
|
def checksums
|
109
|
-
{
|
110
|
-
md5
|
111
|
-
sha1
|
112
|
-
sha256
|
113
|
-
|
109
|
+
@checksums ||= {}.tap do |checksum_hash|
|
110
|
+
checksum_hash[:md5] = md5 unless md5.to_s.empty?
|
111
|
+
checksum_hash[:sha1] = sha1 unless sha1.to_s.empty?
|
112
|
+
checksum_hash[:sha256] = sha256 unless sha256.to_s.empty?
|
113
|
+
end
|
114
114
|
end
|
115
115
|
|
116
116
|
# @return [Boolean] The signature contains all of the 3 desired checksums
|
@@ -128,7 +128,6 @@ module Moab
|
|
128
128
|
# @param other [FileSignature] The other file signature being compared to this signature
|
129
129
|
# @return [Boolean] Returns true if self and other have comparable fixity data.
|
130
130
|
def eql?(other)
|
131
|
-
return false unless other.respond_to?(:size) && other.respond_to?(:checksums)
|
132
131
|
return false if size.to_i != other.size.to_i
|
133
132
|
|
134
133
|
self_checksums = checksums
|
@@ -140,6 +139,8 @@ module Moab
|
|
140
139
|
return false if self_checksums[key] != other_checksums[key]
|
141
140
|
end
|
142
141
|
true
|
142
|
+
rescue NoMethodError
|
143
|
+
false
|
143
144
|
end
|
144
145
|
|
145
146
|
# @api internal
|
@@ -43,7 +43,7 @@ module Moab
|
|
43
43
|
|
44
44
|
# @attribute
|
45
45
|
# @return [Integer] The ordinal version number
|
46
|
-
attribute :version_id, Integer, tag: 'versionId', key: true, on_save: proc
|
46
|
+
attribute :version_id, Integer, tag: 'versionId', key: true, on_save: proc(&:to_s)
|
47
47
|
|
48
48
|
# @return [String] The unique identifier concatenating digital object id with version id
|
49
49
|
def composite_key
|
@@ -64,7 +64,7 @@ module Moab
|
|
64
64
|
|
65
65
|
# @attribute
|
66
66
|
# @return [Integer] The total number of data files (dynamically calculated)
|
67
|
-
attribute :file_count, Integer, tag: 'fileCount', on_save: proc
|
67
|
+
attribute :file_count, Integer, tag: 'fileCount', on_save: proc(&:to_s)
|
68
68
|
|
69
69
|
def file_count
|
70
70
|
entries.size
|
@@ -72,7 +72,7 @@ module Moab
|
|
72
72
|
|
73
73
|
# @attribute
|
74
74
|
# @return [Integer] The total size (in bytes) of all data files (dynamically calculated)
|
75
|
-
attribute :byte_count, Integer, tag: 'byteCount', on_save: proc
|
75
|
+
attribute :byte_count, Integer, tag: 'byteCount', on_save: proc(&:to_s)
|
76
76
|
|
77
77
|
def byte_count
|
78
78
|
entries.inject(0) { |sum, entry| sum + entry.signature.size.to_i }
|
@@ -80,7 +80,7 @@ module Moab
|
|
80
80
|
|
81
81
|
# @attribute
|
82
82
|
# @return [Integer] The total disk usage (in 1 kB blocks) of all data files (estimating du -k result) (dynamically calculated)
|
83
|
-
attribute :block_count, Integer, tag: 'blockCount', on_save: proc
|
83
|
+
attribute :block_count, Integer, tag: 'blockCount', on_save: proc(&:to_s)
|
84
84
|
|
85
85
|
def block_count
|
86
86
|
block_size = 1024
|
@@ -25,7 +25,7 @@ module Moab
|
|
25
25
|
|
26
26
|
# @attribute
|
27
27
|
# @return [Integer] The ordinal version number
|
28
|
-
attribute :version_id, Integer, tag: 'originalVersion', key: true, on_save: proc
|
28
|
+
attribute :version_id, Integer, tag: 'originalVersion', key: true, on_save: proc(&:to_s)
|
29
29
|
|
30
30
|
# @attribute
|
31
31
|
# @return [String] The name of the file group
|
@@ -31,7 +31,7 @@ module Moab
|
|
31
31
|
# @return [VerificationResult] The result of comparing the expected and found values
|
32
32
|
def self.verify_value(entity, expected, found)
|
33
33
|
details = { 'expected' => expected, 'found' => found }
|
34
|
-
new(entity, (expected == found), details)
|
34
|
+
new(entity, (expected == found), details) # rubocop:disable Style/RedundantParentheses
|
35
35
|
end
|
36
36
|
|
37
37
|
# @deprecated Just use the constructor
|
@@ -24,7 +24,7 @@ module Moab
|
|
24
24
|
|
25
25
|
# @attribute
|
26
26
|
# @return [Integer] The object version number (A sequential integer)
|
27
|
-
attribute :version_id, Integer, tag: 'versionId', key: true, on_save: proc
|
27
|
+
attribute :version_id, Integer, tag: 'versionId', key: true, on_save: proc(&:to_s)
|
28
28
|
|
29
29
|
# @attribute
|
30
30
|
# @return [String] "an external version label that increments the most significant digit for major revisions,
|
@@ -124,7 +124,7 @@ module Stanford
|
|
124
124
|
cm.to_xml
|
125
125
|
end
|
126
126
|
|
127
|
-
# @param content_metadata [String,Nokogiri::XML::Document] The contentMetadata as a string or XML doc
|
127
|
+
# @param content_metadata [String, Nokogiri::XML::Document] The contentMetadata as a string or XML doc
|
128
128
|
# @return [Boolean] True if contentMetadata has essential file attributes, else raise exception
|
129
129
|
def validate_content_metadata(content_metadata)
|
130
130
|
result = validate_content_metadata_details(content_metadata)
|
@@ -19,6 +19,10 @@ module Stanford
|
|
19
19
|
@@repository
|
20
20
|
end
|
21
21
|
|
22
|
+
# NOTE: `ShelvingService.content_diff` in dor-services-app implements similar logic, but in a way that
|
23
|
+
# uses XML retrieved via preservation-client instead of reading the XML from disk. This allows DSA to
|
24
|
+
# perform the potentially time expensive diff without requiring access to preservation disk mounts.
|
25
|
+
# See https://github.com/sul-dlss/dor-services-app/pull/4492 and https://github.com/sul-dlss/dor-services-app/issues/4359
|
22
26
|
# @param new_content_metadata [String] The content metadata to be compared to the base
|
23
27
|
# @param object_id [String] The digital object identifier of the object whose version inventory is the basis of the
|
24
28
|
# comparison
|
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: 6.
|
4
|
+
version: 6.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naomi Dushay
|
@@ -9,10 +9,9 @@ authors:
|
|
9
9
|
- Tony Zanella
|
10
10
|
- Mike Giarlo
|
11
11
|
- John Martin
|
12
|
-
autorequire:
|
13
12
|
bindir: bin
|
14
13
|
cert_chain: []
|
15
|
-
date:
|
14
|
+
date: 2025-07-09 00:00:00.000000000 Z
|
16
15
|
dependencies:
|
17
16
|
- !ruby/object:Gem::Dependency
|
18
17
|
name: druid-tools
|
@@ -144,16 +143,16 @@ dependencies:
|
|
144
143
|
name: rubocop-rspec
|
145
144
|
requirement: !ruby/object:Gem::Requirement
|
146
145
|
requirements:
|
147
|
-
- - "
|
146
|
+
- - ">="
|
148
147
|
- !ruby/object:Gem::Version
|
149
|
-
version: '
|
148
|
+
version: '0'
|
150
149
|
type: :development
|
151
150
|
prerelease: false
|
152
151
|
version_requirements: !ruby/object:Gem::Requirement
|
153
152
|
requirements:
|
154
|
-
- - "
|
153
|
+
- - ">="
|
155
154
|
- !ruby/object:Gem::Version
|
156
|
-
version: '
|
155
|
+
version: '0'
|
157
156
|
- !ruby/object:Gem::Dependency
|
158
157
|
name: simplecov
|
159
158
|
requirement: !ruby/object:Gem::Requirement
|
@@ -215,7 +214,6 @@ licenses:
|
|
215
214
|
- Apache-2.0
|
216
215
|
metadata:
|
217
216
|
rubygems_mfa_required: 'true'
|
218
|
-
post_install_message:
|
219
217
|
rdoc_options: []
|
220
218
|
require_paths:
|
221
219
|
- lib
|
@@ -230,8 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
230
228
|
- !ruby/object:Gem::Version
|
231
229
|
version: '0'
|
232
230
|
requirements: []
|
233
|
-
rubygems_version: 3.2
|
234
|
-
signing_key:
|
231
|
+
rubygems_version: 3.6.2
|
235
232
|
specification_version: 4
|
236
233
|
summary: Ruby implementation of digital object versioning toolkit used by Stanford
|
237
234
|
University Libraries
|