From bea0a6a2730dfc3f085dccbb1373a52df5dcb3fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=99=E6=B3=93=E9=93=AE?= Date: Mon, 18 Mar 2024 15:07:47 +0800 Subject: [PATCH] fix: adb device parse attributes error --- hrp/cmd/adb/devices.go | 6 +++++- hrp/pkg/gadb/device.go | 42 ++++++++++++++++++++++++++++++++---------- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/hrp/cmd/adb/devices.go b/hrp/cmd/adb/devices.go index 6640a45e..7aef4d18 100644 --- a/hrp/cmd/adb/devices.go +++ b/hrp/cmd/adb/devices.go @@ -41,7 +41,11 @@ var listAndroidDevicesCmd = &cobra.Command{ if isDetail { fmt.Println(format(d.DeviceInfo())) } else { - fmt.Println(d.Serial(), d.Usb()) + if usb, err := d.Usb(); err != nil { + fmt.Println(d.Serial()) + } else { + fmt.Println(d.Serial(), usb) + } } } return nil diff --git a/hrp/pkg/gadb/device.go b/hrp/pkg/gadb/device.go index 8b9705b6..c9f61602 100644 --- a/hrp/pkg/gadb/device.go +++ b/hrp/pkg/gadb/device.go @@ -107,20 +107,37 @@ func (d *Device) features() (features Features, err error) { return features, nil } -func (d *Device) Product() string { - return d.attrs["product"] +func (d Device) HasAttribute(key string) bool { + _, ok := d.attrs[key] + return ok } -func (d *Device) Model() string { - return d.attrs["model"] +func (d Device) Product() (string, error) { + if d.HasAttribute("product") { + return d.attrs["product"], nil + } + return "", errors.New("does not have attribute: product") } -func (d *Device) Usb() string { - return d.attrs["usb"] +func (d Device) Model() (string, error) { + if d.HasAttribute("model") { + return d.attrs["model"], nil + } + return "", errors.New("does not have attribute: model") } -func (d *Device) transportId() string { - return d.attrs["transport_id"] +func (d *Device) Usb() (string, error) { + if d.HasAttribute("usb") { + return d.attrs["usb"], nil + } + return "", errors.New("does not have attribute: usb") +} + +func (d Device) transportId() (string, error) { + if d.HasAttribute("transport_id") { + return d.attrs["transport_id"], nil + } + return "", errors.New("does not have attribute: transport_id") } func (d *Device) DeviceInfo() map[string]string { @@ -132,8 +149,13 @@ func (d *Device) Serial() string { return d.serial } -func (d *Device) IsUsb() bool { - return d.Usb() != "" +func (d *Device) IsUsb() (bool, error) { + usb, err := d.Usb() + if err != nil { + return false, err + } + + return usb != "", nil } func (d *Device) State() (DeviceState, error) {