assembly-utils 1.4.0

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.
@@ -0,0 +1,8 @@
1
+ # Main Assembly namespace
2
+ module Assembly
3
+ # Main Utils class
4
+ class Utils
5
+ # Project version number
6
+ VERSION = "1.4.0"
7
+ end
8
+ end
@@ -0,0 +1,37 @@
1
+ module Assembly
2
+
3
+ # Base PURL URL
4
+ PURL_BASE_URL='http://purl.stanford.edu'
5
+
6
+ # Default content metadata file present at root of each object directory
7
+ CONTENT_MD_FILE='contentMetadata.xml'
8
+
9
+ # Default descriptive metadata file present at root of each object directory
10
+ DESC_MD_FILE='descMetadata.xml'
11
+
12
+ # Default technical metadata file present at root of each object directory
13
+ TECHNICAL_MD_FILE='technicalMetadata.xml'
14
+
15
+ # Defaut DOR workspace directory
16
+ DOR_WORKSPACE='/dor/workspace'
17
+
18
+ # Default assembly directory, can be overwritten by the value set in the project specific YAML configuration
19
+ ASSEMBLY_WORKSPACE='/dor/assembly'
20
+
21
+ # Assembly workflow name
22
+ ASSEMBLY_WF='assemblyWF'
23
+
24
+ # Assembly workflow steps, used for cleanup
25
+ ASSEMBLY_WF_STEPS=[
26
+ [ 'start-assembly', 'completed' ],
27
+ [ 'jp2-create', 'waiting' ],
28
+ [ 'checksum-compute', 'waiting' ],
29
+ [ 'exif-collect', 'waiting' ],
30
+ [ 'accessioning-initiate', 'waiting' ],
31
+ ]
32
+
33
+ end
34
+
35
+ require 'dor-services'
36
+ # auto-include all files in the lib sub-directory directory
37
+ Dir[File.dirname(__FILE__) + '/assembly-utils/*.rb'].each {|file| require file unless file=='version.rb'}
@@ -0,0 +1,31 @@
1
+ TEST_PID='druid:dd999dd9999'
2
+ TEST_PID_FILENAME=TEST_PID.gsub(':','_')
3
+ TEST_APO_OBJECT='druid:nt592gh9590' # this is a real APO object in dor-dev that must exist for the tests to pass
4
+ PATH = File.expand_path(File.dirname(__FILE__))
5
+ TEST_OUTPUT_DIR=File.join(PATH,'test_data','output')
6
+ ENV['ROBOT_ENVIRONMENT']='development'
7
+
8
+ require 'rspec'
9
+
10
+ require "#{PATH}/../config/boot"
11
+ require "#{PATH}/../config/connect_to_dor"
12
+
13
+
14
+ RSpec.configure do |config|
15
+
16
+ end
17
+
18
+ def remove_files(dir)
19
+ Dir.foreach(dir) {|f| fn = File.join(dir, f); File.delete(fn) if !File.directory?(fn) && File.basename(fn) != '.empty'}
20
+ end
21
+
22
+ def load_test_object
23
+ pid = ActiveFedora::FixtureLoader.import_to_fedora("#{PATH}/test_data/#{TEST_PID_FILENAME}.xml")
24
+ end
25
+
26
+ def delete_test_object
27
+ Dor::Config.fedora.client["objects/#{TEST_PID}"].delete
28
+ end
29
+
30
+
31
+
@@ -0,0 +1,98 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <foxml:digitalObject VERSION="1.1" PID="druid:dd999dd9999"
3
+ xmlns:foxml="info:fedora/fedora-system:def/foxml#"
4
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
+ xsi:schemaLocation="info:fedora/fedora-system:def/foxml# http://www.fedora.info/definitions/1/0/foxml1-1.xsd">
6
+ <foxml:objectProperties>
7
+ <foxml:property NAME="info:fedora/fedora-system:def/model#state" VALUE="Active"/>
8
+ <foxml:property NAME="info:fedora/fedora-system:def/model#label" VALUE="Test Object"/>
9
+ <foxml:property NAME="info:fedora/fedora-system:def/model#ownerId" VALUE="fedoraAdmin"/>
10
+ <foxml:property NAME="info:fedora/fedora-system:def/model#createdDate" VALUE="2012-03-14T22:15:32.452Z"/>
11
+ <foxml:property NAME="info:fedora/fedora-system:def/view#lastModifiedDate" VALUE="2012-06-27T22:32:42.643Z"/>
12
+ </foxml:objectProperties>
13
+ <foxml:datastream ID="AUDIT" STATE="A" CONTROL_GROUP="X" VERSIONABLE="false">
14
+ <foxml:datastreamVersion ID="AUDIT.0" LABEL="Audit Trail for this object" CREATED="2012-03-14T22:15:32.452Z" MIMETYPE="text/xml" FORMAT_URI="info:fedora/fedora-system:format/xml.fedora.audit">
15
+ <foxml:xmlContent>
16
+ <audit:auditTrail xmlns:audit="info:fedora/fedora-system:def/audit#">
17
+ <audit:record ID="AUDREC1">
18
+ <audit:process type="Fedora API-M"/>
19
+ <audit:action>addDatastream</audit:action>
20
+ <audit:componentID>workflows</audit:componentID>
21
+ <audit:responsibility>fedoraAdmin</audit:responsibility>
22
+ <audit:date>2012-03-14T22:15:32.595Z</audit:date>
23
+ <audit:justification></audit:justification>
24
+ </audit:record>
25
+ <audit:record ID="AUDREC2">
26
+ <audit:process type="Fedora API-M"/>
27
+ <audit:action>addDatastream</audit:action>
28
+ <audit:componentID>identityMetadata</audit:componentID>
29
+ <audit:responsibility>fedoraAdmin</audit:responsibility>
30
+ <audit:date>2012-03-14T22:15:32.693Z</audit:date>
31
+ <audit:justification></audit:justification>
32
+ </audit:record>
33
+ <audit:record ID="AUDREC3">
34
+ <audit:process type="Fedora API-M"/>
35
+ <audit:action>addDatastream</audit:action>
36
+ <audit:componentID>RELS-EXT</audit:componentID>
37
+ <audit:responsibility>fedoraAdmin</audit:responsibility>
38
+ <audit:date>2012-03-14T22:15:32.807Z</audit:date>
39
+ <audit:justification></audit:justification>
40
+ </audit:record>
41
+ </audit:auditTrail>
42
+ </foxml:xmlContent>
43
+ </foxml:datastreamVersion>
44
+ </foxml:datastream>
45
+ <foxml:datastream ID="DC" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
46
+ <foxml:datastreamVersion ID="DC1.0" LABEL="Dublin Core Record for this object" CREATED="2012-03-14T22:15:32.452Z" MIMETYPE="text/xml" FORMAT_URI="http://www.openarchives.org/OAI/2.0/oai_dc/" SIZE="381">
47
+ <foxml:xmlContent>
48
+ <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
49
+ <dc:title>Test Object</dc:title>
50
+ <dc:identifier>druid:dd999dd9999</dc:identifier>
51
+ </oai_dc:dc>
52
+ </foxml:xmlContent>
53
+ </foxml:datastreamVersion>
54
+ </foxml:datastream>
55
+ <foxml:datastream ID="workflows" STATE="A" CONTROL_GROUP="E" VERSIONABLE="true">
56
+ <foxml:datastreamVersion ID="workflows.0" LABEL="Workflows" CREATED="2012-03-14T22:15:32.595Z" MIMETYPE="application/xml">
57
+ <foxml:contentLocation TYPE="URL" REF="http://lyberservices-dev.stanford.edu/workflow/dor/objects/druid:dd999dd9999/workflows"/>
58
+ </foxml:datastreamVersion>
59
+ </foxml:datastream>
60
+ <foxml:datastream ID="identityMetadata" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
61
+ <foxml:datastreamVersion ID="identityMetadata.0" LABEL="Identity Metadata" CREATED="2012-03-14T22:15:32.693Z" MIMETYPE="text/xml" SIZE="447">
62
+ <foxml:xmlContent>
63
+ <identityMetadata>
64
+ <sourceId source="TEST">testing-assembly-utils-gem</sourceId>
65
+ <objectId>druid:dd999dd9999</objectId>
66
+ <objectCreator>DOR</objectCreator>
67
+ <objectLabel>Test Object</objectLabel>
68
+ <objectType>item</objectType>
69
+ <adminPolicy>druid:qv648vd4392</adminPolicy>
70
+ <agreementId>druid:xf765cv5573</agreementId>
71
+ <otherId name="uuid">368cf6e0-6e23-11e1-8f49-a4b197fffeaa</otherId>
72
+ <tag>Project : TEST</tag>
73
+ </identityMetadata>
74
+ </foxml:xmlContent>
75
+ </foxml:datastreamVersion>
76
+ </foxml:datastream>
77
+ <foxml:datastream ID="RELS-EXT" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
78
+ <foxml:datastreamVersion ID="RELS-EXT.0" LABEL="Fedora Object-to-Object Relationship Metadata" CREATED="2012-03-14T22:15:32.807Z" MIMETYPE="application/rdf+xml" SIZE="721">
79
+ <foxml:xmlContent>
80
+ <rdf:RDF xmlns:fedora="info:fedora/fedora-system:def/relations-external#" xmlns:fedora-model="info:fedora/fedora-system:def/model#" xmlns:hydra="http://projecthydra.org/ns/relations#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
81
+ <rdf:Description rdf:about="info:fedora/druid:dd999dd9999">
82
+ <hydra:isGovernedBy rdf:resource="info:fedora/druid:qv648vd4392"></hydra:isGovernedBy>
83
+ <fedora-model:hasModel rdf:resource="info:fedora/afmodel:Dor_Item"></fedora-model:hasModel>
84
+ <fedora:isMemberOf rdf:resource="info:fedora/druid:nt028fd5773"></fedora:isMemberOf>
85
+ <fedora:isMemberOfCollection rdf:resource="info:fedora/druid:nt028fd5773"></fedora:isMemberOfCollection>
86
+ </rdf:Description>
87
+ </rdf:RDF>
88
+ </foxml:xmlContent>
89
+ </foxml:datastreamVersion>
90
+ </foxml:datastream>
91
+ <foxml:datastream ID="test" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
92
+ <foxml:datastreamVersion ID="test.0" LABEL="test" CREATED="2012-06-27T22:47:04.144Z" MIMETYPE="text/xml" SIZE="18">
93
+ <foxml:xmlContent>
94
+ <test>tag</test>
95
+ </foxml:xmlContent>
96
+ </foxml:datastreamVersion>
97
+ </foxml:datastream>
98
+ </foxml:digitalObject>
@@ -0,0 +1,57 @@
1
+ # A project which uses a manifest for object discovery, one file per object, and where the objects need to be registered.
2
+
3
+ project_style:
4
+ content_structure: 'simple_image'
5
+ should_register: true
6
+ get_druid_from: 'suri'
7
+
8
+ bundle_dir: 'spec/test_data/bundle_input_a'
9
+ staging_dir: 'tmp'
10
+ accession_items: ~
11
+
12
+ manifest: 'manifest.csv'
13
+ checksums_file: 'checksums.txt'
14
+ desc_md_template: 'mods_template.xml'
15
+
16
+ progress_log_file: 'tmp/progress_revs.yaml'
17
+ project_name: 'Revs'
18
+ apo_druid_id: 'druid:qv648vd4392'
19
+ set_druid_id: 'druid:yt502zj0924'
20
+
21
+ validate_files: true
22
+
23
+ publish_attr:
24
+ publish: 'no'
25
+ shelve: 'no'
26
+ preserve: 'yes'
27
+
28
+ compute_checksum: true
29
+ init_assembly_wf: false
30
+
31
+ content_md_creation:
32
+ style: 'default'
33
+ pre_md_file: ~
34
+
35
+ object_discovery:
36
+ use_manifest: true
37
+ glob: ~
38
+ regex: ~
39
+
40
+ stageable_discovery:
41
+ use_container: true
42
+ glob: ~
43
+ regex: ~
44
+
45
+ manifest_cols:
46
+ object_container: 'filename'
47
+ source_id: 'sourceid'
48
+ label: 'label'
49
+
50
+ content_exclusion: ~
51
+
52
+ validate_usage: true
53
+ show_progress: true
54
+ limit_n: 10
55
+ uniqify_source_ids: true
56
+ cleanup: true
57
+ resume: false
@@ -0,0 +1,15 @@
1
+ ---
2
+ :unadjusted_container: /thumpers/dpgthumper2-smpl/SC1017_SOHP/bc006dj2846
3
+ :pre_assem_finished: true
4
+ :pid: druid:bc006dj2846
5
+ :timestamp: Mon Jun 11 15:02:04 -0700 2012
6
+ ---
7
+ :unadjusted_container: /thumpers/dpgthumper2-smpl/SC1017_SOHP/bg598tg6338
8
+ :pre_assem_finished: true
9
+ :pid: druid:bg598tg6338
10
+ :timestamp: Mon Jun 11 15:03:47 -0700 2012
11
+ ---
12
+ :unadjusted_container: /thumpers/dpgthumper2-smpl/SC1017_SOHP/bh634sp8073
13
+ :pre_assem_finished: false
14
+ :pid: druid:bh634sp8073
15
+ :timestamp: Mon Jun 11 15:05:52 -0700 2012
@@ -0,0 +1,118 @@
1
+ require 'spec_helper'
2
+
3
+ describe Assembly::Utils do
4
+
5
+ it "should compute the correct staging path given a druid" do
6
+ path=Assembly::Utils.get_staging_path('aa000aa0001')
7
+ path.should == 'aa/000/aa/0001'
8
+ end
9
+
10
+ it "should compute the correct staging path given a druid and a pre-pend path" do
11
+ path=Assembly::Utils.get_staging_path('aa000aa0001','/tmp')
12
+ path.should == '/tmp/aa/000/aa/0001'
13
+ end
14
+
15
+ it "should symbolize hash keys correctly" do
16
+ result=Assembly::Utils.symbolize_keys({'foo'=>'bar','ppuff'=>'doofus'})
17
+ result.should == {:foo=>'bar',:ppuff=>'doofus'}
18
+ end
19
+
20
+ it "should symbolize hash values correctly" do
21
+ result=Assembly::Utils.values_to_symbols!({'foo'=>'bar','ppuff'=>'doofus'})
22
+ result.should == {'foo'=>:bar,'ppuff'=>:doofus}
23
+ end
24
+
25
+ it "should return a blank string if a file is not found to read in" do
26
+ bogus_filename='crap/dude'
27
+ Assembly::Utils.read_file(bogus_filename).should == ''
28
+ end
29
+
30
+ it "should return a string with the file content if the file is found" do
31
+ progress_filename='spec/test_data/test_log.yaml'
32
+ Assembly::Utils.read_file(progress_filename).should =~ /:pid: druid:bg598tg6338/
33
+ end
34
+
35
+ it "should read in a list of completed druids from a progress log file" do
36
+ progress_filename='spec/test_data/test_log.yaml'
37
+ druids=Assembly::Utils.get_druids_from_log(progress_filename)
38
+ druids.should == ['druid:bc006dj2846','druid:bg598tg6338']
39
+ end
40
+
41
+ it "should read in a list of failed druids from a progress log file" do
42
+ progress_filename='spec/test_data/test_log.yaml'
43
+ druids=Assembly::Utils.get_druids_from_log(progress_filename,false)
44
+ druids.should == ['druid:bh634sp8073']
45
+ end
46
+
47
+ it "should read in a YAML configuration file and turn it into a hash" do
48
+ config_filename='spec/test_data/local_dev_revs.yaml'
49
+ config=Assembly::Utils.load_config(config_filename)
50
+ config['progress_log_file'].should == 'tmp/progress_revs.yaml'
51
+ end
52
+
53
+ ###################################################################################
54
+ # NOTE: All the tests below depend on being able to connect successfully to DOR Dev
55
+ describe "dor-only-tests" do
56
+
57
+ before(:all) do
58
+ delete_test_object rescue nil
59
+ load_test_object
60
+ end
61
+
62
+ after(:all) do
63
+ remove_files(TEST_OUTPUT_DIR)
64
+ delete_test_object
65
+ end
66
+
67
+ it "should find druids by source ID" do
68
+ Dor::SearchService.should_receive(:query_by_id).with('testing-assembly-utils-gem').and_return TEST_PID
69
+ druids=Assembly::Utils.get_druids_by_sourceid(['testing-assembly-utils-gem'])
70
+ druids.should == [TEST_PID]
71
+ end
72
+
73
+ it "should replace the datastream of an object" do
74
+ new_content="<xml><tag>stuff</tag></xml>"
75
+ datastream="test"
76
+ druids=[TEST_PID]
77
+ Assembly::Utils.replace_datastreams(druids,datastream,new_content)
78
+ obj = Dor::Item.find(TEST_PID)
79
+ obj.datastreams[datastream].content.should =~ /<tag>stuff<\/tag>/
80
+ end
81
+
82
+ it "should search and replace the datastream of an object" do
83
+ find_content="stuff"
84
+ replace_content="new"
85
+ datastream="test"
86
+ druids=[TEST_PID]
87
+ Assembly::Utils.update_datastreams(druids,datastream,find_content,replace_content)
88
+ obj = Dor::Item.find(TEST_PID)
89
+ obj.datastreams[datastream].content.should =~ /<tag>new<\/tag>/
90
+ end
91
+
92
+ it "should export a PID to FOXML" do
93
+ File.exists?(File.join(TEST_OUTPUT_DIR,"#{TEST_PID_FILENAME}.foxml.xml")).should be false
94
+ Dir.mkdir(TEST_OUTPUT_DIR) unless Dir.exists?(TEST_OUTPUT_DIR)
95
+ Assembly::Utils.export_objects(TEST_PID,TEST_OUTPUT_DIR)
96
+ File.exists?(File.join(TEST_OUTPUT_DIR,"#{TEST_PID_FILENAME}.foxml.xml")).should be true
97
+ end
98
+
99
+ it "should return nil when the workflow state is not found in an object" do
100
+ Assembly::Utils.get_workflow_status(TEST_PID,'assemblyWF','jp2-create').should be_nil
101
+ end
102
+
103
+ # it "should indicate if the specified workflow is defined in an APO object" do
104
+ # Assembly::Utils.apo_workflow_defined?(TEST_APO_OBJECT,'accessionWF').should be true
105
+ # Assembly::Utils.apo_workflow_defined?(TEST_APO_OBJECT,'accessioning').should be true
106
+ # end
107
+ #
108
+ # it "should indicate if the specified workflow is not defined in an APO object" do
109
+ # Assembly::Utils.apo_workflow_defined?(TEST_APO_OBJECT,'crapsticks').should be false
110
+ # end
111
+
112
+ it "should indicate if the specified object is not an APO" do
113
+ lambda{Assembly::Utils.apo_workflow_defined?(TEST_PID,'crapsticks')}.should raise_error
114
+ end
115
+
116
+ end
117
+
118
+ end
metadata ADDED
@@ -0,0 +1,238 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: assembly-utils
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.4.0
5
+ platform: ruby
6
+ authors:
7
+ - Peter Mangiafico
8
+ - Monty Hindman
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-07-29 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: csv-mapper
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: fastercsv
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: druid-tools
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 0.2.6
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 0.2.6
70
+ - !ruby/object:Gem::Dependency
71
+ name: dor-services
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 3.25.1
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 3.25.1
84
+ - !ruby/object:Gem::Dependency
85
+ name: lyber-core
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: dor-workflow-service
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 1.3.1
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: 1.3.1
112
+ - !ruby/object:Gem::Dependency
113
+ name: activesupport
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: activeresource
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :runtime
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: rake
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: rspec
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "~>"
159
+ - !ruby/object:Gem::Version
160
+ version: '2.6'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - "~>"
166
+ - !ruby/object:Gem::Version
167
+ version: '2.6'
168
+ - !ruby/object:Gem::Dependency
169
+ name: yard
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ description: Contains classes to manipulate DOR objects for assembly and accessioning
183
+ email:
184
+ - pmangiafico@stanford.edu
185
+ executables:
186
+ - console
187
+ - run_all_tests
188
+ extensions: []
189
+ extra_rdoc_files: []
190
+ files:
191
+ - ".gitignore"
192
+ - ".rvmrc.example"
193
+ - Gemfile
194
+ - README.rdoc
195
+ - Rakefile
196
+ - assembly-utils.gemspec
197
+ - bin/console
198
+ - bin/run_all_tests
199
+ - config/boot.rb
200
+ - config/connect_to_dor.rb
201
+ - lib/assembly-utils.rb
202
+ - lib/assembly-utils/utils.rb
203
+ - lib/assembly-utils/version.rb
204
+ - spec/spec_helper.rb
205
+ - spec/test_data/druid_dd999dd9999.xml
206
+ - spec/test_data/local_dev_revs.yaml
207
+ - spec/test_data/test_log.yaml
208
+ - spec/utils_spec.rb
209
+ homepage: ''
210
+ licenses: []
211
+ metadata: {}
212
+ post_install_message:
213
+ rdoc_options: []
214
+ require_paths:
215
+ - lib
216
+ required_ruby_version: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ required_rubygems_version: !ruby/object:Gem::Requirement
222
+ requirements:
223
+ - - ">="
224
+ - !ruby/object:Gem::Version
225
+ version: '0'
226
+ requirements: []
227
+ rubyforge_project: assembly-utils
228
+ rubygems_version: 2.2.2
229
+ signing_key:
230
+ specification_version: 4
231
+ summary: Ruby gem of methods usesful for assembly and accessioning.
232
+ test_files:
233
+ - spec/spec_helper.rb
234
+ - spec/test_data/druid_dd999dd9999.xml
235
+ - spec/test_data/local_dev_revs.yaml
236
+ - spec/test_data/test_log.yaml
237
+ - spec/utils_spec.rb
238
+ has_rdoc: