Class: Multisync::RsyncStat
- Inherits:
-
Object
- Object
- Multisync::RsyncStat
- Defined in:
- lib/multisync/rsync_stat.rb
Class Method Summary collapse
- .format_map ⇒ Object
- .format_values ⇒ Object
- .formatted_totals ⇒ Object
- .to_filesize ⇒ Object
- .to_numbers ⇒ Object
-
.total ⇒ Object
Keep track of totals.
Instance Method Summary collapse
-
#extracted ⇒ Object
extracted returns a hash with labels as keys and extracted strings as values { “Number of files” => “35,648”, “Number of created files” => “2,120”, … }.
- #formatted_values ⇒ Object
-
#initialize(output) ⇒ RsyncStat
constructor
Sample output …
- #labels ⇒ Object
-
#stats ⇒ Object
stats returns a hash with the follwing keys (and updates class total) { “Number of files” => 35648, “Number of created files” => 2120, “Number of deleted files” => 37, “Number of regular files transferred” => 394, “Total file size” => 204936349, “Total transferred file size” => 49239, }.
Constructor Details
#initialize(output) ⇒ RsyncStat
Sample output
...
Number of files: 89,633 (reg: 59,322, dir: 30,311)
Number of created files: 356 (reg: 281, dir: 75)
Number of deleted files: 114 (reg: 101, dir: 13)
Number of regular files transferred: 344
Total file size: 546,410,522,192 bytes
Total transferred file size: 7,991,491,676 bytes
Literal data: 7,952,503,842 bytes
Matched data: 38,987,834 bytes
File list size: 3,063,808
File list generation time: 2.414 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 7,957,645,803
Total bytes received: 101,299
sent 7,957,645,803 bytes received 101,299 bytes 23,719,067.37 bytes/sec
total size is 546,410,522,192 speedup is 68.66
27 28 29 |
# File 'lib/multisync/rsync_stat.rb', line 27 def initialize output @output = output end |
Class Method Details
.format_map ⇒ Object
81 82 83 84 85 86 87 88 89 90 |
# File 'lib/multisync/rsync_stat.rb', line 81 def self.format_map { "Number of files" => to_numbers, "Number of created files" => to_numbers, "Number of deleted files" => to_numbers, "Number of regular files transferred" => to_numbers, "Total file size" => to_filesize, "Total transferred file size" => to_filesize } end |
.format_values ⇒ Object
75 76 77 78 79 |
# File 'lib/multisync/rsync_stat.rb', line 75 def self.format_values format_map.map do |label, format| format.call(yield label) end end |
.formatted_totals ⇒ Object
69 70 71 72 73 |
# File 'lib/multisync/rsync_stat.rb', line 69 def self.formatted_totals format_values do |label| total[label] end end |
.to_filesize ⇒ Object
96 97 98 |
# File 'lib/multisync/rsync_stat.rb', line 96 def self.to_filesize ->(x) { Filesize.new(x).pretty } end |
.to_numbers ⇒ Object
92 93 94 |
# File 'lib/multisync/rsync_stat.rb', line 92 def self.to_numbers ->(x) { x.to_s.gsub(/\B(?=(...)*\b)/, "'") } end |
.total ⇒ Object
Keep track of totals
5 6 7 |
# File 'lib/multisync/rsync_stat.rb', line 5 def self.total @total ||= Hash.new 0 end |
Instance Method Details
#extracted ⇒ Object
extracted returns a hash with labels as keys and extracted strings as values
{
"Number of files" => "35,648",
"Number of created files" => "2,120",
...
}
37 38 39 |
# File 'lib/multisync/rsync_stat.rb', line 37 def extracted @extraced ||= @output.scan(/(#{labels.join("|")}):\s+([,0-9]+)/).to_h end |
#formatted_values ⇒ Object
63 64 65 66 67 |
# File 'lib/multisync/rsync_stat.rb', line 63 def formatted_values self.class.format_values do |label| stats[label] end end |
#labels ⇒ Object
59 60 61 |
# File 'lib/multisync/rsync_stat.rb', line 59 def labels self.class.format_map.keys end |
#stats ⇒ Object
stats returns a hash with the follwing keys (and updates class total)
{
"Number of files" => 35648,
"Number of created files" => 2120,
"Number of deleted files" => 37,
"Number of regular files transferred" => 394,
"Total file size" => 204936349,
"Total transferred file size" => 49239,
}
50 51 52 53 54 55 56 57 |
# File 'lib/multisync/rsync_stat.rb', line 50 def stats @stats ||= labels.each_with_object({}) do |label, h| value = extracted[label]&.delete(",").to_i self.class.total[label] += value # update total h[label] = value end end |