30 lines
609 B
Go
30 lines
609 B
Go
//go:build unix
|
|
// +build unix
|
|
|
|
package util
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
"runtime"
|
|
"strings"
|
|
)
|
|
|
|
func OSVersion() (string, error) {
|
|
switch osName := runtime.GOOS; osName {
|
|
case "linux":
|
|
// Implemented just in case for future. Guess if it will ever be needed
|
|
// then a kernel version will be used to compare against.
|
|
osRelease, err := os.ReadFile("/proc/sys/kernel/osrelease")
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
kVer := strings.Split(string(osRelease), "-")
|
|
if len(kVer) >= 1 {
|
|
return kVer[0], nil
|
|
}
|
|
return "", errors.New("malformed osrelease")
|
|
}
|
|
return "", errors.New("unknown OS")
|
|
}
|