Sha256: 941d793447612b8ba9520dc7d6e920d171d4911da025f04b9e939f77a194bed3

Contents?: true

Size: 1.04 KB

Versions: 7

Compression:

Stored size: 1.04 KB

Contents

module Frizz
  class Sync
    def initialize(local, remote)
      @local = local
      @remote = remote
    end

    def run!
      remote.files.each do |remote_file|
        local_path = remote_file.key
        local_file_md5 = local_index[local_path]

        if local_file_md5.nil?
          puts "#{local_path}: deleted".red
          remote_file.destroy
        elsif local_file_md5 == remote_file.etag
          puts "#{local_path}: unchanged"
          local_index.delete(local_path)
        else
          puts "#{local_path}: updated".green
          remote.upload local.file_for(local_path), local_path
          local_index.delete(local_path)
        end
      end

      # Upload new files
      local_index.each do |local_path, md5|
        puts "#{local_path}: new".green
        remote.upload local.file_for(local_path), local_path
      end
    end

    private

    attr_reader :local, :remote

    def local_index
      @local_index ||= local.files.each_with_object({}) do |file, obj|
        obj[file.key] = file.checksum
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
frizz-1.3.3 lib/frizz/sync.rb
frizz-1.3.2 lib/frizz/sync.rb
frizz-1.2.2 lib/frizz/sync.rb
frizz-1.2.1 lib/frizz/sync.rb
frizz-1.1.1 lib/frizz/sync.rb
frizz-1.1.0 lib/frizz/sync.rb
frizz-1.0.1 lib/frizz/sync.rb