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.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/.rvmrc.example +1 -0
- data/Gemfile +4 -0
- data/README.rdoc +51 -0
- data/Rakefile +8 -0
- data/assembly-utils.gemspec +36 -0
- data/bin/console +9 -0
- data/bin/run_all_tests +3 -0
- data/config/boot.rb +13 -0
- data/config/connect_to_dor.rb +6 -0
- data/lib/assembly-utils/utils.rb +817 -0
- data/lib/assembly-utils/version.rb +8 -0
- data/lib/assembly-utils.rb +37 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/test_data/druid_dd999dd9999.xml +98 -0
- data/spec/test_data/local_dev_revs.yaml +57 -0
- data/spec/test_data/test_log.yaml +15 -0
- data/spec/utils_spec.rb +118 -0
- metadata +238 -0
@@ -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'}
|
data/spec/spec_helper.rb
ADDED
@@ -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
|
data/spec/utils_spec.rb
ADDED
@@ -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:
|