class Rsync::Change
Provides details about changes made to a specific file.
Change Flags:
:no_change :identical :new :unknown :changed
Public Class Methods
# File lib/rsync/change.rb, line 12 def initialize(data) @data = data end
Public Instance Methods
The change, if any, to the file ACL. @return [Symbol]
# File lib/rsync/change.rb, line 94 def acl attribute_prop(9) end
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
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
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
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
The filename associated with this change. @return [String]
# File lib/rsync/change.rb, line 18 def filename @data[12..-1] end
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
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
The change, if any, to the file permissions. @return [Symbol]
# File lib/rsync/change.rb, line 76 def permissions attribute_prop(5) end
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
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
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
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
# 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
# File lib/rsync/change.rb, line 159 def message @data[1..10].strip end
# File lib/rsync/change.rb, line 167 def raw_file_type @data[1,1] end
# File lib/rsync/change.rb, line 163 def raw_update_type @data[0,1] end