Sha256: e287ea9b19428f642bc940c20a28c9e001a26ac38b5abff66f3d3654c469b0c9

Contents?: true

Size: 1.47 KB

Versions: 13

Compression:

Stored size: 1.47 KB

Contents

require 'open3'

class ImportExportJob < ActiveJob::Base
  attr_reader :mode
  include Open3

  # @param [String] uri of the resource
  # @option opts [String] desc_dir location of descriptions
  # @option opts [String] bin_dir location of binaries
  # @option opts [String] profile BagIt profile
  # @option opts [String] mode import or export mode
  # Notes:
  #   * the Fedora import-export tool is not release yet
  #   * current parameters are undergoing changes
  #   * import features are not yet available
  #   * exporting bags is not yet supported
  def perform(uri, options = {})
    @mode = options.fetch(:mode, "export")
    call(uri,
         options.fetch(:desc_dir, CurationConcerns.config.descriptions_directory),
         options.fetch(:bin_dir, CurationConcerns.config.binaries_directory),
         options.fetch(:profile, nil))
  end

  private

    def call(uri, desc_dir, bin_dir, _profile = nil)
      command = "java -jar #{CurationConcerns.config.import_export_jar_file_path} --mode #{mode} --resource #{uri} --descDir #{desc_dir} --binDir #{bin_dir}"
      internal_call(command)
    end

    def internal_call(command)
      stdin, stdout, stderr, wait_thr = popen3(command)
      begin
        out = stdout.read
        err = stderr.read
        exit_status = wait_thr.value
        raise "Fedora command failed: \"#{command}\"\n#{err}" unless exit_status.success?
        out
      ensure
        stdin.close
        stdout.close
        stderr.close
      end
    end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
curation_concerns-1.7.8 app/jobs/import_export_job.rb
curation_concerns-1.7.7 app/jobs/import_export_job.rb
curation_concerns-2.0.0 app/jobs/import_export_job.rb
curation_concerns-2.0.0.rc2 app/jobs/import_export_job.rb
curation_concerns-1.7.6 app/jobs/import_export_job.rb
curation_concerns-1.7.5 app/jobs/import_export_job.rb
curation_concerns-1.7.4 app/jobs/import_export_job.rb
curation_concerns-1.7.3 app/jobs/import_export_job.rb
curation_concerns-1.7.2 app/jobs/import_export_job.rb
curation_concerns-2.0.0.rc1 app/jobs/import_export_job.rb
curation_concerns-1.7.1 app/jobs/import_export_job.rb
curation_concerns-1.7.0 app/jobs/import_export_job.rb
curation_concerns-1.7.0.beta1 app/jobs/import_export_job.rb