mirror of
https://github.com/EnumeratedDev/bpm.git
synced 2026-09-16 02:26:12 +00:00
54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
package bpmlib
|
|
|
|
import (
|
|
"fmt"
|
|
"math"
|
|
"syscall"
|
|
)
|
|
|
|
func GetArch() string {
|
|
uname := syscall.Utsname{}
|
|
err := syscall.Uname(&uname)
|
|
if err != nil {
|
|
return "unknown"
|
|
}
|
|
|
|
var byteString [65]byte
|
|
var indexLength int
|
|
for ; uname.Machine[indexLength] != 0; indexLength++ {
|
|
byteString[indexLength] = uint8(uname.Machine[indexLength])
|
|
}
|
|
return string(byteString[:indexLength])
|
|
}
|
|
|
|
func stringSliceRemove(s []string, r string) []string {
|
|
for i, v := range s {
|
|
if v == r {
|
|
return append(s[:i], s[i+1:]...)
|
|
}
|
|
}
|
|
return s
|
|
}
|
|
|
|
func unsignedBytesToHumanReadable(b uint64) string {
|
|
bf := float64(b)
|
|
for _, unit := range []string{"", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi"} {
|
|
if math.Abs(bf) < 1024.0 {
|
|
return fmt.Sprintf("%3.1f%sB", bf, unit)
|
|
}
|
|
bf /= 1024.0
|
|
}
|
|
return fmt.Sprintf("%.1fYiB", bf)
|
|
}
|
|
|
|
func bytesToHumanReadable(b int64) string {
|
|
bf := float64(b)
|
|
for _, unit := range []string{"", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi"} {
|
|
if math.Abs(bf) < 1024.0 {
|
|
return fmt.Sprintf("%3.1f%sB", bf, unit)
|
|
}
|
|
bf /= 1024.0
|
|
}
|
|
return fmt.Sprintf("%.1fYiB", bf)
|
|
}
|