Sha256: ed314e81fa7dfeab5f6b09b69f1571f7a5acdeb4fa38216563dc01998c0a029a

Contents?: true

Size: 987 Bytes

Versions: 2

Compression:

Stored size: 987 Bytes

Contents

class WickedPdf
  module Progress
    require 'pty' # no support for windows
    require 'English'

    def track_progress?(options)
      options[:progress] && !on_windows?
    end

    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
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
wicked_pdf-1.2.1 lib/wicked_pdf/progress.rb
wicked_pdf-1.2.0 lib/wicked_pdf/progress.rb