Browse code

Fixes #956 - fix size and alignement of du and ls output reporting

This change take into account that now, having big datasets with big
file sizes is more common.

Important note for automatic scripts:
Output changes for du, la and ls commands:display column sizes and
alignements changed.

Florent Viard authored on 2018/07/22 22:09:58
Showing 1 changed files
... ...
@@ -102,8 +102,8 @@ def subcmd_bucket_usage_all(s3):
102 102
             buckets_size += size
103 103
     total_size, size_coeff = formatSize(buckets_size, cfg.human_readable_sizes)
104 104
     total_size_str = str(total_size) + size_coeff
105
-    output(u"".rjust(8, "-"))
106
-    output(u"%s Total" % (total_size_str.ljust(8)))
105
+    output(u"".rjust(12, "-"))
106
+    output(u"%s Total" % (total_size_str.ljust(12)))
107 107
     return size
108 108
 
109 109
 def subcmd_bucket_usage(s3, uri):
... ...
@@ -131,9 +131,14 @@ def subcmd_bucket_usage(s3, uri):
131 131
     except KeyboardInterrupt as e:
132 132
         extra_info = u' [interrupted]'
133 133
 
134
-    total_size, size_coeff = formatSize(bucket_size, Config().human_readable_sizes)
135
-    total_size_str = str(total_size) + size_coeff
136
-    output(u"%s %s objects %s%s" % (total_size_str.ljust(8), object_count, uri, extra_info))
134
+    total_size_str = u"%d%s" % formatSize(bucket_size,
135
+                                          Config().human_readable_sizes)
136
+    if Config().human_readable_sizes:
137
+        total_size_str = total_size_str.rjust(5)
138
+    else:
139
+        total_size_str = total_size_str.rjust(12)
140
+    output(u"%s %7s objects %s%s" % (total_size_str, object_count, uri,
141
+                                     extra_info))
137 142
     return bucket_size
138 143
 
139 144
 def cmd_ls(args):
... ...
@@ -184,18 +189,25 @@ def subcmd_bucket_list(s3, uri, limit):
184 184
             error(S3.codes[e.info["Code"]] % bucket)
185 185
         raise
186 186
 
187
+    # md5 are 32 char long, but for multipart there could be a suffix
188
+    if Config().human_readable_sizes:
189
+        # %(size)5s%(coeff)1s
190
+        format_size = u"%5d%1s"
191
+        dir_str = u"DIR".rjust(6)
192
+    else:
193
+        format_size = u"%12d%s"
194
+        dir_str = u"DIR".rjust(12)
187 195
     if cfg.long_listing:
188
-        format_string = u"%(timestamp)16s %(size)9s%(coeff)1s  %(md5)32s  %(storageclass)s  %(uri)s"
196
+        format_string = u"%(timestamp)16s %(size)s  %(md5)-35s  %(storageclass)-11s  %(uri)s"
189 197
     elif cfg.list_md5:
190
-        format_string = u"%(timestamp)16s %(size)9s%(coeff)1s  %(md5)32s  %(uri)s"
198
+        format_string = u"%(timestamp)16s %(size)s  %(md5)-35s  %(uri)s"
191 199
     else:
192
-        format_string = u"%(timestamp)16s %(size)9s%(coeff)1s  %(uri)s"
200
+        format_string = u"%(timestamp)16s %(size)s  %(uri)s"
193 201
 
194 202
     for prefix in response['common_prefixes']:
195 203
         output(format_string % {
196 204
             "timestamp": "",
197
-            "size": "DIR",
198
-            "coeff": "",
205
+            "size": dir_str,
199 206
             "md5": "",
200 207
             "storageclass": "",
201 208
             "uri": uri.compose_uri(bucket, prefix["Prefix"])})
... ...
@@ -213,11 +225,11 @@ def subcmd_bucket_list(s3, uri, limit):
213 213
                 except KeyError:
214 214
                     pass
215 215
 
216
-        size, size_coeff = formatSize(object["Size"], Config().human_readable_sizes)
216
+        size_and_coeff = formatSize(object["Size"],
217
+                                    Config().human_readable_sizes)
217 218
         output(format_string % {
218 219
             "timestamp": formatDateTime(object["LastModified"]),
219
-            "size" : str(size),
220
-            "coeff": size_coeff,
220
+            "size" : format_size % size_and_coeff,
221 221
             "md5" : md5,
222 222
             "storageclass" : storageclass,
223 223
             "uri": uri.compose_uri(bucket, object["Key"]),