Browse Source

Implement device listing in adb

pull/8/head
Daniel Martí 11 years ago
parent
commit
d180376e07
  1. 30
      adb/adb.go
  2. 10
      cmd/fdroidcl/main.go

30
adb/adb.go

@ -4,7 +4,9 @@
package adb package adb
import ( import (
"bufio"
"os/exec" "os/exec"
"regexp"
) )
func StartServer() error { func StartServer() error {
@ -16,12 +18,32 @@ func StartServer() error {
return nil return nil
} }
func DeviceList() ([]string, error) { type Device string
var deviceRegex = regexp.MustCompile(`^(.+)\tdevice`)
func Devices() ([]Device, error) {
cmd := exec.Command("adb", "devices") cmd := exec.Command("adb", "devices")
stdout, err := cmd.Output() stdout, err := cmd.StdoutPipe()
if err != nil { if err != nil {
return nil, err return nil, err
} }
_ = stdout if err := cmd.Start(); err != nil {
return nil, nil return nil, err
}
var devices []Device
scanner := bufio.NewScanner(stdout)
for scanner.Scan() {
line := scanner.Text()
m := deviceRegex.FindStringSubmatch(line)
if len(m) < 2 {
continue
}
device := Device(m[1])
if device == "" {
continue
}
devices = append(devices, device)
}
return devices, nil
} }

10
cmd/fdroidcl/main.go

@ -12,6 +12,7 @@ import (
"strings" "strings"
"github.com/mvdan/fdroidcl" "github.com/mvdan/fdroidcl"
"github.com/mvdan/fdroidcl/adb"
) )
func appMatches(fields []string, terms []string) bool { func appMatches(fields []string, terms []string) bool {
@ -73,6 +74,7 @@ func init() {
p(" list List all available apps") p(" list List all available apps")
p(" search <term...> Search available apps") p(" search <term...> Search available apps")
p(" show <appid...> Show detailed info of an app") p(" show <appid...> Show detailed info of an app")
p(" devices List connected devices")
} }
} }
@ -124,6 +126,14 @@ func main() {
} }
app.WriteDetailed(os.Stdout) app.WriteDetailed(os.Stdout)
} }
case "devices":
devices, err := adb.Devices()
if err != nil {
log.Fatalf("Could not list devices: %v", err)
}
for _, device := range devices {
fmt.Println(device)
}
default: default:
log.Printf("Unrecognised command '%s'\n\n", cmd) log.Printf("Unrecognised command '%s'\n\n", cmd)
flag.Usage() flag.Usage()

Loading…
Cancel
Save