Skip to content

Commit 5b53d75

Browse files
committed
add more command
1 parent 4df063d commit 5b53d75

File tree

3 files changed

+93
-3
lines changed

3 files changed

+93
-3
lines changed

adb/client.go

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"io"
88
"net"
99
"strconv"
10+
"strings"
1011
)
1112

1213
const (
@@ -131,17 +132,58 @@ func (c *Client) Version() (string, error) {
131132
return reader.DecodeString()
132133
}
133134

135+
func (c *Client) Devices() (devs []*ADevice, err error) {
136+
conn, err := net.Dial("tcp", c.Addr)
137+
if err != nil {
138+
return nil, err
139+
}
140+
defer conn.Close()
141+
dconn := DebugProxyConn{
142+
R: bufio.NewReader(conn),
143+
W: conn}
144+
145+
writer := ADBEncoder{dconn}
146+
writer.Encode([]byte("host:devices"))
147+
reader := ADBDecoder{dconn}
148+
if err := reader.respCheck(); err != nil {
149+
return nil, err
150+
}
151+
lines, err := reader.DecodeString()
152+
if err != nil {
153+
return nil, err
154+
}
155+
devs = make([]*ADevice, 0)
156+
for _, line := range strings.Split(lines, "\n") {
157+
parts := strings.SplitN(line, "\t", 2)
158+
if len(parts) != 2 {
159+
continue
160+
}
161+
devs = append(devs, &ADevice{
162+
Serial: parts[0],
163+
Type: parts[1],
164+
})
165+
// devs[parts[0]] = parts[1]
166+
}
167+
return
168+
// regexp.MustCompile(`([\s]+)\t([\w]+)`)
169+
}
170+
134171
func (c *Client) DeviceWithSerial(serial string) *ADevice {
135172
return &ADevice{
136173
client: c,
137-
serial: serial,
174+
Serial: serial,
138175
}
139176
}
140177

141178
// Device
142179
type ADevice struct {
143180
client *Client
144-
serial string
181+
Serial string
182+
Type string
183+
}
184+
185+
func (ad *ADevice) String() string {
186+
return ad.Serial + ":" + ad.Type
145187
}
146188

147189
func (ad *ADevice) OpenShell(cmd string) (rwc io.ReadWriteCloser, err error) {

adb/client_test.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,20 @@ package adb
22

33
import "testing"
44

5+
var client = NewClient("127.0.0.1:5037")
6+
57
func TestVersion(t *testing.T) {
6-
version, err := NewClient("127.0.0.1:5037").Version()
8+
version, err := client.Version()
79
if err != nil {
810
t.Fatal(err)
911
}
1012
t.Log(version)
1113
}
14+
15+
func TestDevices(t *testing.T) {
16+
devs, err := client.Devices()
17+
if err != nil {
18+
t.Fatal(err)
19+
}
20+
t.Log(devs)
21+
}

main.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,44 @@ func main() {
252252
return nil
253253
},
254254
},
255+
{
256+
Name: "app",
257+
Usage: "app view and managerment",
258+
Subcommands: []cli.Command{
259+
{
260+
Name: "list",
261+
Usage: "list app",
262+
Flags: []cli.Flag{
263+
cli.BoolFlag{
264+
Name: "f",
265+
Usage: "see their associated file",
266+
},
267+
cli.BoolFlag{
268+
Name: "s",
269+
Usage: "filter to only show system packages",
270+
},
271+
cli.BoolFlag{
272+
Name: "3",
273+
Usage: "filter to only show third party packages",
274+
},
275+
},
276+
Action: func(ctx *cli.Context) error {
277+
args := []string{"shell", "pm", "list", "packages"}
278+
if ctx.Bool("s") {
279+
args = append(args, "-s")
280+
}
281+
if ctx.Bool("f") {
282+
args = append(args, "-f")
283+
}
284+
if ctx.Bool("3") {
285+
args = append(args, "-3")
286+
}
287+
adbWrap(args...)
288+
return nil
289+
},
290+
},
291+
},
292+
},
255293
{
256294
Name: "screenshot",
257295
Usage: "take screenshot",

0 commit comments

Comments
 (0)