Class: Marz::Rsync::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/marz/rsync/result.rb

Overview

The result of an rsync job

Constant Summary collapse

ERROR_CODES =

Rsync exit values/error codes

{
  #'0'  =>   'Success',
  '1'  =>   'Syntax or usage error',
  '2'  =>   'Protocol incompatibility',
  '3'  =>   'Errors selecting input/output files, dirs',
  '4'  =>   'Requested action not supported: an attempt was made to manipulate 64-bit files on a platform that cannot support them; or an option was specified that is supported by the client and not by the server.',
  '5'  =>   'Error starting client-server protocol',
  '6'  =>   'Daemon unable to append to log-file',
  '10' =>   'Error in socket I/O',
  '11' =>   'Error in file I/O',
  '12' =>   'Error in rsync protocol data stream',
  '13' =>   'Errors with program diagnostics',
  '14' =>   'Error in IPC code',
  '20' =>   'Received SIGUSR1 or SIGINT',
  '21' =>   'Some error returned by waitpid()',
  '22' =>   'Error allocating core memory buffers',
  '23' =>   'Partial transfer due to error',
  '24' =>   'Partial transfer due to vanished source files',
  '25' =>   'The --max-delete limit stopped deletions',
  '30' =>   'Timeout in data send/receive',
  '35' =>   'Timeout waiting for daemon connection'
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(output, exitcode) ⇒ Result

Returns a new instance of Result.



36
37
38
39
# File 'lib/marz/rsync/result.rb', line 36

def initialize(output, exitcode)
  @output = output
  @exitcode = exitcode
end

Instance Attribute Details

#exitcodeObject

Exit code of an rsync job



7
8
9
# File 'lib/marz/rsync/result.rb', line 7

def exitcode
  @exitcode
end

#outputObject

Output of an rsync job



10
11
12
# File 'lib/marz/rsync/result.rb', line 10

def output
  @output
end

Instance Method Details

#errorString

Error message corresponding to the exit code/error code

Returns:

  • (String)


49
50
51
52
53
54
55
56
57
58
59
# File 'lib/marz/rsync/result.rb', line 49

def error
  return nil if @exitcode == 0
  error_key = @exitcode.to_s
  if ERROR_CODES.has_key? error_key
    ERROR_CODES[error_key].to_s
  elsif  @raw_output =~ /Permission denied \(publickey\)/
    "Permission denied (publickey)"
  else
    "Unknown Error"
  end
end

#success?Boolean

Whether rsync job run without errors

Returns:

  • (Boolean)


43
44
45
# File 'lib/marz/rsync/result.rb', line 43

def success?
  @exitcode == 0
end

#total_bytes_receivedString

Total bytes received

Returns:

  • (String)


78
79
80
81
# File 'lib/marz/rsync/result.rb', line 78

def total_bytes_received
  return nil if @exitcode != 0 || @output.nil?
  @output.match(/^*(?:Total bytes received: )(\d\S*|\d+\.\d+\S*)/)[1]
end

#total_bytes_sentString

Total bytes sent

Returns:

  • (String)


71
72
73
74
# File 'lib/marz/rsync/result.rb', line 71

def total_bytes_sent
  return nil if @exitcode != 0 || @output.nil?
  @output.match(/^*(?:Total bytes sent: )(\d\S*|\d+\.\d+\S*)/)[1]
end

#total_sizeString

Total size of the rsync job

Returns:

  • (String)


63
64
65
66
67
# File 'lib/marz/rsync/result.rb', line 63

def total_size
  return nil if @exitcode != 0 || @output.nil?
  #@output.match(/^*(?:total size is )(\d+\.\d+\S)/)[1]
  @output.match(/^*(?:total size is )(\d\S*|\d+\.\d+\S*)/)[1]
end