Sha256: 6927fe5bdc95031c08f0bef699629a77ca056bff35cb95c3561682ccf5f04596

Contents?: true

Size: 1.35 KB

Versions: 7

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

require 'os'

require 'libis/tools/extend/string'
require 'libis/tools/logger'
require 'libis/tools/command'

require 'libis/format/config'

module Libis
  module Format
    module Tool
      class PdfTool
        include ::Libis::Tools::Logger

        def self.installed?
          result = Libis::Tools::Command.run(Libis::Format::Config[:java_cmd], '-version')
          return false unless (result[:status]).zero?

          File.exist?(Libis::Format::Config[:pdf_tool])
        end

        def self.run(command, source, target, *options)
          new.run command, source, target, *options
        end

        def run(command, source, target, *options)
          if OS.java?
            # TODO: import library and execute in current VM. For now do exactly as in MRI.
          end

          timeout = Libis::Format::Config[:timeouts][:pdf_tool]
          args = [
            Libis::Format::Config[:java_cmd],
            '-jar', Libis::Format::Config[:pdf_tool],
            [command],
            '-i', source,
            '-o', target,
            options,
          ].flatten

          result = Libis::Tools::Command.run(*args, timeout: , kill_after: timeout * 2)

          result[:err] << "#{self.class} took too long (> #{timeout} seconds) to complete" if result[:timeout]

          result
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
libis-format-1.3.7.1 lib/libis/format/tool/pdf_tool.rb
libis-format-1.3.7 lib/libis/format/tool/pdf_tool.rb
libis-format-1.3.6 lib/libis/format/tool/pdf_tool.rb
libis-format-1.3.5 lib/libis/format/tool/pdf_tool.rb
libis-format-1.3.4 lib/libis/format/tool/pdf_tool.rb
libis-format-1.3.3 lib/libis/format/tool/pdf_tool.rb
libis-format-1.3.2 lib/libis/format/tool/pdf_tool.rb