diff --git a/adb/adb.go b/adb/adb.go index 41b831e..d86b9d1 100644 --- a/adb/adb.go +++ b/adb/adb.go @@ -18,12 +18,17 @@ func StartServer() error { return nil } -type Device string +type Device struct { + Id string + Product string + Model string + Device string +} -var deviceRegex = regexp.MustCompile(`^(.+)\tdevice`) +var deviceRegex = regexp.MustCompile(`^([^\s]+)\s+device\s+product:([^\s]+)\s+model:([^\s]+)\s+device:([^\s]+)`) func Devices() ([]Device, error) { - cmd := exec.Command("adb", "devices") + cmd := exec.Command("adb", "devices", "-l") stdout, err := cmd.StdoutPipe() if err != nil { return nil, err @@ -39,8 +44,13 @@ func Devices() ([]Device, error) { if len(m) < 2 { continue } - device := Device(m[1]) - if device == "" { + device := Device{ + Id: m[1], + Product: m[2], + Model: m[3], + Device: m[4], + } + if device.Id == "" { continue } devices = append(devices, device) diff --git a/cmd/fdroidcl/main.go b/cmd/fdroidcl/main.go index 66d0fc1..bfa1c11 100644 --- a/cmd/fdroidcl/main.go +++ b/cmd/fdroidcl/main.go @@ -16,7 +16,7 @@ import ( ) func appMatches(fields []string, terms []string) bool { - fieldLoop: +fieldLoop: for _, field := range fields { for _, term := range terms { if !strings.Contains(field, term) { @@ -132,7 +132,7 @@ func main() { log.Fatalf("Could not list devices: %v", err) } for _, device := range devices { - fmt.Println(device) + fmt.Printf("%s - %s (%s)\n", device.Id, device.Model, device.Product) } default: log.Printf("Unrecognised command '%s'\n\n", cmd)