|
56 | 56 |
|
57 | 57 | p4_access_checked = False
|
58 | 58 |
|
| 59 | +def format_size_human_readable(num): |
| 60 | + """ Returns a number of units (typically bytes) formatted as a human-readable |
| 61 | + string. |
| 62 | + """ |
| 63 | + if num < 1024: |
| 64 | + return '{:d} B'.format(num) |
| 65 | + for unit in ["Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi"]: |
| 66 | + num /= 1024.0 |
| 67 | + if num < 1024.0: |
| 68 | + return "{:3.1f} {}B".format(num, unit) |
| 69 | + return "{:.1f} YiB".format(num) |
| 70 | + |
59 | 71 | def p4_build_cmd(cmd):
|
60 | 72 | """Build a suitable p4 command line.
|
61 | 73 |
|
@@ -2966,7 +2978,8 @@ def streamOneP4File(self, file, contents):
|
2966 | 2978 | size = int(self.stream_file['fileSize'])
|
2967 | 2979 | else:
|
2968 | 2980 | size = 0 # deleted files don't get a fileSize apparently
|
2969 |
| - sys.stdout.write('\r%s --> %s (%i MB)\n' % (file_path, relPath, size/1024/1024)) |
| 2981 | + sys.stdout.write('\r%s --> %s (%s)\n' % ( |
| 2982 | + file_path, relPath, format_size_human_readable(size))) |
2970 | 2983 | sys.stdout.flush()
|
2971 | 2984 |
|
2972 | 2985 | (type_base, type_mods) = split_p4_type(file["type"])
|
@@ -3064,9 +3077,8 @@ def streamP4FilesCb(self, marshalled):
|
3064 | 3077 | if not err and 'fileSize' in self.stream_file:
|
3065 | 3078 | required_bytes = int((4 * int(self.stream_file["fileSize"])) - calcDiskFree())
|
3066 | 3079 | if required_bytes > 0:
|
3067 |
| - err = 'Not enough space left on %s! Free at least %i MB.' % ( |
3068 |
| - os.getcwd(), required_bytes/1024/1024 |
3069 |
| - ) |
| 3080 | + err = 'Not enough space left on %s! Free at least %s.' % ( |
| 3081 | + os.getcwd(), format_size_human_readable(required_bytes)) |
3070 | 3082 |
|
3071 | 3083 | if err:
|
3072 | 3084 | f = None
|
@@ -3110,7 +3122,9 @@ def streamP4FilesCb(self, marshalled):
|
3110 | 3122 | size = int(self.stream_file["fileSize"])
|
3111 | 3123 | if size > 0:
|
3112 | 3124 | progress = 100*self.stream_file['streamContentSize']/size
|
3113 |
| - sys.stdout.write('\r%s %d%% (%i MB)' % (self.stream_file['depotFile'], progress, int(size/1024/1024))) |
| 3125 | + sys.stdout.write('\r%s %d%% (%s)' % ( |
| 3126 | + self.stream_file['depotFile'], progress, |
| 3127 | + format_size_human_readable(size))) |
3114 | 3128 | sys.stdout.flush()
|
3115 | 3129 |
|
3116 | 3130 | self.stream_have_file_info = True
|
|
0 commit comments