mirror of
https://github.com/kidoman/embd
synced 2025-04-18 07:58:29 +02:00
fixed parsing of the raspberry pi's kernel version
This commit is contained in:
parent
02defd2cc0
commit
d0cc5f4e35
@ -30,25 +30,34 @@ func nodeName() (string, error) {
|
|||||||
return execOutput("uname", "-n")
|
return execOutput("uname", "-n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func parseVersion(str string) (major, minor, patch int, err error) {
|
||||||
|
parts := strings.Split(str, ".")
|
||||||
|
len := len(parts)
|
||||||
|
|
||||||
|
if major, err = strconv.Atoi(parts[0]); err != nil {
|
||||||
|
return 0, 0, 0, err
|
||||||
|
}
|
||||||
|
if minor, err = strconv.Atoi(parts[1]); err != nil {
|
||||||
|
return 0, 0, 0, err
|
||||||
|
}
|
||||||
|
if len > 2 {
|
||||||
|
part := parts[2]
|
||||||
|
part = strings.TrimSuffix(part, "+")
|
||||||
|
if patch, err = strconv.Atoi(part); err != nil {
|
||||||
|
return 0, 0, 0, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return major, minor, patch, err
|
||||||
|
}
|
||||||
|
|
||||||
func kernelVersion() (major, minor, patch int, err error) {
|
func kernelVersion() (major, minor, patch int, err error) {
|
||||||
output, err := execOutput("uname", "-r")
|
output, err := execOutput("uname", "-r")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return 0, 0, 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
parts := strings.Split(output, ".")
|
return parseVersion(output)
|
||||||
|
|
||||||
if major, err = strconv.Atoi(parts[0]); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if minor, err = strconv.Atoi(parts[1]); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if patch, err = strconv.Atoi(parts[2]); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Detect() (Host, int, error) {
|
func Detect() (Host, int, error) {
|
||||||
|
37
host/detect_test.go
Normal file
37
host/detect_test.go
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
package host
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func TestKernelVersionParse(t *testing.T) {
|
||||||
|
var tests = []struct {
|
||||||
|
versionStr string
|
||||||
|
major, minor, patch int
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"3.8",
|
||||||
|
3, 8, 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"3.7",
|
||||||
|
3, 7, 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"3.8.2",
|
||||||
|
3, 8, 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"3.8.10+",
|
||||||
|
3, 8, 10,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, test := range tests {
|
||||||
|
major, minor, patch, err := parseVersion(test.versionStr)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Failed parsing %q: %v", test.versionStr, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if major != test.major || minor != test.minor || patch != test.patch {
|
||||||
|
t.Errorf("Parse of %q: got (%v, %v, %v) want (%v, %v, %v)", test.versionStr, major, minor, patch, test.major, test.minor, test.patch)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user