Skip to content

Commit 3971ed8

Browse files
committed
adds a simplistic script for publishing a list of works
1 parent bfff515 commit 3971ed8

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ group :development do
2020
gem 'debride'
2121
gem 'fasterer'
2222
gem 'rubocop'
23+
gem 'rdebug'
24+
gem 'ruby-debug-ide'
2325
end
2426

2527
group :test do

util/publishWorks.rb

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# frozen_string_literal: true
2+
require 'rubygems'
3+
require 'json'
4+
require 'optparse'
5+
require 'fileutils'
6+
require 'date'
7+
require 'logging'
8+
require_relative '../lib/loggable'
9+
require_relative '../lib/hydra_endpoint'
10+
require 'yaml'
11+
CONFIG = File.open(File.join(File.dirname(__FILE__), '../.config.yml')) { |f| YAML.safe_load(f) }
12+
13+
include Loggable
14+
15+
Logging.logger.root.level = :debug
16+
@logger = Logging.logger[self]
17+
Logging.logger.root.add_appenders(Logging.appenders.stdout(
18+
'stdout_brief_bright',
19+
layout: Loggable.stdout_brief_bright,
20+
level: :info
21+
))
22+
@logger = Logging.logger[self]
23+
24+
started_at = DateTime.now
25+
26+
options = {}
27+
ARGV << '-h' if ARGV.empty?
28+
29+
OptionParser.new do |opts|
30+
opts.banner = 'Usage: batchProcess.rb [options]'
31+
32+
opts.on('-j', '--json PATH', 'The full path to the json export from SOLR for works to publish. Expects JSON fields "response { docs [{id, has_model_ssim, workflow_state_name_ssim},...]}"') { |v| options['json'] = v }
33+
opts.on('-h', '--help', 'Display this screen') do
34+
puts opts
35+
exit
36+
end
37+
end.parse!
38+
39+
raise 'Missing an argument. Try again.' if options['json'].nil?
40+
41+
file = File.read(options['json'])
42+
data = JSON.parse(file)
43+
works = data.dig('response', 'docs')
44+
45+
server = HydraEndpoint::Server.new(CONFIG['hydra_endpoint'], CONFIG, started_at)
46+
works.each do |work|
47+
id = work.dig('id')
48+
model = work.dig('has_model_ssim').first
49+
state = work.dig('workflow_state_name_ssim').first
50+
@logger.info("Processing #{model} with id:#{id} from #{state}")
51+
server.advance_workflow(HydraEndpoint::Server::Response.new('id' => id))
52+
end
53+
54+
puts 'Publishing works complete.'

0 commit comments

Comments
 (0)