-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdspace.thor
More file actions
66 lines (60 loc) · 4.39 KB
/
dspace.thor
File metadata and controls
66 lines (60 loc) · 4.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
require 'thor'
require File.join(File.dirname(__FILE__), 'lib', 'dspace')
class Dspace < Thor
desc "export_item", "Export an Item in a ZIP-compressed Bag"
option :host, :aliases => "-h", :desc => "host", :default => 'localhost'
option :port, :aliases => "-P", :desc => "port", :default => 5432, :type => :numeric
option :dbname, :aliases => "-d", :desc => "database name", :default => 'dspace'
option :user, :aliases => "-u", :desc => "user", :default => 'dspace'
option :password, :aliases => "-p", :desc => "password", :default => 'secret'
option :assetstore, :aliases => "-a", :desc => "asset store", :required => true
option :item_id, :aliases => "-i", :desc => "item ID", :required => true, :type => :numeric
option :output_dir, :aliases => "-o", :desc => "output file for the Bag", :required => true
option :organization, :aliases => "-O", :desc => "organization for the Item", :default => 'Institution'
option :division, :aliases => "-D", :desc => "division for the Item", :default => 'Institutional Division'
def export_item()
connection = DSpace::Connection.new(host: options[:host], port: options[:port], dbname: options[:dbname],
user: options[:user], password: options[:password], assetstore: options[:assetstore])
item = connection.item(options[:item_id], organization: options[:organization], division: options[:division])
output_path = File.join(options[:output_dir], "#{options[:item_id]}.zip")
item.bag(path: output_path)
end
desc "export_collection", "Export an Item in a ZIP-compressed Bag"
option :host, :aliases => "-h", :desc => "host", :default => 'localhost'
option :port, :aliases => "-P", :desc => "port", :default => 5432, :type => :numeric
option :dbname, :aliases => "-d", :desc => "database name", :default => 'dspace'
option :user, :aliases => "-u", :desc => "user", :default => 'dspace'
option :password, :aliases => "-p", :desc => "password", :default => 'secret'
option :assetstore, :aliases => "-a", :desc => "asset store", :required => true
option :collection_name, :aliases => "-c", :desc => "collection name", :required => true
option :output_dir, :aliases => "-o", :desc => "output file for the Bag", :required => true
option :organization, :aliases => "-O", :desc => "organization for the Collection", :default => 'Institution'
option :division, :aliases => "-D", :desc => "division for the Collection", :default => 'Institutional Division'
def export_collection()
connection = DSpace::Connection.new(host: options[:host], port: options[:port], dbname: options[:dbname],
user: options[:user], password: options[:password], assetstore: options[:assetstore])
connection.items(collection: options[:collection_name], organization: options[:organization], division: options[:division]).each do |item|
output_path = File.join(options[:output_dir], "#{item.id}.zip")
item.bag(path: output_path)
end
end
desc "export_community", "Export an Item in a ZIP-compressed Bag"
option :host, :aliases => "-h", :desc => "host", :default => 'localhost'
option :port, :aliases => "-P", :desc => "port", :default => 5432, :type => :numeric
option :dbname, :aliases => "-d", :desc => "database name", :default => 'dspace'
option :user, :aliases => "-u", :desc => "user", :default => 'dspace'
option :password, :aliases => "-p", :desc => "password", :default => 'secret'
option :assetstore, :aliases => "-a", :desc => "asset store", :required => true
option :community_name, :aliases => "-C", :desc => "community name", :required => true
option :output_dir, :aliases => "-o", :desc => "output file for the Bag", :required => true
option :organization, :aliases => "-O", :desc => "organization for the Community", :default => 'Institution'
option :division, :aliases => "-D", :desc => "division for the Community", :default => 'Institutional Division'
def export_community()
connection = DSpace::Connection.new(host: options[:host], port: options[:port], dbname: options[:dbname],
user: options[:user], password: options[:password], assetstore: options[:assetstore])
connection.items(community: options[:community_name], organization: options[:organization], division: options[:division]).each do |item|
output_path = File.join(options[:output_dir], "#{item.id}.zip")
item.bag(path: output_path)
end
end
end