gopkg.in/essentialkaos/ek.v3@v3.5.1/system/info_darwin.go (about) 1 // +build darwin 2 3 package system 4 5 // ////////////////////////////////////////////////////////////////////////////////// // 6 // // 7 // Copyright (c) 2009-2016 Essential Kaos // 8 // Essential Kaos Open Source License <http://essentialkaos.com/ekol?en> // 9 // // 10 // ////////////////////////////////////////////////////////////////////////////////// // 11 12 import ( 13 "errors" 14 "strings" 15 "syscall" 16 ) 17 18 // ////////////////////////////////////////////////////////////////////////////////// // 19 20 // GetSystemInfo return system info 21 func GetSystemInfo() (*SystemInfo, error) { 22 hostname, err := syscall.Sysctl("kern.hostname") 23 24 if err != nil || hostname == "" { 25 return &SystemInfo{}, errors.New("Can't read hostname info") 26 } 27 28 os, err := syscall.Sysctl("kern.ostype") 29 30 if err != nil || os == "" { 31 return &SystemInfo{}, errors.New("Can't read os info") 32 } 33 34 kernel, err := syscall.Sysctl("kern.osrelease") 35 36 if err != nil || kernel == "" { 37 return &SystemInfo{}, errors.New("Can't read kernel info") 38 } 39 40 arch, err := syscall.Sysctl("kern.version") 41 42 if err != nil || arch == "" { 43 return &SystemInfo{}, errors.New("Can't read arch info") 44 } 45 46 archSlice := strings.Split(arch, "/") 47 48 if len(archSlice) != 2 { 49 return &SystemInfo{}, errors.New("Can't read arch info") 50 } 51 52 return &SystemInfo{ 53 hostname, 54 os, 55 kernel, 56 strings.ToLower(strings.Replace(archSlice[len(archSlice)-1], "RELEASE_", "", -1)), 57 }, nil 58 }