Sha256: 148d9fdad34552113f560037aa7558b2321a120b44338d2629e3018a83a7de40

Contents?: true

Size: 728 Bytes

Versions: 1

Compression:

Stored size: 728 Bytes

Contents

module RsyncCron
  class Options
    BANDWITH_LIMIT = 5*1024
    DEFAULT = { 
      rsh: "ssh",
      bwlimit: BANDWITH_LIMIT,
      exclude: "'DfsrPrivate'"
    }
    FLAGS = %w[noatime verbose archive compress]

    def initialize(data: DEFAULT, flags: FLAGS)
      @data = data.to_h
      @flags = flags.to_a
    end

    def to_s
      [flags, data].compact.join(" ")
    end

    def merge(opt)
      @data = @data.merge(opt)
      self
    end

    private def flags
      return if @flags.empty?
      @flags.map { |flag| "--#{flag}" }.join(" ")
    end

    private def data
      return if @data.empty?
      @data.reduce([]) do |acc, (opt, val)|
        acc << "--#{opt}=#{val}"
      end.join(" ")
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rsync_cron-1.0.8 lib/rsync_cron/options.rb