Sha256: 7a620b85f5a78458502dfc30d5db31428db6c527c19afbe0e273c158b5fe21ff

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

module Rbfs
  class Rsync
    def initialize(config = {}, host = nil)
      @config = config
      @host = host
    end

    def logger
      @config[:logger]
    end

    def remote_url
      "#{@host.ip}:#{@config[:root]}"
    end

    def mkdir
      args = [@host.ip, "mkdir", "-p", @config[:root]]
      command("ssh", args)
    end

    def rsync
      args = ["-ae", "ssh", "--delete", @config[:root], remote_url]
      args << "-v" if @config[:verbose]
      args << "-n" if @config[:dry]
      args << "--timeout=#{@config[:timeout]}" if @config[:timeout]
      command("rsync", args)
    end

    def sync
      mkdir
      rsync
    end

    def command(cmd, options = [], &block)
      cmd_line = "#{cmd} "
      cmd_line += options.join(' ')
      output = run_command(cmd_line, &block)
      exitcode = $?
      {:output => output, :exitcode => exitcode}
    end

    def run_command(cmd, &block)
      if block_given?
        IO.popen("#{cmd} 2>&1", &block)
      else
        `#{cmd} 2>&1`
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rbfs-0.0.10 lib/rbfs/rsync.rb