Browse Source

uninstall: add -user option

related issue: #37
pull/70/head
Linus789 3 years ago
parent
commit
e4bc5eef34
  1. 14
      adb/device.go
  2. 18
      uninstall.go

14
adb/device.go

@ -223,6 +223,20 @@ func (d *Device) Uninstall(pkg string) error {
return errMsg return errMsg
} }
func (d *Device) UninstallUser(pkg, user string) error {
cmd := d.AdbCmd("uninstall", "--user", user, pkg)
output, err := cmd.CombinedOutput()
line := getResultLine(output)
if err == nil && line == "Success" {
return nil
}
errMsg := parseError(getFailureCode(deleteFailureRegex, line))
if err != nil {
return fmt.Errorf("%v: %v", err, errMsg)
}
return errMsg
}
type Package struct { type Package struct {
ID string ID string
VersCode int VersCode int

18
uninstall.go

@ -6,6 +6,7 @@ package main
import ( import (
"errors" "errors"
"fmt" "fmt"
"strconv"
) )
var cmdUninstall = &Command{ var cmdUninstall = &Command{
@ -13,6 +14,10 @@ var cmdUninstall = &Command{
Short: "Uninstall an app", Short: "Uninstall an app",
} }
var (
uninstallUser = cmdUninstall.Fset.String("user", "all", "Uninstall for specified user <USER_ID|current|all>")
)
func init() { func init() {
cmdUninstall.Run = runUninstall cmdUninstall.Run = runUninstall
} }
@ -25,6 +30,13 @@ func runUninstall(args []string) error {
if err != nil { if err != nil {
return err return err
} }
if *uninstallUser == "current" {
uid, err := device.CurrentUserId()
if err != nil {
return err
}
*uninstallUser = strconv.Itoa(uid)
}
inst, err := device.Installed() inst, err := device.Installed()
if err != nil { if err != nil {
return err return err
@ -33,7 +45,11 @@ func runUninstall(args []string) error {
var err error var err error
fmt.Printf("Uninstalling %s\n", id) fmt.Printf("Uninstalling %s\n", id)
if _, installed := inst[id]; installed { if _, installed := inst[id]; installed {
err = device.Uninstall(id) if *uninstallUser == "all" {
err = device.Uninstall(id)
} else {
err = device.UninstallUser(id, *uninstallUser)
}
} else { } else {
err = errors.New("not installed") err = errors.New("not installed")
} }

Loading…
Cancel
Save