diff options
Diffstat (limited to 'bin/mog')
-rwxr-xr-x | bin/mog | 41 |
1 files changed, 20 insertions, 21 deletions
@@ -115,6 +115,18 @@ def store_file_retry(mg, key, storage_class, filepath) end end +def human_size(size) + suff = '' + %w(K M G).each do |s| + size /= 1024.0 + if size <= 1024 + suff = s + break + end + end + sprintf("%.1f%s", size, suff) +end + begin case cmd when 'cp' @@ -133,29 +145,16 @@ begin end when 'ls' prefixes = ARGV.empty? ? [ nil ] : ARGV - prefixes.each do |prefix| - mg.each_key(prefix) do |key| - if ls_l - path_nr = "% 2d" % mg.get_paths(key).size - size = mg.size(key) - if ls_h && size > 1024 - suff = '' - %w(K M G).each do |s| - size /= 1024.0 - suff = s - break if size <= 1024 - end - size = sprintf("%.1f%s", size, suff) - else - size = size.to_s - end - size = (' ' * (12 - size.length)) << size # right justify - puts [ path_nr, size, key ].pack("A4 A16 A*") - else - puts key - end + if ls_l + each_key = lambda do |key, size, devcount| + size = ls_h && size > 1024 ? human_size(size) : size.to_s + size = (' ' * (12 - size.length)) << size # right justify + puts [ sprintf("% 2d", devcount), size, key ].pack("A4 A16 A*") end + else + each_key = lambda { |key| puts key } end + prefixes.each { |prefix| mg.each_key(prefix, &each_key) } when 'rm' ARGV.empty? and raise ArgumentError, '<key1> [<key2>]' ARGV.each { |key| mg.delete(key) } |