mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 22:13:36 +08:00

It seems like kern.osrevision is always 199506 since several years and kern.osversion maps to the official documented build id. Example: MacOS 12.5 with ID 21G72
50 lines
1.0 KiB
Go
50 lines
1.0 KiB
Go
package operatingsystem
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/wailsapp/wails/v2/internal/shell"
|
|
)
|
|
|
|
func getSysctlValue(key string) (string, error) {
|
|
stdout, _, err := shell.RunCommand(".", "sysctl", key)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
version := strings.TrimPrefix(stdout, key+": ")
|
|
return strings.TrimSpace(version), nil
|
|
}
|
|
|
|
func platformInfo() (*OS, error) {
|
|
// Default value
|
|
var result OS
|
|
result.ID = "Unknown"
|
|
result.Name = "MacOS"
|
|
result.Version = "Unknown"
|
|
|
|
version, err := getSysctlValue("kern.osproductversion")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.Version = version
|
|
ID, err := getSysctlValue("kern.osversion")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.ID = ID
|
|
|
|
// cmd := CreateCommand(directory, command, args...)
|
|
// var stdo, stde bytes.Buffer
|
|
// cmd.Stdout = &stdo
|
|
// cmd.Stderr = &stde
|
|
// err := cmd.Run()
|
|
// return stdo.String(), stde.String(), err
|
|
// }
|
|
// sysctl := shell.NewCommand("sysctl")
|
|
// kern.ostype: Darwin
|
|
// kern.osrelease: 20.1.0
|
|
// kern.osrevision: 199506
|
|
|
|
return &result, nil
|
|
}
|