5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-04 09:21:44 +08:00
wails/v3/internal/operatingsystem/os_darwin.go
Ian VanSchooten 69917c2f50
[V3] Add MacOS 15 "Sequoia" to OSInfo.Branding (#4065)
* Add MacOS 15 to names list

* Update changelog

* Listening to the rabbit
2025-02-14 08:40:29 +11:00

73 lines
1.4 KiB
Go

//go:build darwin
package operatingsystem
import (
"os/exec"
"strings"
)
var macOSNames = map[string]string{
"10.10": "Yosemite",
"10.11": "El Capitan",
"10.12": "Sierra",
"10.13": "High Sierra",
"10.14": "Mojave",
"10.15": "Catalina",
"11": "Big Sur",
"12": "Monterey",
"13": "Ventura",
"14": "Sonoma",
"15": "Sequoia",
// Add newer versions as they are released...
}
func getOSName(version string) string {
trimmedVersion := version
if !strings.HasPrefix(version, "10.") {
trimmedVersion = strings.SplitN(version, ".", 2)[0]
}
name, ok := macOSNames[trimmedVersion]
if ok {
return name
}
return "MacOS " + version
}
func getSysctlValue(key string) (string, error) {
// Run "sysctl" command
command := exec.Command("sysctl", key)
// Capture stdout
var stdout strings.Builder
command.Stdout = &stdout
// Run command
err := command.Run()
if err != nil {
return "", err
}
version := strings.TrimPrefix(stdout.String(), 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
result.Branding = getOSName(result.Version)
return &result, nil
}