35 lines
657 B
Go
35 lines
657 B
Go
// +build darwin
|
|
|
|
package xid
|
|
|
|
import (
|
|
"errors"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
func readPlatformMachineID() (string, error) {
|
|
ioreg, err := exec.LookPath("ioreg")
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
cmd := exec.Command(ioreg, "-rd1", "-c", "IOPlatformExpertDevice")
|
|
out, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
for _, line := range strings.Split(string(out), "\n") {
|
|
if strings.Contains(line, "IOPlatformUUID") {
|
|
parts := strings.SplitAfter(line, `" = "`)
|
|
if len(parts) == 2 {
|
|
uuid := strings.TrimRight(parts[1], `"`)
|
|
return strings.ToLower(uuid), nil
|
|
}
|
|
}
|
|
}
|
|
|
|
return "", errors.New("cannot find host id")
|
|
}
|