diff --git a/cmd/fdroidcl/install.go b/cmd/fdroidcl/install.go index e945d07..d56597c 100644 --- a/cmd/fdroidcl/install.go +++ b/cmd/fdroidcl/install.go @@ -32,10 +32,10 @@ func runInstall(args []string) { log.Fatalf("%s is already installed", app.ID) } } - downloadAndInstall(apps, device) + downloadAndDo(apps, device, installApk) } -func downloadAndInstall(apps []*fdroidcl.App, device *adb.Device) { +func downloadAndDo(apps []*fdroidcl.App, device *adb.Device, doApk func(*adb.Device, *fdroidcl.Apk, string)) { type downloaded struct { apk *fdroidcl.Apk path string @@ -50,7 +50,7 @@ func downloadAndInstall(apps []*fdroidcl.App, device *adb.Device) { toInstall[i] = downloaded{apk: apk, path: path} } for _, t := range toInstall { - installApk(device, t.apk, t.path) + doApk(device, t.apk, t.path) } } @@ -62,3 +62,12 @@ func installApk(device *adb.Device, apk *fdroidcl.Apk, path string) { } fmt.Println("done") } + +func upgradeApk(device *adb.Device, apk *fdroidcl.Apk, path string) { + fmt.Printf("Upgrading %s... ", apk.App.ID) + if err := device.Upgrade(path); err != nil { + fmt.Println() + log.Fatalf("Could not upgrade %s: %v", apk.App.ID, err) + } + fmt.Println("done") +} diff --git a/cmd/fdroidcl/upgrade.go b/cmd/fdroidcl/upgrade.go index c965009..334bc7d 100644 --- a/cmd/fdroidcl/upgrade.go +++ b/cmd/fdroidcl/upgrade.go @@ -24,10 +24,13 @@ func runUpgrade(args []string) { apps := findApps(args) inst := mustInstalled(device) for _, app := range apps { - _, e := inst[app.ID] + p, e := inst[app.ID] if !e { log.Fatalf("%s is not installed", app.ID) } + if p.VCode >= app.CVCode { + log.Fatalf("%s is up to date", app.ID) + } } - downloadAndInstall(apps, device) + downloadAndDo(apps, device, upgradeApk) }