class Rsync::Change

Provides details about changes made to a specific file.

Change Flags:

:no_change
:identical
:new
:unknown
:changed

Public Class Methods

new(data) click to toggle source
# File lib/rsync/change.rb, line 12
def initialize(data)
  @data = data
end

Public Instance Methods

acl() click to toggle source

The change, if any, to the file ACL. @return [Symbol]

# File lib/rsync/change.rb, line 94
def acl
  attribute_prop(9)
end
changed?() click to toggle source

Whether the file was changed or not. @return [Boolean]

# File lib/rsync/change.rb, line 24
def changed?
  if update_type == :no_change
    false
  else
    true
  end
end
checksum() click to toggle source

The change, if any, to the checksum of the file. @return [Symbol]

# File lib/rsync/change.rb, line 58
def checksum
  attribute_prop(2)
end
ext_attr() click to toggle source

The change, if any, to the file's extended attributes. @return [Symbol]

# File lib/rsync/change.rb, line 100
def ext_attr
  attribute_prop(10)
end
file_type() click to toggle source

The type of file.

:file
:directory
:symlink
:device
:special

@return [Symbol]

# File lib/rsync/change.rb, line 142
def file_type
  case raw_file_type
    when 'f'
      :file
    when 'd'
      :directory
    when 'L'
      :symlink
    when 'D'
      :device
    when 'S'
      :special
  end
end
filename() click to toggle source

The filename associated with this change. @return [String]

# File lib/rsync/change.rb, line 18
def filename
  @data[12..-1]
end
group() click to toggle source

The change, if any, to the group of the file. @return [Symbol]

# File lib/rsync/change.rb, line 88
def group
  attribute_prop(7)
end
owner() click to toggle source

The change, if any, to the owner of the file. @return [Symbol]

# File lib/rsync/change.rb, line 82
def owner
  attribute_prop(6)
end
permissions() click to toggle source

The change, if any, to the file permissions. @return [Symbol]

# File lib/rsync/change.rb, line 76
def permissions
  attribute_prop(5)
end
size() click to toggle source

The change, if any, to the size of the file. @return [Symbol]

# File lib/rsync/change.rb, line 64
def size
  attribute_prop(3)
end
summary() click to toggle source

Simple description of the change. @return [String]

# File lib/rsync/change.rb, line 34
def summary
  if update_type == :message
    message
  elsif update_type == :recv and @data[2,9] == "+++++++++"
    "creating local"
  elsif update_type == :recv
    "updating local"
  elsif update_type == :sent and @data[2,9] == "+++++++++"
    "creating remote"
  elsif update_type == :sent
    "updating remote"
  else
    changes = []
    [:checksum, :size, :timestamp, :permissions, :owner, :group, :acl].each do |prop|
      changes << prop if send(prop) == :changed
    end
    changes.join(", ")
  end
end
timestamp() click to toggle source

The change, if any, to the timestamp of the file. @return [Symbol]

# File lib/rsync/change.rb, line 70
def timestamp
  attribute_prop(4)
end
update_type() click to toggle source

The type of update made to the file.

:sent
:recv
:change
:hard_link
:no_update
:message

@return [Symbol]

# File lib/rsync/change.rb, line 116
def update_type
  case raw_update_type
    when '<'
      :sent
    when '>'
      :recv
    when 'c'
      :change
    when 'h'
      :hard_link
    when '.'
      :no_update
    when '*'
      :message
  end
end

Private Instance Methods

attribute_prop(index) click to toggle source
# File lib/rsync/change.rb, line 171
def attribute_prop(index)
  case @data[index,1]
    when '.'
      :no_change
    when ' '
      :identical
    when '+'
      :new
    when '?'
      :unknown
    else
      :changed
  end
end
message() click to toggle source
# File lib/rsync/change.rb, line 159
def message
  @data[1..10].strip
end
raw_file_type() click to toggle source
# File lib/rsync/change.rb, line 167
def raw_file_type
  @data[1,1]
end
raw_update_type() click to toggle source
# File lib/rsync/change.rb, line 163
def raw_update_type
  @data[0,1]
end