diff options
Diffstat (limited to 'apt.go')
| -rw-r--r-- | apt.go | 73 |
1 files changed, 73 insertions, 0 deletions
@@ -0,0 +1,73 @@ +package main + +import ( + "fmt" + + "go.wit.com/lib/protobuf/zoopb" + "go.wit.com/log" +) + +// init the installed package list +func initPackages() { + // Get the list of installed packages for the detected distro + newP, err := getPackageList(me.distro) + if err != nil { + fmt.Println("Error:", err) + return + } + + // Print the installed packages and their versions + for pkg, version := range newP { + new1 := new(zoopb.Package) + new1.Name = pkg + new1.Version = version + if me.packages.Append(new1) { + // log.Info("added", new1.Name, "ok") + } else { + log.Info("added", new1.Name, "failed") + } + } + + log.Info(me.hostname, "has distro", me.distro, "with", me.packages.Len(), "packages installed") +} + +func addNew(name string, version string) bool { + new1 := new(zoopb.Package) + new1.Name = name + new1.Version = version + return me.packages.Append(new1) +} + +func updatePackages() { + // Get the list of installed packages for the detected distro + newP, err := getPackageList(me.distro) + if err != nil { + fmt.Println("Error:", err) + return + } + + var newCounter, changeCounter int + // Print the installed packages and their versions + for pkg, version := range newP { + found := me.packages.FindByName(pkg) + if found == nil { + log.Info("adding new", pkg, version) + addNew(pkg, version) + newCounter += 1 + } else { + found.Version = version + if me.packages.Update(found) { + changeCounter += 1 + } + } + } + + footer := fmt.Sprintf("%s has distro %s with %d packages installed",me.hostname, me.distro, me.packages.Len()) + if changeCounter != 0 { + footer += fmt.Sprintf(" (%d changed)", changeCounter) + } + if newCounter != 0 { + footer += fmt.Sprintf(" (%d new)", newCounter) + } + log.Info(footer) +} |
