42 lines
914 B
Go
42 lines
914 B
Go
//go:build !windows
|
|
|
|
package backend
|
|
|
|
import (
|
|
"fmt"
|
|
"os/exec"
|
|
"runtime"
|
|
"strings"
|
|
)
|
|
|
|
func GetOSInfo() (string, error) {
|
|
osType := runtime.GOOS
|
|
arch := runtime.GOARCH
|
|
|
|
switch osType {
|
|
case "darwin":
|
|
out, err := exec.Command("sw_vers", "-productVersion").Output()
|
|
if err != nil {
|
|
return fmt.Sprintf("macOS %s", arch), nil
|
|
}
|
|
version := strings.TrimSpace(string(out))
|
|
return fmt.Sprintf("macOS %s (%s)", version, arch), nil
|
|
|
|
case "linux":
|
|
out, err := exec.Command("cat", "/etc/os-release").Output()
|
|
if err == nil {
|
|
lines := strings.Split(string(out), "\n")
|
|
for _, line := range lines {
|
|
if strings.HasPrefix(line, "PRETTY_NAME=") {
|
|
name := strings.Trim(strings.TrimPrefix(line, "PRETTY_NAME="), "\"")
|
|
return fmt.Sprintf("%s (%s)", name, arch), nil
|
|
}
|
|
}
|
|
}
|
|
return fmt.Sprintf("Linux %s", arch), nil
|
|
|
|
default:
|
|
return fmt.Sprintf("%s %s", osType, arch), nil
|
|
}
|
|
}
|