4593d0a641
- script/vendor received an update in order to work with Glide - import paths have been rewritten to work with GO15VENDOREXPERIMENT
46 lines
949 B
Go
46 lines
949 B
Go
package pb
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
type Units int
|
|
|
|
const (
|
|
// By default, without type handle
|
|
U_NO Units = iota
|
|
// Handle as b, Kb, Mb, etc
|
|
U_BYTES
|
|
)
|
|
|
|
// Format integer
|
|
func Format(i int64, units Units) string {
|
|
switch units {
|
|
case U_BYTES:
|
|
return FormatBytes(i)
|
|
default:
|
|
// by default just convert to string
|
|
return strconv.FormatInt(i, 10)
|
|
}
|
|
}
|
|
|
|
// Convert bytes to human readable string. Like a 2 MB, 64.2 KB, 52 B
|
|
func FormatBytes(i int64) (result string) {
|
|
switch {
|
|
case i > (1024 * 1024 * 1024 * 1024):
|
|
result = fmt.Sprintf("%#.02f TB", float64(i)/1024/1024/1024/1024)
|
|
case i > (1024 * 1024 * 1024):
|
|
result = fmt.Sprintf("%#.02f GB", float64(i)/1024/1024/1024)
|
|
case i > (1024 * 1024):
|
|
result = fmt.Sprintf("%#.02f MB", float64(i)/1024/1024)
|
|
case i > 1024:
|
|
result = fmt.Sprintf("%#.02f KB", float64(i)/1024)
|
|
default:
|
|
result = fmt.Sprintf("%d B", i)
|
|
}
|
|
result = strings.Trim(result, " ")
|
|
return
|
|
}
|