bin/accession.rb in geohydra-0.3.1 vs bin/accession.rb in geohydra-0.3.3

- old
+ new

@@ -5,105 +5,115 @@ require 'optparse' require 'druid-tools' VERSION = '0.3' -# __MAIN__ -begin - File.umask(002) - flags = { - :admin_policy => 'druid:gz830zp4734', - :rights => 'stanford', - :tags => [ - "Registered By : #{%x{whoami}.strip} (GeoHydra)" - ], - :tmpdir => GeoHydra::Config.geohydra.tmpdir || 'tmp', - :verbose => false, - :configtest => false, - :purge => false, - :accessionWF => false, - :contentMetadata => true, - :debug => false, - :shelve => false, - :workspacedir => GeoHydra::Config.geohydra.workspace || 'workspace' - } +class Accession < GeoHydra::Process + def run(args) + begin + File.umask(002) + flags = { + :admin_policy => 'druid:gz830zp4734', + :rights => 'stanford', + :tags => [ + "Registered By : #{%x{whoami}.strip} (GeoHydra)" + ], + :tmpdir => GeoHydra::Config.geohydra.tmpdir || 'tmp', + :verbose => false, + :configtest => false, + :purge => false, + :accessionWF => false, + :contentMetadata => true, + :debug => false, + :shelve => false, + :dryrun => false, + :workspacedir => GeoHydra::Config.geohydra.workspace || 'workspace' + } - OptionParser.new do |opts| - opts.version = VERSION - opts.banner = <<EOM -Usage: #{File.basename(__FILE__)} [options] [druid [druid...]] - #{File.basename(__FILE__)} [options] < druids + OptionParser.new do |opts| + opts.version = VERSION + opts.banner = <<EOM + Usage: #{File.basename(__FILE__)} [options] [druid [druid...]] + #{File.basename(__FILE__)} [options] < druids EOM - opts.on('--apo DRUID', 'APO for collection to accession' + (flags[:admin_policy] ? " (default: #{flags[:admin_policy]})" : '')) do |druid| - flags[:admin_policy] = DruidTools::Druid.new(druid).druid - end - opts.on('--collection DRUID', 'Collection for accession' + (flags[:collection] ? " (default: #{flags[:collection]})" : '')) do |druid| - flags[:collection] = DruidTools::Druid.new(druid).druid - end - opts.on('--purge', 'Purge items before accessioning') do |b| - flags[:purge] = true - end - opts.on('--accessionWF', 'Kick off the accessionWF workflow') do |b| - flags[:accessionWF] = true - end - opts.on('--rights KEYWORD', "Rights keyword (default: #{flags[:rights]})") do |keyword| - flags[:rights] = keyword - end - opts.on('--tag TAG', 'Tag for each object - multiple tags allowed') do |tag| - flags[:tags] << tag - end - opts.on('--test', 'Verify configuration then exit') do - flags[:configtest] = true - end - opts.on('--tmpdir DIR', "Temporary directory for assembly (default: #{flags[:tmpdir]})") do |d| - flags[:tmpdir] = d - end - opts.on('-v', '--verbose', 'Run verbosely, use multiple times for debug level output') do - flags[:debug] = true if flags[:verbose] # -vv - flags[:verbose] = true - end - opts.on('--workspace DIR', "Workspace directory for assembly (default: #{flags[:workspacedir]})") do |d| - flags[:workspacedir] = d - end - end.parse! + opts.on('--apo DRUID', 'APO for collection to accession' + (flags[:admin_policy] ? " (default: #{flags[:admin_policy]})" : '')) do |druid| + flags[:admin_policy] = DruidTools::Druid.new(druid).druid + end + opts.on('--collection DRUID', 'Collection for accession' + (flags[:collection] ? " (default: #{flags[:collection]})" : '')) do |druid| + flags[:collection] = DruidTools::Druid.new(druid).druid + end + opts.on('--purge', 'Purge items before accessioning') do |b| + flags[:purge] = true + end + opts.on('--accessionWF', 'Kick off the accessionWF workflow') do |b| + flags[:accessionWF] = true + end + opts.on('--rights KEYWORD', "Rights keyword (default: #{flags[:rights]})") do |keyword| + flags[:rights] = keyword + end + opts.on('--tag TAG', 'Tag for each object - multiple tags allowed') do |tag| + flags[:tags] << tag + end + opts.on('--test', 'Verify configuration then exit') do + flags[:configtest] = true + end + opts.on('--dryrun', 'Do not save objects') do + flags[:dryrun] = true + end + opts.on('--tmpdir DIR', "Temporary directory for assembly (default: #{flags[:tmpdir]})") do |d| + flags[:tmpdir] = d + end + opts.on('-v', '--verbose', 'Run verbosely, use multiple times for debug level output') do + flags[:debug] = true if flags[:verbose] # -vv + flags[:verbose] = true + end + opts.on('--workspace DIR', "Workspace directory for assembly (default: #{flags[:workspacedir]})") do |d| + flags[:workspacedir] = d + end + end.parse!(args) - [flags[:tmpdir], flags[:workspacedir]].each do |d| - raise ArgumentError, "Missing directory #{d}" unless File.directory? d - end + [flags[:tmpdir], flags[:workspacedir]].each do |d| + raise ArgumentError, "Missing directory #{d}" unless File.directory? d + end - ap({:flags => flags}) if flags[:debug] + ap({:flags => flags}) if flags[:debug] - # Verify configuation - if flags[:configtest] - errs = 0 - %w{workflow.url fedora.safeurl solrizer.url ssl.cert_file ssl.key_pass dor.service_root}.each do |k| - begin - k = "Dor::Config.#{k}" - if eval(k).nil? - $stderr.puts "ERROR: Configuration requires #{k}" - errs += 1 + # Verify configuation + if flags[:configtest] + errs = 0 + %w{workflow.url fedora.safeurl solrizer.url ssl.cert_file ssl.key_pass dor.service_root}.each do |k| + begin + k = "Dor::Config.#{k}" + if eval(k).nil? + $stderr.puts "ERROR: Configuration requires #{k}" + errs += 1 + end + rescue Exception => e + $stderr.puts e, e.backtrace + end end - rescue Exception => e - $stderr.puts e, e.backtrace + puts "Configuration OK" if errs == 0 + exit errs end - end - puts "Configuration OK" if errs == 0 - exit errs - end - if ARGV.empty? - STDIN.each do |line| - pid = line.strip - druid = DruidTools::Druid.new(pid, flags[:workspacedir]) - GeoHydra::Accession.run(druid, flags) + if args.empty? + STDIN.each do |line| + pid = line.strip + druid = DruidTools::Druid.new(pid, flags[:workspacedir]) + GeoHydra::Accession.run(druid, flags) + end + else + args.each do |pid| + druid = DruidTools::Druid.new(pid, flags[:workspacedir]) + GeoHydra::Accession.run(druid, flags) + end + end + rescue SystemCallError => e + $stderr.puts "ERROR: #{e.message}" + $stderr.puts e.backtrace + exit(-1) end - else - ARGV.each do |pid| - druid = DruidTools::Druid.new(pid, flags[:workspacedir]) - GeoHydra::Accession.run(druid, flags) - end end -rescue SystemCallError => e - $stderr.puts "ERROR: #{e.message}" - $stderr.puts e.backtrace - exit(-1) end + +# __MAIN__ +Accession.new.run(ARGV)