Browse Source

Replace pm with dumpsys for querying installed packages

pm doesn't offer nearly as much info
pull/8/head
Daniel Martí 11 years ago
parent
commit
2666a4f7af
  1. 22
      adb/adb.go
  2. 8
      cmd/fdroidcl/search.go

22
adb/adb.go

@ -112,10 +112,17 @@ func (d Device) Uninstall(pkg string) error {
return nil
}
var packageRegex = regexp.MustCompile(`^package:([^\s]+)`)
type Package struct {
ID string
VName string
VCode int
func (d Device) Installed() ([]string, error) {
cmd := d.AdbShell("pm", "list", "packages")
}
var packageRegex = regexp.MustCompile(`Package \[([^\s]+)\]`)
func (d Device) Installed() ([]Package, error) {
cmd := d.AdbShell("dumpsys", "package", "packages")
stdout, err := cmd.StdoutPipe()
if err != nil {
return nil, err
@ -123,7 +130,7 @@ func (d Device) Installed() ([]string, error) {
if err := cmd.Start(); err != nil {
return nil, err
}
var ids []string
var packages []Package
scanner := bufio.NewScanner(stdout)
for scanner.Scan() {
line := scanner.Text()
@ -131,7 +138,10 @@ func (d Device) Installed() ([]string, error) {
if m == nil {
continue
}
ids = append(ids, m[1])
p := Package{
ID: m[1],
}
packages = append(packages, p)
}
return ids, nil
return packages, nil
}

8
cmd/fdroidcl/search.go

@ -96,7 +96,7 @@ func printApp(app fdroidcl.App, IDLen int) {
fmt.Printf(" %s\n", app.Summary)
}
func mustInstalled(device adb.Device) []string {
func mustInstalled(device adb.Device) []adb.Package {
installed, err := device.Installed()
if err != nil {
log.Fatalf("Could not get installed packages: %v", err)
@ -104,10 +104,10 @@ func mustInstalled(device adb.Device) []string {
return installed
}
func filterAppsInstalled(apps []fdroidcl.App, installed []string) []fdroidcl.App {
func filterAppsInstalled(apps []fdroidcl.App, installed []adb.Package) []fdroidcl.App {
instMap := make(map[string]struct{}, len(installed))
for _, id := range installed {
instMap[id] = struct{}{}
for _, p := range installed {
instMap[p.ID] = struct{}{}
}
var result []fdroidcl.App
for _, app := range apps {

Loading…
Cancel
Save