flash: fix getDefaultPort() fails on Windows locales such as Japan

Этот коммит содержится в:
sago35 2020-05-07 09:08:56 +09:00 коммит произвёл Ayke
родитель 904fa852f6
коммит 8ce3cfad40

21
main.go
Просмотреть файл

@ -603,29 +603,18 @@ func getDefaultPort() (port string, err error) {
case "freebsd": case "freebsd":
portPath = "/dev/cuaU*" portPath = "/dev/cuaU*"
case "windows": case "windows":
cmd := exec.Command("wmic", ports, err := serial.GetPortsList()
"PATH", "Win32_SerialPort", "WHERE", "Caption LIKE 'USB Serial%'", "GET", "DeviceID")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil { if err != nil {
return "", err return "", err
} }
if out.String() == "No Instance(s) Available." { if len(ports) == 0 {
return "", errors.New("no serial ports available") return "", errors.New("no serial ports available")
} else if len(ports) > 1 {
return "", errors.New("multiple serial ports available - use -port flag")
} }
for _, line := range strings.Split(out.String(), "\n") { return ports[0], nil
words := strings.Fields(line)
if len(words) == 1 {
if strings.Contains(words[0], "COM") {
return words[0], nil
}
}
}
return "", errors.New("unable to locate a serial port")
default: default:
return "", errors.New("unable to search for a default USB device to be flashed on this OS") return "", errors.New("unable to search for a default USB device to be flashed on this OS")
} }