creators.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package device
  2. import (
  3. "os/exec"
  4. "strings"
  5. "notabug.org/Umnik/GoAndroidSDK/common/utils"
  6. )
  7. //ConnectedDevices returns available Device as array
  8. func ConnectedDevices(adbPath string) []Device {
  9. data, err := exec.Command(adbPath, "devices", "-l").CombinedOutput()
  10. if err != nil {
  11. panic(err)
  12. }
  13. start := false
  14. devices := make([]Device, 0)
  15. for _, rawLine := range strings.Split(string(data), "\n") {
  16. switch start {
  17. case true:
  18. rawLine = strings.TrimSpace(rawLine)
  19. if len(rawLine) > 0 {
  20. device := Device{}
  21. parts := make([]string, 0)
  22. for _, part := range strings.Split(rawLine, " ") {
  23. part = strings.TrimSpace(part)
  24. if len(part) > 3 {
  25. parts = append(parts, part)
  26. }
  27. }
  28. device.Serial = parts[0]
  29. device.DeviceType = parts[1]
  30. for _, part := range parts {
  31. switch {
  32. case strings.HasPrefix(part, "usb:"):
  33. device.USB = utils.TwoSpotValue(part)
  34. case strings.HasPrefix(part, "product:"):
  35. device.Product = utils.TwoSpotValue(part)
  36. case strings.HasPrefix(part, "model:"):
  37. device.Model = utils.TwoSpotValue(part)
  38. case strings.HasPrefix(part, "device:"):
  39. device.Device = utils.TwoSpotValue(part)
  40. case strings.HasPrefix(part, "transport_id:"):
  41. device.TransportID = utils.TwoSpotValue(part)
  42. }
  43. }
  44. devices = append(devices, device)
  45. }
  46. case false:
  47. if strings.HasPrefix(rawLine, "List of") {
  48. start = true
  49. }
  50. }
  51. }
  52. return devices
  53. }