Sha256: 96a4f47819a632556f11a9a9ac87cdce9f3bf9316aec8961488f49c962b4d1c7

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 = [remote_url, "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.9 lib/rbfs/rsync.rb