module WickedPdf::Progress

Public Instance Methods

invoke_with_progress(command, options) click to toggle source
# File lib/wicked_pdf/progress.rb, line 10
def invoke_with_progress(command, options)
  output = []
  begin
    PTY.spawn(command.join(' ')) do |stdout, _stdin, pid|
      begin
        stdout.sync
        stdout.each_line("\r") do |line|
          output << line.chomp
          options[:progress].call(line) if options[:progress]
        end
      rescue Errno::EIO # rubocop:disable Lint/HandleExceptions
        # child process is terminated, this is expected behaviour
      ensure
        ::Process.wait pid
      end
    end
  rescue PTY::ChildExited
    puts 'The child process exited!'
  end
  err = output.join('\n')
  raise "#{command} failed (exitstatus 0). Output was: #{err}" unless $CHILD_STATUS && $CHILD_STATUS.exitstatus.zero?
end
track_progress?(options) click to toggle source
# File lib/wicked_pdf/progress.rb, line 6
def track_progress?(options)
  options[:progress] && !(on_windows? || RUBY_ENGINE == 'truffleruby')
end