Sha256: bc078e5ff4462a369b7befab22b566147ed5987a6c53eabffc045d441146ee61

Contents?: true

Size: 1.09 KB

Versions: 21

Compression:

Stored size: 1.09 KB

Contents

module EY
  module Backup
    module Spawner
      extend Forwardable
      extend self

      CHUNK_SIZE = 4096

      def_delegator EY::Backup, :logger

      def spawn(command, stdout = nil, stdin = nil, stderr = logger.stderr)
        ioify(stdout, stdin, stderr) do |o, i, e|
          ios = {:stderr => e}
          ios[:stdout] = o if o
          ios[:stdin] = i if i
          result = Open4.spawn([command], ios)

        end
      end

      def run(command)
        unless runs?(command)
          raise "Failed to run #{command.inspect}"
        end
      end

      def runs?(command)
        pid, *_ = Open4.popen4(command)
        pid, status = Process::waitpid2(pid)
        status.success?
      end

      def ioify(stdout, stdin, stderr, &block)
        if String === stdin
          File.open(stdin, 'r') do |f|
            ioify(stdout, f, stderr, &block)
          end
        elsif String === stdout
          File.open(stdout, 'w') do |f|
            ioify(f, stdin, stderr, &block)
          end
        else
          yield stdout, stdin, stderr
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
ey_cloud_server-1.4.47a lib/ey_backup/spawner.rb
ey_cloud_server-1.4.47 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.46 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.45 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.44 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.43 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.42 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.41 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.40 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.39 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.37 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.37.ruby19 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.36 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.34 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.33 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.32 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.31 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.29 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.28 lib/ey_backup/spawner.rb
ey_cloud_server-1.4.28.pre lib/ey_backup/spawner.rb