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
28 29 30 |
# File 'lib/multisync/rsync_stat.rb', line 28 def initialize output @output = output end |
Class Method Details
.format_map ⇒ Object
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/multisync/rsync_stat.rb', line 82 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
76 77 78 79 80 |
# File 'lib/multisync/rsync_stat.rb', line 76 def self.format_values format_map.map do |label, format| format.call(yield label) end end |
.formatted_totals ⇒ Object
70 71 72 73 74 |
# File 'lib/multisync/rsync_stat.rb', line 70 def self.formatted_totals format_values do |label| total[label] end end |
.to_filesize ⇒ Object
97 98 99 |
# File 'lib/multisync/rsync_stat.rb', line 97 def self.to_filesize ->(x) { Filesize.new(x).pretty } end |
.to_numbers ⇒ Object
93 94 95 |
# File 'lib/multisync/rsync_stat.rb', line 93 def self.to_numbers ->(x) { x.to_s.gsub(/\B(?=(...)*\b)/, "'") } end |
.total ⇒ Object
Keep track of totals
6 7 8 |
# File 'lib/multisync/rsync_stat.rb', line 6 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",
...
}
38 39 40 |
# File 'lib/multisync/rsync_stat.rb', line 38 def extracted @extraced ||= @output.scan(/(#{labels.join('|')}):\s+([,0-9]+)/).to_h end |
#formatted_values ⇒ Object
64 65 66 67 68 |
# File 'lib/multisync/rsync_stat.rb', line 64 def formatted_values self.class.format_values do |label| stats[label] end end |
#labels ⇒ Object
60 61 62 |
# File 'lib/multisync/rsync_stat.rb', line 60 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,
}
51 52 53 54 55 56 57 58 |
# File 'lib/multisync/rsync_stat.rb', line 51 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 |