units package - github.com/docker/go-units - Go Packages (original) (raw)
Package units provides helper function to parse and print size and time units in human-readable format.
func CustomSize(format string, size float64, base float64, _map []string) string
func HumanSizeWithPrecision(size float64, precision int) string
const ( KB = 1000 MB = 1000 * KB GB = 1000 * MB TB = 1000 * GB PB = 1000 * TB
KiB = 1024
MiB = 1024 * [KiB](#KiB)
GiB = 1024 * [MiB](#MiB)
TiB = 1024 * [GiB](#GiB)
PiB = 1024 * [TiB](#TiB)
)
See: http://en.wikipedia.org/wiki/Binary_prefix
This section is empty.
BytesSize returns a human-readable size in bytes, kibibytes, mebibytes, gibibytes, or tebibytes (eg. "44kiB", "17MiB").
fmt.Println(BytesSize(1024)) fmt.Println(BytesSize(1024 * 1024)) fmt.Println(BytesSize(1048576)) fmt.Println(BytesSize(2 * MiB)) fmt.Println(BytesSize(3.42 * GiB)) fmt.Println(BytesSize(5.372 * TiB)) fmt.Println(BytesSize(2.22 * PiB))
Output:
CustomSize returns a human-readable approximation of a size using custom format.
FromHumanSize returns an integer from a human-readable specification of a size using SI standard (eg. "44kB", "17MB").
fmt.Println(FromHumanSize("32")) fmt.Println(FromHumanSize("32b")) fmt.Println(FromHumanSize("32B")) fmt.Println(FromHumanSize("32k")) fmt.Println(FromHumanSize("32K")) fmt.Println(FromHumanSize("32kb")) fmt.Println(FromHumanSize("32Kb")) fmt.Println(FromHumanSize("32Mb")) fmt.Println(FromHumanSize("32Gb")) fmt.Println(FromHumanSize("32Tb")) fmt.Println(FromHumanSize("32Pb"))
Output:
func HumanDuration ¶
HumanDuration returns a human-readable approximation of a duration (eg. "About a minute", "4 hours ago", etc.).
fmt.Println(HumanDuration(450 * time.Millisecond)) fmt.Println(HumanDuration(47 * time.Second)) fmt.Println(HumanDuration(1 * time.Minute)) fmt.Println(HumanDuration(3 * time.Minute)) fmt.Println(HumanDuration(35 * time.Minute)) fmt.Println(HumanDuration(35time.Minute + 40time.Second)) fmt.Println(HumanDuration(1 * time.Hour)) fmt.Println(HumanDuration(1time.Hour + 45time.Minute)) fmt.Println(HumanDuration(3 * time.Hour)) fmt.Println(HumanDuration(3time.Hour + 59time.Minute)) fmt.Println(HumanDuration(3time.Hour + 60time.Minute)) fmt.Println(HumanDuration(24 * time.Hour)) fmt.Println(HumanDuration(24time.Hour + 12time.Hour)) fmt.Println(HumanDuration(2 * 24 * time.Hour)) fmt.Println(HumanDuration(7 * 24 * time.Hour)) fmt.Println(HumanDuration(1324time.Hour + 5time.Hour)) fmt.Println(HumanDuration(2 * 7 * 24 * time.Hour)) fmt.Println(HumanDuration(2724time.Hour + 424time.Hour)) fmt.Println(HumanDuration(3 * 7 * 24 * time.Hour)) fmt.Println(HumanDuration(4 * 7 * 24 * time.Hour)) fmt.Println(HumanDuration(4724time.Hour + 324time.Hour)) fmt.Println(HumanDuration(1 * 30 * 24 * time.Hour)) fmt.Println(HumanDuration(13024time.Hour + 2724time.Hour)) fmt.Println(HumanDuration(2 * 30 * 24 * time.Hour)) fmt.Println(HumanDuration(33024time.Hour + 1724time.Hour)) fmt.Println(HumanDuration(53024time.Hour + 2724time.Hour)) fmt.Println(HumanDuration(13 * 30 * 24 * time.Hour)) fmt.Println(HumanDuration(23 * 30 * 24 * time.Hour)) fmt.Println(HumanDuration(24 * 30 * 24 * time.Hour)) fmt.Println(HumanDuration(243024time.Hour + 2724time.Hour)) fmt.Println(HumanDuration(336524time.Hour + 23024*time.Hour))
Output:
HumanSize returns a human-readable approximation of a size capped at 4 valid numbers (eg. "2.746 MB", "796 KB").
fmt.Println(HumanSize(1000)) fmt.Println(HumanSize(1024)) fmt.Println(HumanSize(1000000)) fmt.Println(HumanSize(1048576)) fmt.Println(HumanSize(2 * MB)) fmt.Println(HumanSize(float64(3.42 * GB))) fmt.Println(HumanSize(float64(5.372 * TB))) fmt.Println(HumanSize(float64(2.22 * PB)))
Output:
HumanSizeWithPrecision allows the size to be in any precision, instead of 4 digit precision used in units.HumanSize.
RAMInBytes parses a human-readable string representing an amount of RAM in bytes, kibibytes, mebibytes, gibibytes, or tebibytes and returns the number of bytes, or -1 if the string is unparseable. Units are case-insensitive, and the 'b' suffix is optional.
fmt.Println(RAMInBytes("32")) fmt.Println(RAMInBytes("32b")) fmt.Println(RAMInBytes("32B")) fmt.Println(RAMInBytes("32k")) fmt.Println(RAMInBytes("32K")) fmt.Println(RAMInBytes("32kb")) fmt.Println(RAMInBytes("32Kb")) fmt.Println(RAMInBytes("32Mb")) fmt.Println(RAMInBytes("32Gb")) fmt.Println(RAMInBytes("32Tb")) fmt.Println(RAMInBytes("32Pb")) fmt.Println(RAMInBytes("32PB")) fmt.Println(RAMInBytes("32P"))
Output:
type Rlimit struct {
Type int json:"type,omitempty"
Hard uint64 json:"hard,omitempty"
Soft uint64 json:"soft,omitempty"
}
Rlimit specifies the resource limits, such as max open files.
Ulimit is a human friendly version of Rlimit.
ParseUlimit parses and returns a Ulimit from the specified string.
fmt.Println(ParseUlimit("nofile=512:1024")) fmt.Println(ParseUlimit("nofile=1024")) fmt.Println(ParseUlimit("cpu=2:4")) fmt.Println(ParseUlimit("cpu=6"))
Output:
func (u Ulimit) GetRlimit() (Rlimit, error)
GetRlimit returns the RLimit corresponding to Ulimit.