summaryrefslogtreecommitdiff
path: root/apt.go
diff options
context:
space:
mode:
Diffstat (limited to 'apt.go')
-rw-r--r--apt.go73
1 files changed, 73 insertions, 0 deletions
diff --git a/apt.go b/apt.go
new file mode 100644
index 0000000..ddab8e4
--- /dev/null
+++ b/apt.go
@@ -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)
+}