Browse Source

Implement uninstall

pull/8/head
Daniel Martí 11 years ago
parent
commit
76a985a9df
  1. 10
      README.md
  2. 33
      adb/adb.go
  3. 1
      cmd/fdroidcl/main.go
  4. 27
      cmd/fdroidcl/uninstall.go

10
README.md

@ -9,16 +9,16 @@ devices via [ADB](https://developer.android.com/tools/help/adb.html).
### Commands
update Update the index
search <regexp...> Search available apps
show <appid...> Show detailed info about an app
devices List connected devices
update Update the index
search <regexp...> Search available apps
show <appid...> Show detailed info about an app
devices List connected devices
uninstall <appid...> Uninstall an app
### Missing commands
install <appid...> Install an app
upgrade <appid...> Upgrade an app
remove <appid...> Remove an app
### Missing features

33
adb/adb.go

@ -5,7 +5,9 @@ package adb
import (
"bufio"
"errors"
"fmt"
"io"
"net"
"os/exec"
"regexp"
@ -17,6 +19,11 @@ const (
port = 5037
)
var (
ErrInternalError = errors.New("internal error")
ErrUnknown = errors.New("unknown error")
)
func IsServerRunning() bool {
conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", "127.0.0.1", port))
if err != nil {
@ -32,7 +39,7 @@ func StartServer() error {
if err != nil {
return err
}
return nil
return cmd.Wait()
}
type Device struct {
@ -102,15 +109,35 @@ func (d *Device) Install(path string) error {
if err := cmd.Start(); err != nil {
return err
}
return nil
return cmd.Wait()
}
func getLine(out io.ReadCloser) string {
scanner := bufio.NewScanner(out)
if !scanner.Scan() {
return ""
}
return scanner.Text()
}
func (d *Device) Uninstall(pkg string) error {
cmd := d.AdbCmd("uninstall", pkg)
stdout, err := cmd.StdoutPipe()
if err != nil {
return err
}
if err := cmd.Start(); err != nil {
return err
}
return nil
line := getLine(stdout)
if line == "Success" {
return nil
}
switch line {
case "Failure [DELETE_FAILED_INTERNAL_ERROR]":
return ErrInternalError
}
return ErrUnknown
}
type Package struct {

1
cmd/fdroidcl/main.go

@ -81,6 +81,7 @@ var commands = []*Command{
cmdSearch,
cmdShow,
cmdDevices,
cmdUninstall,
}
func main() {

27
cmd/fdroidcl/uninstall.go

@ -0,0 +1,27 @@
/* Copyright (c) 2015, Daniel Martí <mvdan@mvdan.cc> */
/* See LICENSE for licensing information */
package main
import "log"
var cmdUninstall = &Command{
UsageLine: "uninstall <appid...>",
Short: "Uninstall an app",
}
func init() {
cmdUninstall.Run = runUninstall
}
func runUninstall(args []string) {
if len(args) < 1 {
log.Fatalf("No package names given")
}
device := mustOneDevice()
for _, id := range args {
if err := device.Uninstall(id); err != nil {
log.Fatalf("Could not uninstall '%s': %v", id, err)
}
}
}
Loading…
Cancel
Save