docs/libmachine/crashreport/os_windows.go

48 lines
991 B
Go

package crashreport
import (
"os/exec"
"strings"
)
func localOSVersion() string {
command := exec.Command("ver")
output, err := command.Output()
if err == nil {
return parseVerOutput(string(output))
}
command = exec.Command("systeminfo")
output, err = command.Output()
if err == nil {
return parseSystemInfoOutput(string(output))
}
return ""
}
func parseSystemInfoOutput(output string) string {
lines := strings.Split(string(output), "\n")
for _, line := range lines {
if strings.HasPrefix(line, "OS Version:") {
return strings.TrimSpace(line[len("OS Version:"):])
}
}
// If we couldn't find the version, maybe the output is not in english
// Let's parse the fourth line since it seems to be the one always used
// for the version.
if len(lines) >= 4 {
parts := strings.Split(lines[3], ":")
if len(parts) == 2 {
return strings.TrimSpace(parts[1])
}
}
return ""
}
func parseVerOutput(output string) string {
return strings.TrimSpace(output)
}