mirror of
https://wget.la/https://github.com/leookun/cursor-byok
synced 2026-08-18 03:57:06 +08:00
65 lines
1.2 KiB
Go
65 lines
1.2 KiB
Go
package ads
|
|
|
|
import (
|
|
"os"
|
|
"os/exec"
|
|
"runtime"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
func displayOSName() string {
|
|
switch runtime.GOOS {
|
|
case "darwin":
|
|
return "macOS"
|
|
case "linux":
|
|
return "Linux"
|
|
default:
|
|
return "Windows"
|
|
}
|
|
}
|
|
|
|
func displayOSVersion() string {
|
|
switch runtime.GOOS {
|
|
case "darwin":
|
|
return commandOutput(2*time.Second, "sw_vers", "-productVersion")
|
|
case "linux":
|
|
if version := linuxPrettyName(); version != "" {
|
|
return version
|
|
}
|
|
return commandOutput(2*time.Second, "uname", "-r")
|
|
default:
|
|
return ""
|
|
}
|
|
}
|
|
|
|
func commandOutput(timeout time.Duration, name string, args ...string) string {
|
|
cmd := exec.Command(name, args...)
|
|
timer := time.AfterFunc(timeout, func() {
|
|
if cmd.Process != nil {
|
|
_ = cmd.Process.Kill()
|
|
}
|
|
})
|
|
defer timer.Stop()
|
|
output, err := cmd.Output()
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
return strings.TrimSpace(string(output))
|
|
}
|
|
|
|
func linuxPrettyName() string {
|
|
data, err := os.ReadFile("/etc/os-release")
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
for _, line := range strings.Split(string(data), "\n") {
|
|
key, value, ok := strings.Cut(line, "=")
|
|
if !ok || strings.TrimSpace(key) != "PRETTY_NAME" {
|
|
continue
|
|
}
|
|
return strings.Trim(strings.TrimSpace(value), `"`)
|
|
}
|
|
return ""
|
|
}
|